Beispiel #1
0
    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;
    }
Beispiel #2
0
    /************************
    ** 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);
    }
Beispiel #3
0
    protected void SendOpponentLifeUpdate()
    {
        int casterID   = m_caster.m_ID;
        int opponentID = (casterID + 1) % 2;

        CGPlayerLogic opponent = m_cgManager.m_players[opponentID];

        opponent.SendLifeCommand();
    }
Beispiel #4
0
    /********************
    ** 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));
    }
Beispiel #5
0
    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();
    }
Beispiel #6
0
    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;
    }
Beispiel #7
0
    /***************
    * 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);
    }
Beispiel #8
0
    /** "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);
    }
Beispiel #9
0
 public CGSpellLogicZone(CGPlayerLogic player, CardGameManager cgManager) : base(player, cgManager)
 {
 }
Beispiel #10
0
    /************************************
    * CardScript behaviour passthrough *
    ************************************/

    public void PlayFromHand(CGPlayerLogic player)
    {
        m_script.PlayFromHand(this, player);
    }
Beispiel #11
0
 public void SetController(CGPlayerLogic player)
 {
     m_controller = player;
     player.m_spells.MoveCardToHere(this);
 }
Beispiel #12
0
 public CGLogicZone(CGPlayerLogic player, CardGameManager cgManager)
 {
     m_cards     = new List <CGCardObject>();
     m_player    = player;
     m_cgManager = cgManager;
 }
Beispiel #13
0
 /** Called when the spell is to be removed from the board */
 public void RemoveSpell(CGCardObject card, CGPlayerLogic owner)
 {
     owner.m_graveyard.MoveCardToHere(card);
 }
Beispiel #14
0
 /** Called when the spell is to be cast */
 public void CastSpell(CGPlayerLogic caster)
 {
     m_cgManager.AddEffectToStack(OnCast);
     m_caster = caster;
 }
Beispiel #15
0
 public CGGraveyardLogicZone(CGPlayerLogic player, CardGameManager cgManager) : base(player, cgManager)
 {
 }
Beispiel #16
0
 /** 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);
 }