public static void CreateDiceModificationsButton(GenericAction actionEffect, Vector3 position)
    {
        GameObject prefab    = (GameObject)Resources.Load("Prefabs/GenericButton", typeof(GameObject));
        GameObject newButton = MonoBehaviour.Instantiate(prefab, GameObject.Find("UI").transform.Find("CombatDiceResultsPanel").Find("DiceModificationsPanel"));

        newButton.GetComponent <RectTransform>().localPosition = position;

        newButton.name = "Button" + actionEffect.DiceModificationName;
        newButton.transform.GetComponentInChildren <Text>().text = actionEffect.DiceModificationName;

        newButton.GetComponent <Button>().onClick.AddListener(
            delegate {
            if (DiceModificationsManager.IsLocked)
            {
                return;
            }
            DiceModificationsManager.IsLocked = true;

            GameCommand command = DiceModificationsManager.GenerateDiceModificationCommand(actionEffect.DiceModificationName);
            GameMode.CurrentGameMode.ExecuteCommand(command);
        }
            );
        Tooltips.AddTooltip(newButton, actionEffect.ImageUrl);

        newButton.GetComponent <Button>().interactable = true;
        newButton.SetActive(ShowOnlyForHuman());
    }
Beispiel #2
0
    // SHOT OF ATTACK (TWICE FOR TWIN ATTACK)

    private static void ShotStart()
    {
        Attacker.CallShotStart();
        Defender.CallShotStart();

        Attacker.ShowAttackAnimationAndSound();

        DiceModifications = new DiceModificationsManager();
        Triggers.ResolveTriggers(TriggerTypes.OnShotStart, DiceModifications.StartAttack);
    }
    private void CreateOkButton()
    {
        Button closeButton = GameObject.Find("UI").transform.Find("CombatDiceResultsPanel").Find("DiceModificationsPanel").Find("Confirm").GetComponent <Button>();

        closeButton.onClick.RemoveAllListeners();
        closeButton.onClick.AddListener(
            delegate {
            GameCommand command = DiceModificationsManager.GenerateDiceModificationCommand("OK");
            GameMode.CurrentGameMode.ExecuteCommand(command);
        }
            );
        closeButton.gameObject.SetActive(ShowOnlyForHuman());
    }
Beispiel #4
0
        public override void UseDiceModifications(DiceModificationTimingType type)
        {
            base.UseDiceModifications(type);

            switch (type)
            {
            case DiceModificationTimingType.Normal:
                Selection.ActiveShip = (Combat.AttackStep == CombatStep.Attack) ? Combat.Attacker : Combat.Defender;
                break;

            case DiceModificationTimingType.AfterRolled:
                Selection.ActiveShip = (Combat.AttackStep == CombatStep.Attack) ? Combat.Attacker : Combat.Defender;
                break;

            case DiceModificationTimingType.Opposite:
                Selection.ActiveShip = (Combat.AttackStep == CombatStep.Attack) ? Combat.Defender : Combat.Attacker;
                break;

            case DiceModificationTimingType.CompareResults:
                Selection.ActiveShip = Combat.Attacker;
                break;

            default:
                break;
            }

            Dictionary <GenericAction, int> actionsPriority = new Dictionary <GenericAction, int>();

            foreach (var diceModification in Combat.DiceModifications.AvailableDiceModifications.Values)
            {
                int priority = diceModification.GetDiceModificationPriority();
                Selection.ActiveShip.CallOnAiGetDiceModificationPriority(diceModification, ref priority);
                actionsPriority.Add(diceModification, priority);
            }

            actionsPriority = actionsPriority.OrderByDescending(n => n.Value).ToDictionary(n => n.Key, n => n.Value);

            bool isActionEffectTaken = false;

            if (actionsPriority.Count > 0)
            {
                KeyValuePair <GenericAction, int> prioritizedActionEffect = actionsPriority.First();
                if (prioritizedActionEffect.Value > 0)
                {
                    isActionEffectTaken = true;

                    GameManagerScript.Wait(1, delegate {
                        GameCommand command = DiceModificationsManager.GenerateDiceModificationCommand(prioritizedActionEffect.Key.Name);
                        GameMode.CurrentGameMode.ExecuteCommand(command);
                    });
                }
            }

            if (!isActionEffectTaken)
            {
                GameManagerScript.Wait(1, delegate {
                    GameCommand command = DiceModificationsManager.GenerateDiceModificationCommand("OK");
                    GameMode.CurrentGameMode.ExecuteCommand(command);
                });
            }
        }