Untitled

mail@pastecode.io avatarunknown
csharp
25 days ago
3.1 kB
2
Indexable
Never
using FlamingTorchGames.CardGameFramework;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BaseMainPhase : GameTurnPhaseBase
{
    public override void OnEnter(Game game)
    {
        base.OnEnter(game);
        var startTurnDrawSize = 5;

        DrawCard(game, startTurnDrawSize);
    }

    private void DrawCard(Game game, int drawSize){

        var gameZoneDeck = game.GetGameZone(game.ActivePlayer.ID, "ZONE_HAND_DECK");
        var numberOfCardsInDeck = gameZoneDeck.cards.Count;

        for(var i=0; i <drawSize; i++){
            var card = gameZoneDeck.GetCard(i);

            //GET MORE CARDS
            if (i > numberOfCardsInDeck - 1){
                var gameZoneDiscard = game.GetGameZone(game.ActivePlayer.ID, "ZONE_HAND_DISCARD");
                var numberOfCards = gameZoneDiscard.cards.Count;

                for(var j = 0; j< numberOfCards ; j++){
                    gameZoneDiscard.Shuffle(game);
                }

                //CARDS IN DISCARD TO DECK
                for(var k = 0; k < numberOfCards; k++)
                {
                    game.RunAfterEventsAreDone((eventGame) =>
                    {
                    eventGame.MoveCard(game.ActivePlayer.ID, "ZONE_HAND_DISCARD", game.ActivePlayer.ID, "ZONE_HAND_DECK", -1, -1, null);
                    });
                }
            
            }

            //GET DRAWSIZE
            if(card != null){
                var hasDrawAbility = game.GetCardCharacteristic(card, "HAS_DRAW_ABILITY").boolValue;
            
                if(hasDrawAbility){
                    var drawValue = game.GetCardCharacteristic(card, "DRAW_VALUE").intValue;
                    var colorValue = game.GetCardCharacteristic(card, "MAGIC_COLOR").stringValue;

                    drawSize += drawValue;

                    //DRAW
                    game.RunAfterEventsAreDone((eventGame) =>
                    {
                        eventGame.MoveCard(game.ActivePlayer.ID, "ZONE_HAND_DECK", game.ActivePlayer.ID, "ZONE_HAND", 0, -1, null);
                    });

                    //REMOVE FROM HAND
                    game.RunAfterEventsAreDone((eventGame) =>
                    {
                        eventGame.MoveCard(game.ActivePlayer.ID, "ZONE_HAND", game.ActivePlayer.ID, "ZONE_HAND_DISCARD", -1, -1, null);
                    });

                    AddColor(colorValue);

                }
                else
                {
                    //DRAW
                    game.RunAfterEventsAreDone((eventGame) =>
                    {
                        eventGame.MoveCard(game.ActivePlayer.ID, "ZONE_HAND_DECK", game.ActivePlayer.ID, "ZONE_HAND", 0, -1, null);
                    });
                }
            }


        }
        
    }

    private void AddColor(string color){

        GameManager gameManager = GameManager.Instance;

        PlayerManagement player = gameManager.GetPlayer();

        player.AddColor(color);
    }


}