void OnCardClick(CardVisual card) { // Select the clicked card m_castCard = card; m_visualManager.MakeAllUnclickable(); // Move the card to the targetting zone CGBasicZone targettingZone = m_visualManager.GetPlayerTargettingZone(); CGChannelZone channelZero = m_visualManager.GetPlayerChannel(0); targettingZone.MoveCardToZone(card); // Close the card selection menu m_menu.Close(channelZero); // Highlight possible targets and wait for one to be picked List <int> targets = GetTargets(card); if (targets.Count == 0) { // No valid targets found, one of three possibilities: // - There may be no legal targets // - The spell may not target anything // - An error is causing no targets to be found // Tell the server to cast the spell with no targets and await a response SGC_CastSpellFromChannel0 command = new SGC_CastSpellFromChannel0(card.m_cardID, -1); m_visualManager.TransmitStream(command.PackCommand()); FinishCommand(); return; } else { m_visualManager.MakeClickable(targets, OnTargetClick); } }
void OnTargetClick(CardVisual target) { m_visualManager.MakeAllUnclickable(); SGC_CastSpellFromChannel0 command = new SGC_CastSpellFromChannel0(m_castCard.m_cardID, target.m_cardID); m_visualManager.TransmitStream(command.PackCommand()); FinishCommand(); }
public override void ExecuteAiCommand(AiPlayer aiPlayer, ClientConnectionManager aiConnection) { int cardID = m_castableCards[0].cardID; int targetID = -1; if (m_castableCards[0].targets.Count > 0) { targetID = m_castableCards[0].targets[0]; } SGC_CastSpellFromChannel0 command = new SGC_CastSpellFromChannel0(cardID, targetID); aiConnection.TransmitStream(command.PackCommand()); }
public static SGCommand CreateCommandFromPacket(BKSystem.IO.BitStream packet, int playerID) { if (packet.Length < 0) { return(null); } ushort commandID; packet.Position = 0; packet.Read(out commandID, 0, 16); Debug.Log("Read packet with server command ID: " + commandID); SGCommand command; switch (commandID) { case 1: command = new SGC_CastSpellFromChannel0(packet, playerID); break; case 2: command = new SGC_PlayCardFromHand(packet, playerID); break; case 3: command = new SGC_SendDeck(packet, playerID); break; case 4: command = new SGC_RefreshTimeout(packet, playerID); break; default: command = null; break; } command.m_ID = (SGCommandID)commandID; return(command); }