StructualDesignOfClientSide - wys48/playing_card GitHub Wiki
MovableObject
Interfaces
interface MovableObject {
event onTouchStart;
event onHold;
event onTouchMove;
event onTouchEnd;
};
Events
onTouchStart
- サーバにロックと最前面移動を通知し、許可の返答があればドラッグ操作の開始待ちを開始する。 (タッチのみではドラッグを開始せず、一定量だけ動いたらドラッグ操作を開始する)
onHold
- カードのロックが取得出来ている場合、カード操作メニュー(子Scene)に遷移する。
onTouchMove
- ドラッグ操作開始待ち状態 ** onTouchStartでの座標から一定量以上動いたらドラッグ操作中状態に遷移する。
- ドラッグ操作中状態
- カードの表示座標を一時的に現在のドラッグ先座標に変更する。
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()
山のカードを、その山の置いてあるエリア上に広げる。