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()); }
// 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()); }
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); }); } }