Exemplo n.º 1
0
    public FinishBattel Initialize(IBattel battel, Action <object> continueAct, IStatisticsBattele statistics)
    {
        var canvas = GetComponent <Canvas>();

        canvas.worldCamera      = Camera.main;
        canvas.sortingLayerName = "MainUI";
        transform.SetAsLastSibling();

        this.continueAct = continueAct;
        buttonContinue.onClick.AddListener(Continue);

        if (battel.Winner == TypePersonEnum.player)
        {
            DeclareVictory(battel, statistics);
        }
        else
        {
            DeclareDefeat(battel, statistics);
        }

        background.gameObject.SetActive(false);
        StartCoroutine(DisplayBackground());

        return(this);
    }
Exemplo n.º 2
0
    private void DeclareDefeat(IBattel battel, IStatisticsBattele statistics)
    {
        imageTextBackground.color = colorDefeat;
        textMessages.SetKey("defeat");

        statistics.DeclareDefeat();
        textInfoResult.text = $"Victory: {statistics.CountVictory}, Defeat: {statistics.CountDefeat} , Series Victories: {statistics.CountSeriesVictories}";
    }
Exemplo n.º 3
0
    public void Construct(IBattel battel, IUserData player, BattelFieldFactory battelFieldFactory,
                          DeckBattleSelector.Factory factoriDeckBattleSelector, IAlTrainingBattel alTraining, ICardFactory <IAttackCard> cardFactory)
    {
        Initialize(battel, player, battelFieldFactory, cardFactory);
        (this.alTraining) = (alTraining);

        factoriDeckBattleSelector.Create().Build(transform, StartBattel);
        returnButton.transform.SetAsLastSibling();
    }
Exemplo n.º 4
0
    public void NextTurn(IBattel battel)
    {
        switch (battel.CurrentBattelState)
        {
        case BattelStateEnum.starting_hand: CreatStarteHand(battel.Enemy); break;

        case BattelStateEnum.reserve: СommitReserve(battel.Enemy); break;

        case BattelStateEnum.tactics: СommitTactics(battel); break;
        }

        battel.ReportReadinessEnemy();
    }
Exemplo n.º 5
0
    private void СommitTactics(IBattel battel)
    {
        var random = new System.Random();

        var cards       = new List <int>();
        var priceHazard = new List <int>()
        {
            -1, -1, -1, -1
        };

        foreach (var item in battel.Enemy.AttackCards)
        {
            foreach (var playerCard in battel.Player.AttackCards)
            {
                if (playerCard.Warrior.Enemies.Count >= playerCard.Combat.MaxCountAttackers)
                {
                    priceHazard[playerCard.Id] = -1;
                    continue;
                }

                priceHazard[playerCard.Id] = random.Next(0, 1000);
            }

            int currentPrize = -1, currentIndex = -1;
            for (int i = 0; i < priceHazard.Count; i++)
            {
                if (priceHazard[i] > currentPrize)
                {
                    currentPrize = priceHazard[i];
                    currentIndex = i;
                }
            }

            if (currentIndex >= 0)
            {
                battel.Player.AttackCards[currentIndex].Warrior.Enemies.Add(item.Warrior);
            }
            cards.Add(currentIndex);

            priceHazard.ForEach(x => x = -1);
        }

        battel.Enemy.Report = JsonConvert.SerializeObject(cards);
    }
Exemplo n.º 6
0
    protected BaseBattel Initialize(IBattel battel, IUserData player,
                                    BattelFieldFactory battelFieldFactory, ICardFactory <IAttackCard> cardFactory)
    {
        (this.Battel, this.UserData, this.battelFieldFactory, this.cardFactory)
            = (battel, player, battelFieldFactory, cardFactory);

        returnButton.SetListener(OnLeaveBattle);
        buttonFinishBattel.SetListener(OnLeaveBattle);
        buttonNextTurn.SetListener(NextTurn);

        buttonFinishBattel.gameObject.SetActive(false);
        buttonNextTurn.gameObject.SetActive(false);

        battel.InteractableButtonNextTurn += SetInteractableButtonNextTurn;
        battel.NextTurn     += NextTurn;
        battel.FinishBattel += FinishBattel;

        return(this);
    }
Exemplo n.º 7
0
    public BattelDataPanel Initialize(IBattel battel)
    {
        this.battel = battel;
        resetCardsCounterUI.Initiate(battel.CardResetCounter as ICardResetCounterUI);

        var canvas = GetComponent <Canvas>();

        canvas.worldCamera      = Camera.main;
        canvas.sortingLayerName = "MainUI";

        countRound.text = "0";

        battel.AssignBattelState                  += AssignBattelState;
        battel.BattelSpecific.SetRounds           += SetCountRound;
        battel.BattelSpecific.SetCardResetCounter += SetCardResetCounter;

        AssignBattelState(BattelStateEnum.starting_hand);

        return(this);
    }
Exemplo n.º 8
0
 public static CommonBattelScene CreatPrefab(IBattel battelData, IUserData player,
                                             BattelFieldFactory battelFieldFactory, ICardFactory <IAttackCard> cardFactory) =>
 (Instantiate(Resources.Load <CommonBattelScene>($"BattleScene/CommonBattelScene")).Initialize(battelData, player,
                                                                                               battelFieldFactory, cardFactory) as CommonBattelScene)
 .Build();
Exemplo n.º 9
0
    [HideInInspector] public bool isEnemyCameOut = false; // Враг вышел из боя(досрочно) Ему будет засчитано поражение(если isStartBattel = true)

    public static RatingBattelScene CreatPrefab(IBattel battelData, IUserData player, DeckBattleSelector deckBattleSelector,
                                                BattelFieldFactory battelFieldFactory, ICardFactory <IAttackCard> cardFactory) =>
    (Instantiate(Resources.Load <RatingBattelScene>($"BattleScene/RatingBattelScene")).Initialize(battelData, player,
                                                                                                  battelFieldFactory, cardFactory) as RatingBattelScene)
    .Build(deckBattleSelector);