StructualDesignOfClientSide - wys48/playing_card GitHub Wiki

MovableObject

Interfaces

interface MovableObject {
  event onTouchStart;
  event onHold;
  event onTouchMove;
  event onTouchEnd;
};

Events

onTouchStart

  1. サーバにロックと最前面移動を通知し、許可の返答があればドラッグ操作の開始待ちを開始する。 (タッチのみではドラッグを開始せず、一定量だけ動いたらドラッグ操作を開始する)

onHold

  1. カードのロックが取得出来ている場合、カード操作メニュー(子Scene)に遷移する。

onTouchMove

  • ドラッグ操作開始待ち状態 ** onTouchStartでの座標から一定量以上動いたらドラッグ操作中状態に遷移する。
  1. ドラッグ操作中状態
  2. カードの表示座標を一時的に現在のドラッグ先座標に変更する。

onTouchEnd

  • ドラッグ操作開始待ち状態 ** サーバにロックの解除を通知する。
  • ドラッグ操作中状態 ** 現在のドラッグ先座標に存在する、最も手前側のDropTargetに対してdrop()通知を行う。dropを拒否された場合、ひとつ奥にあるDropTargetに対してdrop()通知を行う。dropを許可されるまで繰り返す。なお、DropTargetが存在しない、またはすべてからdropを拒否された場合、onTouchStart時点の座標に戻す。 ** サーバにロックの解除を通知する。

DropTarget

Interface

interface DropTarget {
  boolean drop(object, position);
};

Card

カードを表現するクラス

Interface

interface Card : MovableObject, enchant.Sprite {
  function initialize(kind, isOpened, area, position);
  function open();
  function close();
  boolean  isOpened();
  function setArea(newArea);
  CardArea getArea();
  event onDoubleTap;
};

Attributes

Methods

initialize()

インスタンスを初期化する。

Param Type Description
kind CardKind ある1種類のカードの情報を格納したDictionary
isOpened boolean 向きの初期状態(falseが裏)
area CardArea カードの所属エリア
position Coord 所属エリア内での相対座標

open()

表向きにする。

close()

裏向きにする。

isOpened()

表向きになっているかどうかを返す。

setArea()

所属エリアを設定する。

Param Type Description
newArea CardArea 新しい所属エリア

getArea()

現在の所属エリアを返す。

Events

onDoubleTap

CardArea

カードを置く領域を表すクラス。

Interfaces

interface CardArea : DropTarget {
  attribute Coord   view_position;
  attribute boolean view_isVisible;
  attribute Size    size;
  attribute boolean isShared;
  attribute Player  owner;
  attribute boolean isHidden;
  attribute Card    cards[];
};

Attributes

view_position

エリアの表示場所(スクリーン座標系)

view_isVisible

エリアが現在のクライアント上で表示されているか否か。

size

エリアの表示サイズ(スクリーン座標系)

isShared

エリア上のカードが全員に開示されているか否か。

owner

エリアの所有者(ただし場を表すエリアの場合はnull)

isHidden

所有者以外に対してエリアの表示を禁止しているか否か。

cards

所属しているカードの配列

CardPile

カードの束(山)を表現するクラス。

Interfaces

interface CardPile : MovableObject, DropTarget {
  attribute Card cards[];
  function initialize(cards, area, position);
  function shuffle();
  function open();
  function close();
  function reverse();
  function 
};

Methods

initialize()

インスタンスを初期化する。

Param Type Description
cards Array of cards 所属するカードの配列
area CardArea カードの所属エリア
position Coord 所属エリア内での相対座標

shuffle()

所属するカードをランダムに並び替える(向きは変えない)。

open()

所属するカードをすべて表向きにする。

close()

所属するカードをすべて裏向きにする。

reverse()

山をひっくり返す。つまり、所属するカードの表裏はすべて反転し、カードの並び順も逆順にする。

deal()

山のカードを配る。枚数などは別途設定画面を表示する。

spread()

山のカードを、その山の置いてあるエリア上に広げる。