Ejemplo n.º 1
0
    public void OpenVictory(VictoryInfo victoryInfo)
    {
        M8.ModalManager.main.CloseAll();

        mVictoryParms[ModalVictory.parmVictoryInfo] = victoryInfo;
        M8.ModalManager.main.Open(victoryModal, mVictoryParms);
    }
Ejemplo n.º 2
0
    public void SendVictory(string token)
    {
        var victoryInfo = new VictoryInfo
        {
            LobbyId      = Client.instance.lobbyInfo.Id,
            VictoryToken = token
        };

        var jmessage = Client.MakeJsonMessage(nameof(VictoryInfo), victoryInfo);

        Send(jmessage);
    }
Ejemplo n.º 3
0
        /// <summary>
        /// Handles the <see cref="Selector.SelectionChanged"/> event for the "Compare" <see
        /// cref="ListView"/> on the <see cref="TablesTab"/> page.</summary>
        /// <param name="sender">
        /// The <see cref="Object"/> where the event handler is attached.</param>
        /// <param name="args">
        /// A <see cref="SelectionChangedEventArgs"/> object containing event data.</param>
        /// <remarks>
        /// <b>OnCompareTableSelected</b> updates the "Defeat" and "Victory" text boxes and the
        /// "Faction" list view to reflect the selected ranking criterion.</remarks>

        private void OnCompareTableSelected(object sender, SelectionChangedEventArgs args)
        {
            args.Handled = true;

            // retrieve selected item, if any
            CompareListItem item = CompareTableList.SelectedItem as CompareListItem;

            // clear faction list
            FactionList.Items.Clear();

            // clear thresholds if selection cleared
            if (item == null)
            {
                DefeatInfo.Clear();
                VictoryInfo.Clear();
                return;
            }

            // retrieve selected criterion
            string id       = item.Item3 as String;
            var    resource = item.Item3 as ResourceClass;

            if (resource != null)
            {
                id = resource.Id;
            }

            // show faction ranking
            CreateFactionRows(resource, id);

            string defeatText  = "—"; // em dash
            string victoryText = "—"; // em dash

            if (resource != null)
            {
                // show global thresholds for resource conditions
                if (resource.Defeat != Int32.MinValue)
                {
                    defeatText = resource.Format(resource.Defeat, false);
                }

                if (resource.Victory != Int32.MaxValue)
                {
                    victoryText = resource.Format(resource.Victory, false);
                }
            }
            else
            {
                ConditionParameter parameter = ConditionParameter.Turns;
                switch (id)
                {
                case "sites": parameter = ConditionParameter.Sites; break;

                case "units": parameter = ConditionParameter.Units; break;

                case "unit-strength": parameter = ConditionParameter.UnitStrength; break;
                }

                // show common thresholds for specific conditions
                if (parameter != ConditionParameter.Turns)
                {
                    defeatText  = GetCommonThreshold(false, parameter);
                    victoryText = GetCommonThreshold(true, parameter);
                }
            }

            // show or clear thresholds
            DefeatInfo.Text  = defeatText;
            VictoryInfo.Text = victoryText;
        }
Ejemplo n.º 4
0
    protected override IEnumerator Start()
    {
        yield return(base.Start());

        //enter both contestant
        playerControl.action = CombatCharacterController.Action.Enter;
        enemyControl.action  = CombatCharacterController.Action.Enter;

        while (playerControl.isBusy || enemyControl.isBusy)
        {
            yield return(null);
        }

        if (signalReady)
        {
            signalReady.Invoke();
        }
        //

        //wait for signal
        while (mIsBeginWait)
        {
            yield return(null);
        }

        //show vs. animation

        //some dialog/tutorial depending on level

        var waitReviveEndDelay = new WaitForSeconds(reviveEndDelay);

        //combat loop
        while (true)
        {
            mRoundCount++;

            /////////////////////////////////////
            //attack state
            if (attackControl)
            {
                attackControl.Init(playerControl, enemyControl);
                attackControl.Play();

                yield return(null);

                while (attackControl.isPlaying)
                {
                    yield return(null);
                }

                mAttackDamage += attackControl.attackTotalNumber;

                //check if enemy is dead
                if (enemyControl.hpCurrent <= 0f)
                {
                    break;
                }
            }
            /////////////////////////////////////

            /////////////////////////////////////
            //defend state
            if (defenseControl)
            {
                defenseControl.Init(enemyControl, playerControl);
                defenseControl.Play();

                yield return(null);

                while (defenseControl.isPlaying)
                {
                    yield return(null);
                }

                mDefenseAmount += defenseControl.defenseTotalNumber;

                //check if player is dead
                if (playerControl.hpCurrent <= 0f)
                {
                    //revive
                    mReviveCount++;

                    playerControl.action = CombatCharacterController.Action.Revive;
                    while (playerControl.isBusy)
                    {
                        yield return(null);
                    }

                    //animation of hp going back up
                    playerControl.hpWidget.Show();
                    while (playerControl.hpWidget.isBusy)
                    {
                        yield return(null);
                    }

                    playerControl.hpCurrent = playerControl.hpMax;

                    yield return(waitReviveEndDelay);

                    playerControl.hpWidget.Hide();
                }

                if (!attackControl) //only one round if no attack control
                {
                    break;
                }
            }
            /////////////////////////////////////

            yield return(null);
        }

        //player victory
        playerControl.action = CombatCharacterController.Action.Victory;

        while (playerControl.isBusy)
        {
            yield return(null);
        }

        var victoryInfo = new VictoryInfo();

        victoryInfo.toScene = nextScene;

        if (attackControl && mAttackDamage.fValue > 0f)
        {
            victoryInfo.attackValue = mAttackDamage;
            victoryInfo.flags      |= VictoryStatFlags.Attack;
        }

        if (defenseControl && mDefenseAmount.fValue > 0f)
        {
            victoryInfo.defenseValue = mDefenseAmount;
            victoryInfo.flags       |= VictoryStatFlags.Defense;
        }

        if (victoryRoundsEnabled)
        {
            victoryInfo.roundsCount = mRoundCount;
            victoryInfo.flags      |= VictoryStatFlags.Rounds;
        }

        if (victoryReviveEnabled && mReviveCount > 0)
        {
            victoryInfo.reviveCount = mReviveCount;
            victoryInfo.flags      |= VictoryStatFlags.Revive;
        }

        GameData.instance.OpenVictory(victoryInfo);
    }