mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-15 03:28:49 -07:00
optionally destroy tokens on zone change; added multi arrows; card menu changes; arrow fixes; initial commit for attachCard code
This commit is contained in:
parent
9a44413e16
commit
cbf201ed9b
23 changed files with 504 additions and 247 deletions
|
|
@ -39,7 +39,7 @@ ServerInfo_CardCounter::ServerInfo_CardCounter(int _id, int _value)
|
|||
insertItem(new SerializableItem_Int("value", _value));
|
||||
}
|
||||
|
||||
ServerInfo_Card::ServerInfo_Card(int _id, const QString &_name, int _x, int _y, bool _tapped, bool _attacking, const QString &_color, const QString &_pt, const QString &_annotation, const QList<ServerInfo_CardCounter *> &_counters)
|
||||
ServerInfo_Card::ServerInfo_Card(int _id, const QString &_name, int _x, int _y, bool _tapped, bool _attacking, const QString &_color, const QString &_pt, const QString &_annotation, bool _destroyOnZoneChange, const QList<ServerInfo_CardCounter *> &_counters)
|
||||
: SerializableItem_Map("card")
|
||||
{
|
||||
insertItem(new SerializableItem_Int("id", _id));
|
||||
|
|
@ -51,6 +51,7 @@ ServerInfo_Card::ServerInfo_Card(int _id, const QString &_name, int _x, int _y,
|
|||
insertItem(new SerializableItem_String("color", _color));
|
||||
insertItem(new SerializableItem_String("pt", _pt));
|
||||
insertItem(new SerializableItem_String("annotation", _annotation));
|
||||
insertItem(new SerializableItem_Bool("destroy_on_zone_change", _destroyOnZoneChange));
|
||||
|
||||
for (int i = 0; i < _counters.size(); ++i)
|
||||
itemList.append(_counters[i]);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public:
|
|||
|
||||
class ServerInfo_Card : public SerializableItem_Map {
|
||||
public:
|
||||
ServerInfo_Card(int _id = -1, const QString &_name = QString(), int _x = -1, int _y = -1, bool _tapped = false, bool _attacking = false, const QString &_color = QString(), const QString &_pt = QString(), const QString &_annotation = QString(), const QList<ServerInfo_CardCounter *> &_counterList = QList<ServerInfo_CardCounter *>());
|
||||
ServerInfo_Card(int _id = -1, const QString &_name = QString(), int _x = -1, int _y = -1, bool _tapped = false, bool _attacking = false, const QString &_color = QString(), const QString &_pt = QString(), const QString &_annotation = QString(), bool _destroyOnZoneChange = false, const QList<ServerInfo_CardCounter *> &_counterList = QList<ServerInfo_CardCounter *>());
|
||||
static SerializableItem *newItem() { return new ServerInfo_Card; }
|
||||
int getId() const { return static_cast<SerializableItem_Int *>(itemMap.value("id"))->getData(); }
|
||||
QString getName() const { return static_cast<SerializableItem_String *>(itemMap.value("name"))->getData(); }
|
||||
|
|
@ -73,6 +73,7 @@ public:
|
|||
QString getColor() const { return static_cast<SerializableItem_String *>(itemMap.value("color"))->getData(); }
|
||||
QString getPT() const { return static_cast<SerializableItem_String *>(itemMap.value("pt"))->getData(); }
|
||||
QString getAnnotation() const { return static_cast<SerializableItem_String *>(itemMap.value("annotation"))->getData(); }
|
||||
bool getDestroyOnZoneChange() const { return static_cast<SerializableItem_Bool *>(itemMap.value("destroy_on_zone_change"))->getData(); }
|
||||
QList<ServerInfo_CardCounter *> getCounters() const { return typecastItemList<ServerInfo_CardCounter *>(); }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -20,45 +20,48 @@ ItemId_Command_Mulligan = 1018,
|
|||
ItemId_Command_RollDie = 1019,
|
||||
ItemId_Command_DrawCards = 1020,
|
||||
ItemId_Command_MoveCard = 1021,
|
||||
ItemId_Command_CreateToken = 1022,
|
||||
ItemId_Command_CreateArrow = 1023,
|
||||
ItemId_Command_DeleteArrow = 1024,
|
||||
ItemId_Command_SetCardAttr = 1025,
|
||||
ItemId_Command_SetCardCounter = 1026,
|
||||
ItemId_Command_IncCardCounter = 1027,
|
||||
ItemId_Command_ReadyStart = 1028,
|
||||
ItemId_Command_Concede = 1029,
|
||||
ItemId_Command_IncCounter = 1030,
|
||||
ItemId_Command_CreateCounter = 1031,
|
||||
ItemId_Command_SetCounter = 1032,
|
||||
ItemId_Command_DelCounter = 1033,
|
||||
ItemId_Command_NextTurn = 1034,
|
||||
ItemId_Command_SetActivePhase = 1035,
|
||||
ItemId_Command_DumpZone = 1036,
|
||||
ItemId_Command_StopDumpZone = 1037,
|
||||
ItemId_Event_Say = 1038,
|
||||
ItemId_Event_Leave = 1039,
|
||||
ItemId_Event_GameClosed = 1040,
|
||||
ItemId_Event_Shuffle = 1041,
|
||||
ItemId_Event_RollDie = 1042,
|
||||
ItemId_Event_MoveCard = 1043,
|
||||
ItemId_Event_CreateToken = 1044,
|
||||
ItemId_Event_DeleteArrow = 1045,
|
||||
ItemId_Event_SetCardAttr = 1046,
|
||||
ItemId_Event_SetCardCounter = 1047,
|
||||
ItemId_Event_SetCounter = 1048,
|
||||
ItemId_Event_DelCounter = 1049,
|
||||
ItemId_Event_SetActivePlayer = 1050,
|
||||
ItemId_Event_SetActivePhase = 1051,
|
||||
ItemId_Event_DumpZone = 1052,
|
||||
ItemId_Event_StopDumpZone = 1053,
|
||||
ItemId_Event_ServerMessage = 1054,
|
||||
ItemId_Event_GameJoined = 1055,
|
||||
ItemId_Event_ChatJoinChannel = 1056,
|
||||
ItemId_Event_ChatLeaveChannel = 1057,
|
||||
ItemId_Event_ChatSay = 1058,
|
||||
ItemId_Context_ReadyStart = 1059,
|
||||
ItemId_Context_Concede = 1060,
|
||||
ItemId_Context_DeckSelect = 1061,
|
||||
ItemId_Other = 1062
|
||||
ItemId_Command_AttachCard = 1022,
|
||||
ItemId_Command_CreateToken = 1023,
|
||||
ItemId_Command_CreateArrow = 1024,
|
||||
ItemId_Command_DeleteArrow = 1025,
|
||||
ItemId_Command_SetCardAttr = 1026,
|
||||
ItemId_Command_SetCardCounter = 1027,
|
||||
ItemId_Command_IncCardCounter = 1028,
|
||||
ItemId_Command_ReadyStart = 1029,
|
||||
ItemId_Command_Concede = 1030,
|
||||
ItemId_Command_IncCounter = 1031,
|
||||
ItemId_Command_CreateCounter = 1032,
|
||||
ItemId_Command_SetCounter = 1033,
|
||||
ItemId_Command_DelCounter = 1034,
|
||||
ItemId_Command_NextTurn = 1035,
|
||||
ItemId_Command_SetActivePhase = 1036,
|
||||
ItemId_Command_DumpZone = 1037,
|
||||
ItemId_Command_StopDumpZone = 1038,
|
||||
ItemId_Event_Say = 1039,
|
||||
ItemId_Event_Leave = 1040,
|
||||
ItemId_Event_GameClosed = 1041,
|
||||
ItemId_Event_Shuffle = 1042,
|
||||
ItemId_Event_RollDie = 1043,
|
||||
ItemId_Event_MoveCard = 1044,
|
||||
ItemId_Event_DestroyCard = 1045,
|
||||
ItemId_Event_AttachCard = 1046,
|
||||
ItemId_Event_CreateToken = 1047,
|
||||
ItemId_Event_DeleteArrow = 1048,
|
||||
ItemId_Event_SetCardAttr = 1049,
|
||||
ItemId_Event_SetCardCounter = 1050,
|
||||
ItemId_Event_SetCounter = 1051,
|
||||
ItemId_Event_DelCounter = 1052,
|
||||
ItemId_Event_SetActivePlayer = 1053,
|
||||
ItemId_Event_SetActivePhase = 1054,
|
||||
ItemId_Event_DumpZone = 1055,
|
||||
ItemId_Event_StopDumpZone = 1056,
|
||||
ItemId_Event_ServerMessage = 1057,
|
||||
ItemId_Event_GameJoined = 1058,
|
||||
ItemId_Event_ChatJoinChannel = 1059,
|
||||
ItemId_Event_ChatLeaveChannel = 1060,
|
||||
ItemId_Event_ChatSay = 1061,
|
||||
ItemId_Context_ReadyStart = 1062,
|
||||
ItemId_Context_Concede = 1063,
|
||||
ItemId_Context_DeckSelect = 1064,
|
||||
ItemId_Other = 1065
|
||||
};
|
||||
|
|
|
|||
|
|
@ -114,7 +114,16 @@ Command_MoveCard::Command_MoveCard(int _gameId, const QString &_startZone, int _
|
|||
insertItem(new SerializableItem_Bool("face_down", _faceDown));
|
||||
insertItem(new SerializableItem_Bool("tapped", _tapped));
|
||||
}
|
||||
Command_CreateToken::Command_CreateToken(int _gameId, const QString &_zone, const QString &_cardName, const QString &_color, const QString &_pt, const QString &_annotation, int _x, int _y)
|
||||
Command_AttachCard::Command_AttachCard(int _gameId, const QString &_startZone, int _cardId, int _targetPlayerId, const QString &_targetZone, int _targetCardId)
|
||||
: GameCommand("attach_card", _gameId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("start_zone", _startZone));
|
||||
insertItem(new SerializableItem_Int("card_id", _cardId));
|
||||
insertItem(new SerializableItem_Int("target_player_id", _targetPlayerId));
|
||||
insertItem(new SerializableItem_String("target_zone", _targetZone));
|
||||
insertItem(new SerializableItem_Int("target_card_id", _targetCardId));
|
||||
}
|
||||
Command_CreateToken::Command_CreateToken(int _gameId, const QString &_zone, const QString &_cardName, const QString &_color, const QString &_pt, const QString &_annotation, bool _destroy, int _x, int _y)
|
||||
: GameCommand("create_token", _gameId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("zone", _zone));
|
||||
|
|
@ -122,6 +131,7 @@ Command_CreateToken::Command_CreateToken(int _gameId, const QString &_zone, cons
|
|||
insertItem(new SerializableItem_String("color", _color));
|
||||
insertItem(new SerializableItem_String("pt", _pt));
|
||||
insertItem(new SerializableItem_String("annotation", _annotation));
|
||||
insertItem(new SerializableItem_Bool("destroy", _destroy));
|
||||
insertItem(new SerializableItem_Int("x", _x));
|
||||
insertItem(new SerializableItem_Int("y", _y));
|
||||
}
|
||||
|
|
@ -257,7 +267,22 @@ Event_MoveCard::Event_MoveCard(int _playerId, int _cardId, const QString &_cardN
|
|||
insertItem(new SerializableItem_Int("new_card_id", _newCardId));
|
||||
insertItem(new SerializableItem_Bool("face_down", _faceDown));
|
||||
}
|
||||
Event_CreateToken::Event_CreateToken(int _playerId, const QString &_zone, int _cardId, const QString &_cardName, const QString &_color, const QString &_pt, const QString &_annotation, int _x, int _y)
|
||||
Event_DestroyCard::Event_DestroyCard(int _playerId, const QString &_zone, int _cardId)
|
||||
: GameEvent("destroy_card", _playerId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("zone", _zone));
|
||||
insertItem(new SerializableItem_Int("card_id", _cardId));
|
||||
}
|
||||
Event_AttachCard::Event_AttachCard(int _playerId, const QString &_startZone, int _cardId, int _targetPlayerId, const QString &_targetZone, int _targetCardId)
|
||||
: GameEvent("attach_card", _playerId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("start_zone", _startZone));
|
||||
insertItem(new SerializableItem_Int("card_id", _cardId));
|
||||
insertItem(new SerializableItem_Int("target_player_id", _targetPlayerId));
|
||||
insertItem(new SerializableItem_String("target_zone", _targetZone));
|
||||
insertItem(new SerializableItem_Int("target_card_id", _targetCardId));
|
||||
}
|
||||
Event_CreateToken::Event_CreateToken(int _playerId, const QString &_zone, int _cardId, const QString &_cardName, const QString &_color, const QString &_pt, const QString &_annotation, bool _destroyOnZoneChange, int _x, int _y)
|
||||
: GameEvent("create_token", _playerId)
|
||||
{
|
||||
insertItem(new SerializableItem_String("zone", _zone));
|
||||
|
|
@ -266,6 +291,7 @@ Event_CreateToken::Event_CreateToken(int _playerId, const QString &_zone, int _c
|
|||
insertItem(new SerializableItem_String("color", _color));
|
||||
insertItem(new SerializableItem_String("pt", _pt));
|
||||
insertItem(new SerializableItem_String("annotation", _annotation));
|
||||
insertItem(new SerializableItem_Bool("destroy_on_zone_change", _destroyOnZoneChange));
|
||||
insertItem(new SerializableItem_Int("x", _x));
|
||||
insertItem(new SerializableItem_Int("y", _y));
|
||||
}
|
||||
|
|
@ -392,6 +418,7 @@ void ProtocolItem::initializeHashAuto()
|
|||
itemNameHash.insert("cmdroll_die", Command_RollDie::newItem);
|
||||
itemNameHash.insert("cmddraw_cards", Command_DrawCards::newItem);
|
||||
itemNameHash.insert("cmdmove_card", Command_MoveCard::newItem);
|
||||
itemNameHash.insert("cmdattach_card", Command_AttachCard::newItem);
|
||||
itemNameHash.insert("cmdcreate_token", Command_CreateToken::newItem);
|
||||
itemNameHash.insert("cmdcreate_arrow", Command_CreateArrow::newItem);
|
||||
itemNameHash.insert("cmddelete_arrow", Command_DeleteArrow::newItem);
|
||||
|
|
@ -414,6 +441,8 @@ void ProtocolItem::initializeHashAuto()
|
|||
itemNameHash.insert("game_eventshuffle", Event_Shuffle::newItem);
|
||||
itemNameHash.insert("game_eventroll_die", Event_RollDie::newItem);
|
||||
itemNameHash.insert("game_eventmove_card", Event_MoveCard::newItem);
|
||||
itemNameHash.insert("game_eventdestroy_card", Event_DestroyCard::newItem);
|
||||
itemNameHash.insert("game_eventattach_card", Event_AttachCard::newItem);
|
||||
itemNameHash.insert("game_eventcreate_token", Event_CreateToken::newItem);
|
||||
itemNameHash.insert("game_eventdelete_arrow", Event_DeleteArrow::newItem);
|
||||
itemNameHash.insert("game_eventset_card_attr", Event_SetCardAttr::newItem);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@
|
|||
2:roll_die:i,sides
|
||||
2:draw_cards:i,number
|
||||
2:move_card:s,start_zone:i,card_id:s,target_zone:i,x:i,y:b,face_down:b,tapped
|
||||
2:create_token:s,zone:s,card_name:s,color:s,pt:s,annotation:i,x:i,y
|
||||
2:attach_card:s,start_zone:i,card_id:i,target_player_id:s,target_zone:i,target_card_id
|
||||
2:create_token:s,zone:s,card_name:s,color:s,pt:s,annotation:b,destroy:i,x:i,y
|
||||
2:create_arrow:i,start_player_id:s,start_zone:i,start_card_id:i,target_player_id:s,target_zone:i,target_card_id:c,color
|
||||
2:delete_arrow:i,arrow_id
|
||||
2:set_card_attr:s,zone:i,card_id:s,attr_name:s,attr_value
|
||||
|
|
@ -41,7 +42,9 @@
|
|||
3:shuffle
|
||||
3:roll_die:i,sides:i,value
|
||||
3:move_card:i,card_id:s,card_name:s,start_zone:i,position:s,target_zone:i,x:i,y:i,new_card_id:b,face_down
|
||||
3:create_token:s,zone:i,card_id:s,card_name:s,color:s,pt:s,annotation:i,x:i,y
|
||||
3:destroy_card:s,zone:i,card_id
|
||||
3:attach_card:s,start_zone:i,card_id:i,target_player_id:s,target_zone:i,target_card_id
|
||||
3:create_token:s,zone:i,card_id:s,card_name:s,color:s,pt:s,annotation:b,destroy_on_zone_change:i,x:i,y
|
||||
3:delete_arrow:i,arrow_id
|
||||
3:set_card_attr:s,zone:i,card_id:s,attr_name:s,attr_value
|
||||
3:set_card_counter:s,zone:i,card_id:i,counter_id:i,counter_value
|
||||
|
|
|
|||
|
|
@ -179,15 +179,28 @@ public:
|
|||
static SerializableItem *newItem() { return new Command_MoveCard; }
|
||||
int getItemId() const { return ItemId_Command_MoveCard; }
|
||||
};
|
||||
class Command_AttachCard : public GameCommand {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Command_AttachCard(int _gameId = -1, const QString &_startZone = QString(), int _cardId = -1, int _targetPlayerId = -1, const QString &_targetZone = QString(), int _targetCardId = -1);
|
||||
QString getStartZone() const { return static_cast<SerializableItem_String *>(itemMap.value("start_zone"))->getData(); };
|
||||
int getCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("card_id"))->getData(); };
|
||||
int getTargetPlayerId() const { return static_cast<SerializableItem_Int *>(itemMap.value("target_player_id"))->getData(); };
|
||||
QString getTargetZone() const { return static_cast<SerializableItem_String *>(itemMap.value("target_zone"))->getData(); };
|
||||
int getTargetCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("target_card_id"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Command_AttachCard; }
|
||||
int getItemId() const { return ItemId_Command_AttachCard; }
|
||||
};
|
||||
class Command_CreateToken : public GameCommand {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Command_CreateToken(int _gameId = -1, const QString &_zone = QString(), const QString &_cardName = QString(), const QString &_color = QString(), const QString &_pt = QString(), const QString &_annotation = QString(), int _x = -1, int _y = -1);
|
||||
Command_CreateToken(int _gameId = -1, const QString &_zone = QString(), const QString &_cardName = QString(), const QString &_color = QString(), const QString &_pt = QString(), const QString &_annotation = QString(), bool _destroy = false, int _x = -1, int _y = -1);
|
||||
QString getZone() const { return static_cast<SerializableItem_String *>(itemMap.value("zone"))->getData(); };
|
||||
QString getCardName() const { return static_cast<SerializableItem_String *>(itemMap.value("card_name"))->getData(); };
|
||||
QString getColor() const { return static_cast<SerializableItem_String *>(itemMap.value("color"))->getData(); };
|
||||
QString getPt() const { return static_cast<SerializableItem_String *>(itemMap.value("pt"))->getData(); };
|
||||
QString getAnnotation() const { return static_cast<SerializableItem_String *>(itemMap.value("annotation"))->getData(); };
|
||||
bool getDestroy() const { return static_cast<SerializableItem_Bool *>(itemMap.value("destroy"))->getData(); };
|
||||
int getX() const { return static_cast<SerializableItem_Int *>(itemMap.value("x"))->getData(); };
|
||||
int getY() const { return static_cast<SerializableItem_Int *>(itemMap.value("y"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Command_CreateToken; }
|
||||
|
|
@ -388,16 +401,38 @@ public:
|
|||
static SerializableItem *newItem() { return new Event_MoveCard; }
|
||||
int getItemId() const { return ItemId_Event_MoveCard; }
|
||||
};
|
||||
class Event_DestroyCard : public GameEvent {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Event_DestroyCard(int _playerId = -1, const QString &_zone = QString(), int _cardId = -1);
|
||||
QString getZone() const { return static_cast<SerializableItem_String *>(itemMap.value("zone"))->getData(); };
|
||||
int getCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("card_id"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Event_DestroyCard; }
|
||||
int getItemId() const { return ItemId_Event_DestroyCard; }
|
||||
};
|
||||
class Event_AttachCard : public GameEvent {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Event_AttachCard(int _playerId = -1, const QString &_startZone = QString(), int _cardId = -1, int _targetPlayerId = -1, const QString &_targetZone = QString(), int _targetCardId = -1);
|
||||
QString getStartZone() const { return static_cast<SerializableItem_String *>(itemMap.value("start_zone"))->getData(); };
|
||||
int getCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("card_id"))->getData(); };
|
||||
int getTargetPlayerId() const { return static_cast<SerializableItem_Int *>(itemMap.value("target_player_id"))->getData(); };
|
||||
QString getTargetZone() const { return static_cast<SerializableItem_String *>(itemMap.value("target_zone"))->getData(); };
|
||||
int getTargetCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("target_card_id"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Event_AttachCard; }
|
||||
int getItemId() const { return ItemId_Event_AttachCard; }
|
||||
};
|
||||
class Event_CreateToken : public GameEvent {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Event_CreateToken(int _playerId = -1, const QString &_zone = QString(), int _cardId = -1, const QString &_cardName = QString(), const QString &_color = QString(), const QString &_pt = QString(), const QString &_annotation = QString(), int _x = -1, int _y = -1);
|
||||
Event_CreateToken(int _playerId = -1, const QString &_zone = QString(), int _cardId = -1, const QString &_cardName = QString(), const QString &_color = QString(), const QString &_pt = QString(), const QString &_annotation = QString(), bool _destroyOnZoneChange = false, int _x = -1, int _y = -1);
|
||||
QString getZone() const { return static_cast<SerializableItem_String *>(itemMap.value("zone"))->getData(); };
|
||||
int getCardId() const { return static_cast<SerializableItem_Int *>(itemMap.value("card_id"))->getData(); };
|
||||
QString getCardName() const { return static_cast<SerializableItem_String *>(itemMap.value("card_name"))->getData(); };
|
||||
QString getColor() const { return static_cast<SerializableItem_String *>(itemMap.value("color"))->getData(); };
|
||||
QString getPt() const { return static_cast<SerializableItem_String *>(itemMap.value("pt"))->getData(); };
|
||||
QString getAnnotation() const { return static_cast<SerializableItem_String *>(itemMap.value("annotation"))->getData(); };
|
||||
bool getDestroyOnZoneChange() const { return static_cast<SerializableItem_Bool *>(itemMap.value("destroy_on_zone_change"))->getData(); };
|
||||
int getX() const { return static_cast<SerializableItem_Int *>(itemMap.value("x"))->getData(); };
|
||||
int getY() const { return static_cast<SerializableItem_Int *>(itemMap.value("y"))->getData(); };
|
||||
static SerializableItem *newItem() { return new Event_CreateToken; }
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
#include "server_card.h"
|
||||
|
||||
Server_Card::Server_Card(QString _name, int _id, int _coord_x, int _coord_y)
|
||||
: id(_id), coord_x(_coord_x), coord_y(_coord_y), name(_name), tapped(false), attacking(false), facedown(false), color(QString()), pt(QString()), annotation(QString()), doesntUntap(false)
|
||||
: id(_id), coord_x(_coord_x), coord_y(_coord_y), name(_name), tapped(false), attacking(false), facedown(false), color(QString()), pt(QString()), annotation(QString()), destroyOnZoneChange(false), doesntUntap(false), parentCard(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -39,6 +39,7 @@ void Server_Card::resetState()
|
|||
setColor(QString());
|
||||
setPT(QString());
|
||||
setAnnotation(QString());
|
||||
setDestroyOnZoneChange(false);
|
||||
setDoesntUntap(false);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,10 @@ private:
|
|||
QString color;
|
||||
QString pt;
|
||||
QString annotation;
|
||||
bool destroyOnZoneChange;
|
||||
bool doesntUntap;
|
||||
|
||||
Server_Card *parentCard;
|
||||
public:
|
||||
Server_Card(QString _name, int _id, int _coord_x, int _coord_y);
|
||||
~Server_Card();
|
||||
|
|
@ -59,6 +62,8 @@ public:
|
|||
QString getPT() const { return pt; }
|
||||
QString getAnnotation() const { return annotation; }
|
||||
bool getDoesntUntap() const { return doesntUntap; }
|
||||
bool getDestroyOnZoneChange() const { return destroyOnZoneChange; }
|
||||
Server_Card *getParentCard() const { return parentCard; }
|
||||
|
||||
void setId(int _id) { id = _id; }
|
||||
void setCoords(int x, int y) { coord_x = x; coord_y = y; }
|
||||
|
|
@ -70,7 +75,9 @@ public:
|
|||
void setColor(const QString &_color) { color = _color; }
|
||||
void setPT(const QString &_pt) { pt = _pt; }
|
||||
void setAnnotation(const QString &_annotation) { annotation = _annotation; }
|
||||
void setDestroyOnZoneChange(bool _destroy) { destroyOnZoneChange = _destroy; }
|
||||
void setDoesntUntap(bool _doesntUntap) { doesntUntap = _doesntUntap; }
|
||||
void setParentCard(Server_Card *_parentCard) { parentCard = _parentCard; }
|
||||
|
||||
void resetState();
|
||||
bool setAttribute(const QString &aname, const QString &avalue, bool allCards);
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@ QList<ServerInfo_Player *> Server_Game::getGameState(Server_Player *playerWhosAs
|
|||
cardCounterList.append(new ServerInfo_CardCounter(cardCounterIterator.key(), cardCounterIterator.value()));
|
||||
}
|
||||
|
||||
cardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getTapped(), card->getAttacking(), card->getColor(), card->getPT(), card->getAnnotation(), cardCounterList));
|
||||
cardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getTapped(), card->getAttacking(), card->getColor(), card->getPT(), card->getAnnotation(), card->getDestroyOnZoneChange(), cardCounterList));
|
||||
}
|
||||
}
|
||||
zoneList.append(new ServerInfo_Zone(zone->getName(), zone->getType(), zone->hasCoords(), zone->cards.size(), cardList));
|
||||
|
|
|
|||
|
|
@ -95,6 +95,7 @@ ResponseCode Server_ProtocolHandler::processCommandHelper(Command *command, Comm
|
|||
case ItemId_Command_RollDie: return cmdRollDie(qobject_cast<Command_RollDie *>(command), cont, game, player);
|
||||
case ItemId_Command_DrawCards: return cmdDrawCards(qobject_cast<Command_DrawCards *>(command), cont, game, player);
|
||||
case ItemId_Command_MoveCard: return cmdMoveCard(qobject_cast<Command_MoveCard *>(command), cont, game, player);
|
||||
case ItemId_Command_AttachCard: return cmdAttachCard(qobject_cast<Command_AttachCard *>(command), cont, game, player);
|
||||
case ItemId_Command_CreateToken: return cmdCreateToken(qobject_cast<Command_CreateToken *>(command), cont, game, player);
|
||||
case ItemId_Command_CreateArrow: return cmdCreateArrow(qobject_cast<Command_CreateArrow *>(command), cont, game, player);
|
||||
case ItemId_Command_DeleteArrow: return cmdDeleteArrow(qobject_cast<Command_DeleteArrow *>(command), cont, game, player);
|
||||
|
|
@ -515,6 +516,13 @@ ResponseCode Server_ProtocolHandler::moveCard(Server_Game *game, Server_Player *
|
|||
Server_Card *card = startzone->getCard(_cardId, true, &position);
|
||||
if (!card)
|
||||
return RespNameNotFound;
|
||||
|
||||
if (card->getDestroyOnZoneChange() && (startzone != targetzone)) {
|
||||
cont->enqueueGameEventPrivate(new Event_DestroyCard(player->getPlayerId(), startzone->getName(), card->getId()), game->getGameId());
|
||||
cont->enqueueGameEventPublic(new Event_DestroyCard(player->getPlayerId(), startzone->getName(), card->getId()), game->getGameId());
|
||||
return RespOk;
|
||||
}
|
||||
|
||||
if (!targetzone->hasCoords()) {
|
||||
y = 0;
|
||||
if (x == -1)
|
||||
|
|
@ -601,6 +609,40 @@ ResponseCode Server_ProtocolHandler::cmdMoveCard(Command_MoveCard *cmd, CommandC
|
|||
return moveCard(game, player, cont, cmd->getStartZone(), cmd->getCardId(), cmd->getTargetZone(), cmd->getX(), cmd->getY(), cmd->getFaceDown(), cmd->getTapped());
|
||||
}
|
||||
|
||||
ResponseCode Server_ProtocolHandler::cmdAttachCard(Command_AttachCard *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player)
|
||||
{
|
||||
if (player->getSpectator())
|
||||
return RespFunctionNotAllowed;
|
||||
|
||||
if (!game->getGameStarted())
|
||||
return RespGameNotStarted;
|
||||
|
||||
Server_CardZone *startzone = player->getZones().value(cmd->getStartZone());
|
||||
if (!startzone)
|
||||
return RespNameNotFound;
|
||||
|
||||
Server_Card *card = startzone->getCard(cmd->getCardId(), false);
|
||||
if (!card)
|
||||
return RespNameNotFound;
|
||||
|
||||
Server_Player *targetPlayer = game->getPlayer(cmd->getTargetPlayerId());
|
||||
if (!targetPlayer)
|
||||
return RespNameNotFound;
|
||||
|
||||
Server_CardZone *targetzone = targetPlayer->getZones().value(cmd->getTargetZone());
|
||||
if (!targetzone)
|
||||
return RespNameNotFound;
|
||||
|
||||
Server_Card *targetCard = targetzone->getCard(cmd->getTargetCardId(), false);
|
||||
if (!targetCard)
|
||||
return RespNameNotFound;
|
||||
|
||||
card->setParentCard(targetCard);
|
||||
cont->enqueueGameEventPrivate(new Event_AttachCard(player->getPlayerId(), startzone->getName(), card->getId(), targetPlayer->getPlayerId(), targetzone->getName(), targetCard->getId()), game->getGameId());
|
||||
cont->enqueueGameEventPublic(new Event_AttachCard(player->getPlayerId(), startzone->getName(), card->getId(), targetPlayer->getPlayerId(), targetzone->getName(), targetCard->getId()), game->getGameId());
|
||||
return RespOk;
|
||||
}
|
||||
|
||||
ResponseCode Server_ProtocolHandler::cmdCreateToken(Command_CreateToken *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player)
|
||||
{
|
||||
if (player->getSpectator())
|
||||
|
|
@ -626,9 +668,10 @@ ResponseCode Server_ProtocolHandler::cmdCreateToken(Command_CreateToken *cmd, Co
|
|||
card->setPT(cmd->getPt());
|
||||
card->setColor(cmd->getColor());
|
||||
card->setAnnotation(cmd->getAnnotation());
|
||||
card->setDestroyOnZoneChange(cmd->getDestroy());
|
||||
|
||||
zone->insertCard(card, x, y);
|
||||
game->sendGameEvent(new Event_CreateToken(player->getPlayerId(), zone->getName(), card->getId(), card->getName(), cmd->getColor(), cmd->getPt(), cmd->getAnnotation(), x, y));
|
||||
game->sendGameEvent(new Event_CreateToken(player->getPlayerId(), zone->getName(), card->getId(), card->getName(), cmd->getColor(), cmd->getPt(), cmd->getAnnotation(), cmd->getDestroy(), x, y));
|
||||
|
||||
return RespOk;
|
||||
}
|
||||
|
|
@ -901,7 +944,7 @@ ResponseCode Server_ProtocolHandler::cmdDumpZone(Command_DumpZone *cmd, CommandC
|
|||
cardCounterIterator.next();
|
||||
cardCounterList.append(new ServerInfo_CardCounter(cardCounterIterator.key(), cardCounterIterator.value()));
|
||||
}
|
||||
respCardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getTapped(), card->getAttacking(), card->getColor(), card->getPT(), card->getAnnotation(), cardCounterList));
|
||||
respCardList.append(new ServerInfo_Card(card->getId(), displayedName, card->getX(), card->getY(), card->getTapped(), card->getAttacking(), card->getColor(), card->getPT(), card->getAnnotation(), card->getDestroyOnZoneChange(), cardCounterList));
|
||||
}
|
||||
}
|
||||
if (zone->getType() == HiddenZone) {
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ private:
|
|||
ResponseCode cmdDrawCards(Command_DrawCards *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode moveCard(Server_Game *game, Server_Player *player, CommandContainer *cont, const QString &_startZone, int _cardId, const QString &_targetZone, int _x, int _y, bool _faceDown, bool _tapped);
|
||||
ResponseCode cmdMoveCard(Command_MoveCard *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdAttachCard(Command_AttachCard *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdCreateToken(Command_CreateToken *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdCreateArrow(Command_CreateArrow *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
ResponseCode cmdDeleteArrow(Command_DeleteArrow *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue