public CGCardObject(CardData data, CardGameManager cgManager, CGPlayerLogic owner) { // Load card object data from card data m_cardName = data.cardName; m_channelCost = data.channelCost; m_attributes = data.cardAttributes; m_turnsRemaining = m_channelCost; // Create an instance of the card script if (data.cardScriptName == "") { Debug.LogError("No script specified for card: " + m_cardName); } else { m_script = System.Activator.CreateInstance(System.Type.GetType(data.cardScriptName), new object[] { }) as CardScript; m_script.SetScriptData(data, cgManager, this); } m_owner = owner; m_controller = owner; // Create unique card ID m_cardID = m_allCardIDs.Count; m_allCardIDs.Add(m_allCardIDs.Count); m_data = data; }
/************************ ** DEFAULT BEHAVIOURS ** ************************/ /** Called when playing the card from hand to put the spell into play */ public void PlayFromHand(CGCardObject card, CGPlayerLogic player) { m_owner = player; card.SetTimeRemaining(m_data.channelCost); player.m_spells.MoveCardToHere(card); m_cgManager.AddEffectToStack(OnPlay); }
protected void SendOpponentLifeUpdate() { int casterID = m_caster.m_ID; int opponentID = (casterID + 1) % 2; CGPlayerLogic opponent = m_cgManager.m_players[opponentID]; opponent.SendLifeCommand(); }
/******************** ** COMMON EFFECTS ** ********************/ /** Deal damage to your opponent. Returns the actual damage done. */ protected int DealDamageToOpponent(int damage) { int casterID = m_caster.m_ID; int targetID = (casterID + 1) % 2; CGPlayerLogic target = m_cgManager.m_players[targetID]; return(target.LoseLife(damage)); }
void Start() { CGPlayerLogic player1 = new CGPlayerLogic(this, 0); CGPlayerLogic player2 = new CGPlayerLogic(this, 1); m_players = new List <CGPlayerLogic>(); m_players.Add(player1); m_players.Add(player2); m_activePlayer = player1; StartGame(); }
public CardGameManager(ServerConnectionManager connection) { m_connection = connection; CGPlayerLogic player1 = new CGPlayerLogic(this, 0); CGPlayerLogic player2 = new CGPlayerLogic(this, 1); m_players = new List <CGPlayerLogic> { player1, player2 }; m_activePlayer = player1; }
/*************** * Turn phases * ***************/ /** "Beginning of turn" phase */ CGTurnState Phase0() { Debug.Log("Phase 0: Beginning phase"); m_activePlayerID = (m_activePlayerID + 1) % m_players.Count; m_activePlayer = m_players[m_activePlayerID]; m_spellsCastThisTurn = 0; m_spellDamageMultiplier = 1; TriggerEvent("BeginTurn"); ResolveStack(); return(CGTurnState.DEFAULT); }
/** "Beginning of turn" phase */ CGTurnState Phase0() { Debug.Log("Phase 0: Beginning phase"); // Update the active player m_activePlayerID = (m_activePlayerID + 1) % m_players.Count; m_activePlayer = m_players[m_activePlayerID]; // Reset per-turn variables m_spellsCastThisTurn = 0; m_spellDamageMultiplier = 1; // Tell players whose turn it is SendPhaseTransition("Player " + (m_activePlayerID + 1) + "'s turn"); // Resolve any "beginning of turn" triggers TriggerEvent("BeginTurn"); ResolveStack(); return(CGTurnState.DEFAULT); }
public CGSpellLogicZone(CGPlayerLogic player, CardGameManager cgManager) : base(player, cgManager) { }
/************************************ * CardScript behaviour passthrough * ************************************/ public void PlayFromHand(CGPlayerLogic player) { m_script.PlayFromHand(this, player); }
public void SetController(CGPlayerLogic player) { m_controller = player; player.m_spells.MoveCardToHere(this); }
public CGLogicZone(CGPlayerLogic player, CardGameManager cgManager) { m_cards = new List <CGCardObject>(); m_player = player; m_cgManager = cgManager; }
/** Called when the spell is to be removed from the board */ public void RemoveSpell(CGCardObject card, CGPlayerLogic owner) { owner.m_graveyard.MoveCardToHere(card); }
/** Called when the spell is to be cast */ public void CastSpell(CGPlayerLogic caster) { m_cgManager.AddEffectToStack(OnCast); m_caster = caster; }
public CGGraveyardLogicZone(CGPlayerLogic player, CardGameManager cgManager) : base(player, cgManager) { }
/** Called when the spell is to be removed from the board */ public void RemoveSpell(CGCardObject card, CGPlayerLogic owner) { owner.m_graveyard.MoveCardToHere(card); card.SetIsSpell(false); m_cgManager.AddEffectToStack(OnRemove); }