Example #1
0
 public TractorBeamToken(GenericShip host, Players.GenericPlayer assigner) : base(host)
 {
     Name      = "Debuff Token";
     Temporary = true;
     Tooltip   = "https://raw.githubusercontent.com/guidokessels/xwing-data/master/images/reference-cards/TractorBeamToken.png";
     Assigner  = assigner;
 }
Example #2
0
 public TractorBeamToken(GenericShip host, Players.GenericPlayer assigner) : base(host)
 {
     Name       = "Tractor Beam Token";
     ImageName  = (Edition.Current is SecondEdition) ? "Tractor Beam Token SE" : "Tractor Beam Token FE";
     Temporary  = true;
     TokenColor = TokenColors.Orange;
     PriorityUI = 40;
     Tooltip    = "https://raw.githubusercontent.com/guidokessels/xwing-data/master/images/reference-cards/TractorBeamToken.png";
     Assigner   = assigner;
 }
Example #3
0
        public void AssignToken(Type tokenType, Action callback, Players.GenericPlayer assigner = null)
        {
            if (tokenType == typeof(JamToken) || tokenType == typeof(TractorBeamToken))
            {
                if (assigner == null)
                {
                    throw new InvalidOperationException("assigner must be specified when assigning a " + tokenType.ToString());
                }

                AssignToken((GenericToken)Activator.CreateInstance(tokenType, Host, assigner), callback);
            }
            else
            {
                AssignToken((GenericToken)Activator.CreateInstance(tokenType, Host), callback);
            }
        }
Example #4
0
        public override void Initialize()
        {
            if (decisions.Count != 0)
            {
                decisionPanel.transform.Find("InformationPanel").GetComponentInChildren <Text>().text = InfoText;

                int i = 0;
                foreach (var item in decisions)
                {
                    GameObject prefab        = (GameObject)Resources.Load("Prefabs/DecisionButton", typeof(GameObject));
                    GameObject buttonsHolder = decisionPanel.transform.Find("DecisionsPanel").gameObject;
                    GameObject button        = MonoBehaviour.Instantiate(prefab, buttonsHolder.transform);
                    button.transform.localPosition = new Vector3((i % 2 == 0) ? 5 : 200, -buttonHeight * (i / 2), 0);
                    button.name = "Button" + i;

                    button.GetComponentInChildren <Text>().text = item.Key;

                    if (tooltips.ContainsKey(item.Key))
                    {
                        Tooltips.AddTooltip(button, tooltips[item.Key]);
                    }

                    EventTrigger       trigger = button.AddComponent <EventTrigger>();
                    EventTrigger.Entry entry   = new EventTrigger.Entry();
                    entry.eventID = EventTriggerType.PointerClick;
                    entry.callback.AddListener(
                        (data) => { GameModes.GameMode.CurrentGameMode.TakeDecision(item, button); }
                        );
                    trigger.triggers.Add(entry);

                    i++;
                }
                decisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(decisionPanel.GetComponent <RectTransform>().sizeDelta.x, defaultWindowHeight + ((i + 1) / 2) * buttonHeight);

                if (DecisionOwner == null)
                {
                    DecisionOwner = Roster.GetPlayer(Phases.CurrentPhasePlayer);
                }

                if (ShowSkipButton)
                {
                    UI.ShowSkipButton();
                }

                DecisionOwner.TakeDecision();
            }
        }
Example #5
0
        private void TryRegisterAbility(object sender, System.EventArgs e)
        {
            Players.GenericPlayer opponent = Roster.GetPlayer(Roster.AnotherPlayer(HostShip.Owner.PlayerNo));
            foreach (GenericShip ship in opponent.Ships.Values)
            {
                if (HostShip.SectorsInfo.IsShipInSector(ship, ArcType.Bullseye))
                {
                    Triggers.RegisterTrigger(new Trigger()
                    {
                        Name         = ship.ShipId + ": " + Name,
                        TriggerType  = TriggerTypes.OnAbilityDirect,
                        TriggerOwner = opponent.PlayerNo,
                        EventHandler = ShowChooseEffect,
                        Sender       = ship
                    });
                }
            }

            Triggers.ResolveTriggers(TriggerTypes.OnAbilityDirect, Triggers.FinishTrigger);
        }
Example #6
0
        private void TryRegisterAbility(object sender, System.EventArgs e)
        {
            Players.GenericPlayer opponent = Roster.GetPlayer(Roster.AnotherPlayer(HostShip.Owner.PlayerNo));
            foreach (var ship in opponent.Ships)
            {
                ShotInfo shotInfo = new ShotInfo(HostShip, ship.Value, HostShip.PrimaryWeapon);
                if (shotInfo.InArcByType(ArcTypes.Bullseye))
                {
                    Triggers.RegisterTrigger(new Trigger()
                    {
                        Name         = ship.Value.ShipId + ": " + Name,
                        TriggerType  = TriggerTypes.OnAbilityDirect,
                        TriggerOwner = opponent.PlayerNo,
                        EventHandler = ShowChooseEffect,
                        Sender       = ship.Value
                    });
                }
            }

            Triggers.ResolveTriggers(TriggerTypes.OnAbilityDirect, Triggers.FinishTrigger);
        }
Example #7
0
        public override void Initialize()
        {
            if (decisions.Count != 0)
            {
                decisionPanel.transform.Find("InformationPanel").GetComponentInChildren <Text>().text = InfoText;

                int i             = 0;
                int rowsUsed      = 0;
                int currentColumn = 1;

                foreach (var decision in decisions)
                {
                    GameObject prefab = null;

                    switch (DecisionViewType)
                    {
                    case DecisionViewTypes.TextButtons:
                        prefab = (GameObject)Resources.Load("Prefabs/DecisionButton", typeof(GameObject));
                        break;

                    case DecisionViewTypes.ImagesUpgrade:
                    case DecisionViewTypes.ImagesDamageCard:
                        prefab = (GameObject)Resources.Load("Prefabs/SquadBuilder/SmallCardPanel", typeof(GameObject));
                        break;

                    default:
                        break;
                    }

                    GameObject     button = MonoBehaviour.Instantiate(prefab, buttonsHolder.transform);
                    SmallCardPanel script = null;

                    switch (DecisionViewType)
                    {
                    case DecisionViewTypes.TextButtons:
                        if (!decision.IsCentered)
                        {
                            float offsetX = (currentColumn == 1) ? 7.5f : 300;

                            button.transform.localPosition = new Vector3(offsetX, -buttonHeight * rowsUsed, 0);

                            if (currentColumn == 1)
                            {
                                currentColumn++;
                            }
                            else
                            {
                                currentColumn = 1;
                                rowsUsed++;
                            }
                        }
                        else
                        {
                            button.transform.localPosition = new Vector3(105 * 1.5f, -buttonHeight * rowsUsed, 0);

                            rowsUsed++;
                            currentColumn = 1;
                        }

                        button.GetComponentInChildren <Text>().text  = decision.Name;
                        button.GetComponentInChildren <Text>().color = (decision.IsRed) ? Color.red : Color.white;

                        if (decision.HasTooltip)
                        {
                            Tooltips.AddTooltip(button, decision.Tooltip);
                        }

                        EventTrigger       trigger = button.AddComponent <EventTrigger>();
                        EventTrigger.Entry entry   = new EventTrigger.Entry();
                        entry.eventID = EventTriggerType.PointerClick;
                        entry.callback.AddListener(
                            (data) => { DecisionButtonWasPressed(decision, button); }
                            );
                        trigger.triggers.Add(entry);

                        break;

                    case DecisionViewTypes.ImagesUpgrade:
                        button.transform.localPosition = new Vector3(15 * (i + 1) + i * Editions.Edition.Current.UpgradeCardSize.x, 0, 0);

                        script = button.GetComponent <SmallCardPanel>();
                        script.Initialize(
                            decision.Name,
                            decision.Tooltip,
                            delegate {
                            GameCommand command = GenerateDecisionCommand(decision.Name);
                            GameMode.CurrentGameMode.ExecuteCommand(command);
                        },
                            DecisionViewTypes.ImagesUpgrade,
                            decision.Count
                            );

                        break;

                    case DecisionViewTypes.ImagesDamageCard:
                        button.transform.localPosition = new Vector3(15 * (i + 1) + i * ImagesDamageCardSize.x, 0, 0);

                        script = button.GetComponent <SmallCardPanel>();
                        script.Initialize(
                            decision.Name,
                            decision.Tooltip,
                            delegate {
                            GameCommand command = GenerateDecisionCommand(decision.Name);
                            GameMode.CurrentGameMode.ExecuteCommand(command);
                        },
                            DecisionViewTypes.ImagesDamageCard,
                            decision.Count
                            );

                        break;

                    default:
                        break;
                    }

                    button.name = "Button" + i;
                    i++;
                }

                switch (DecisionViewType)
                {
                case DecisionViewTypes.TextButtons:
                    if (currentColumn == 2)
                    {
                        rowsUsed++;
                    }
                    decisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        395 * 1.5f,
                        defaultWindowHeight + rowsUsed * buttonHeight
                        );
                    buttonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        395 * 1.5f,
                        defaultWindowHeight + rowsUsed * buttonHeight
                        );
                    break;

                case DecisionViewTypes.ImagesUpgrade:
                    decisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        Mathf.Max(395 * 1.5f, decisions.Count * Editions.Edition.Current.UpgradeCardSize.x + (decisions.Count + 1) * 15),
                        defaultWindowHeight + Editions.Edition.Current.UpgradeCardSize.y + 15
                        );
                    buttonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        decisions.Count * Editions.Edition.Current.UpgradeCardSize.x + (decisions.Count + 1) * 15,
                        defaultWindowHeight + Editions.Edition.Current.UpgradeCardSize.y + 15
                        );
                    break;

                case DecisionViewTypes.ImagesDamageCard:
                    decisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        Mathf.Max(395 * 1.5f, decisions.Count * ImagesDamageCardSize.x + (decisions.Count + 1) * 15),
                        defaultWindowHeight + ImagesDamageCardSize.y + 10
                        );
                    buttonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        decisions.Count * ImagesDamageCardSize.x + (decisions.Count + 1) * 15,
                        defaultWindowHeight + ImagesDamageCardSize.y + 15
                        );
                    break;

                default:
                    break;
                }

                buttonsHolder.transform.localPosition = new Vector2(-buttonsHolder.GetComponent <RectTransform>().sizeDelta.x / 2, -105);

                if (DecisionOwner == null)
                {
                    DecisionOwner = Roster.GetPlayer(Phases.CurrentPhasePlayer);
                }

                if (ShowSkipButton)
                {
                    UI.ShowSkipButton();
                }
                else
                {
                    UI.HideSkipButton();
                }
            }
        }
Example #8
0
        public override void Initialize()
        {
            DecisionPanel      = GameObject.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/UI/DecisionsPanel"), GameObject.Find("UI/DecisionPanelHolder").transform);
            DecisionPanel.name = "DecisionsPanel";
            ButtonsHolder      = DecisionPanel.transform.Find("Center/DecisionsPanel").gameObject;

            if (DescriptionShort != null)
            {
                ShowDecisionDescription(DescriptionShort, DescriptionLong, ImageSource);
            }

            float defaultWindowHeight = (DescriptionLong != null) ? 190f : 70f;
            float buttonHeight        = 70f;

            if (decisions.Count != 0)
            {
                if (DescriptionLong == null)
                {
                    DecisionPanel.transform.Find("DescriptionHolder/Description").GetComponentInChildren <Text>().text = DescriptionShort;
                }

                int i             = 0;
                int rowsUsed      = 0;
                int currentColumn = 1;

                foreach (var decision in decisions)
                {
                    GameObject prefab = null;

                    switch (DecisionViewType)
                    {
                    case DecisionViewTypes.TextButtons:
                        prefab = (GameObject)Resources.Load("Prefabs/DecisionButton", typeof(GameObject));
                        break;

                    case DecisionViewTypes.ImagesUpgrade:
                    case DecisionViewTypes.ImagesDamageCard:
                        prefab = (GameObject)Resources.Load("Prefabs/SquadBuilder/SmallCardPanel", typeof(GameObject));
                        break;

                    default:
                        break;
                    }

                    GameObject     button = MonoBehaviour.Instantiate(prefab, ButtonsHolder.transform);
                    SmallCardPanel script = null;

                    switch (DecisionViewType)
                    {
                    case DecisionViewTypes.TextButtons:
                        if (!decision.IsCentered)
                        {
                            float offsetX = (currentColumn == 1) ? 7.5f : 350;

                            button.transform.localPosition = new Vector3(offsetX, -(buttonHeight + 5) * rowsUsed, 0);
                            button.GetComponent <RectTransform>().sizeDelta = new Vector2(335, 67.5f);

                            if (currentColumn == 1)
                            {
                                currentColumn++;
                            }
                            else
                            {
                                currentColumn = 1;
                                rowsUsed++;
                            }
                        }
                        else
                        {
                            button.transform.localPosition = new Vector3(182.5f, -(buttonHeight + 5) * rowsUsed, 0);
                            button.GetComponent <RectTransform>().sizeDelta = new Vector2(335, 67.5f);

                            rowsUsed++;
                            currentColumn = 1;
                        }

                        button.GetComponentInChildren <Text>().text = decision.Name;

                        switch (decision.Color)
                        {
                        case ActionColor.White:
                            button.GetComponentInChildren <Text>().color = Color.white;
                            break;

                        case ActionColor.Red:
                            button.GetComponentInChildren <Text>().color = Color.red;
                            break;

                        case ActionColor.Purple:
                            button.GetComponentInChildren <Text>().color = new Color(128, 0, 128);
                            break;

                        default:
                            break;
                        }

                        if (decision.HasTooltip)
                        {
                            Tooltips.AddTooltip(button, decision.Tooltip);
                        }

                        EventTrigger       trigger = button.AddComponent <EventTrigger>();
                        EventTrigger.Entry entry   = new EventTrigger.Entry();
                        entry.eventID = EventTriggerType.PointerClick;
                        entry.callback.AddListener(
                            (data) => { DecisionButtonWasPressed(decision, button); }
                            );
                        trigger.triggers.Add(entry);

                        break;

                    case DecisionViewTypes.ImagesUpgrade:
                        button.transform.localPosition = new Vector3(15 * (i + 1) + i * Editions.Edition.Current.UpgradeCardSize.x, 0, 0);

                        script = button.GetComponent <SmallCardPanel>();
                        script.Initialize(
                            decision.Name,
                            decision.Tooltip,
                            delegate {
                            GameCommand command = GenerateDecisionCommand(decision.Name);
                            GameMode.CurrentGameMode.ExecuteCommand(command);
                        },
                            DecisionViewTypes.ImagesUpgrade,
                            decision.Count
                            );

                        break;

                    case DecisionViewTypes.ImagesDamageCard:

                        if (currentColumn == 6)
                        {
                            currentColumn = 1;
                            rowsUsed++;
                        }

                        button.transform.localPosition = new Vector3(15 * (currentColumn) + (currentColumn - 1) * ImagesDamageCardSize.x, rowsUsed * -ImagesDamageCardSize.y - 15 * rowsUsed, 0);

                        script = button.GetComponent <SmallCardPanel>();
                        script.Initialize(
                            decision.Name,
                            decision.Tooltip,
                            delegate {
                            GameCommand command = GenerateDecisionCommand(decision.Name);
                            GameMode.CurrentGameMode.ExecuteCommand(command);
                        },
                            DecisionViewTypes.ImagesDamageCard,
                            decision.Count
                            );

                        currentColumn++;

                        break;

                    default:
                        break;
                    }

                    button.name = "Button" + i;
                    i++;
                }

                switch (DecisionViewType)
                {
                case DecisionViewTypes.TextButtons:
                    if (currentColumn == 2)
                    {
                        rowsUsed++;
                    }
                    DecisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        700f,
                        defaultWindowHeight + rowsUsed * (buttonHeight + 5)
                        );
                    ButtonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        700f,
                        defaultWindowHeight + rowsUsed * (buttonHeight + 5)
                        );
                    break;

                case DecisionViewTypes.ImagesUpgrade:
                    DecisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        Mathf.Max(700f, decisions.Count * Editions.Edition.Current.UpgradeCardSize.x + (decisions.Count + 1) * 15),
                        defaultWindowHeight + Editions.Edition.Current.UpgradeCardSize.y + 15
                        );
                    ButtonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        decisions.Count * Editions.Edition.Current.UpgradeCardSize.x + (decisions.Count + 1) * 15,
                        defaultWindowHeight + Editions.Edition.Current.UpgradeCardSize.y + 15
                        );
                    break;

                case DecisionViewTypes.ImagesDamageCard:
                    DecisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        Mathf.Max(700f, Mathf.Min(decisions.Count, 5) * ImagesDamageCardSize.x + (Mathf.Min(decisions.Count, 5) + 1) * 15),
                        defaultWindowHeight + ImagesDamageCardSize.y * (rowsUsed + 1) + 10 * (rowsUsed + 1)
                        );
                    ButtonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        Mathf.Min(decisions.Count, 5) * ImagesDamageCardSize.x + (Mathf.Min(decisions.Count, 5) + 1) * 15,
                        defaultWindowHeight + ImagesDamageCardSize.y * (rowsUsed + 1) + 15 * (rowsUsed + 1)
                        );
                    break;

                default:
                    break;
                }

                ButtonsHolder.transform.localPosition = new Vector2(-ButtonsHolder.GetComponent <RectTransform>().sizeDelta.x / 2, -185);

                if (DecisionOwner == null)
                {
                    DecisionOwner = Roster.GetPlayer(Phases.CurrentPhasePlayer);
                }
                RequiredPlayer = DecisionOwner.PlayerNo;
                Roster.HighlightPlayer(RequiredPlayer);

                if (ShowSkipButton)
                {
                    UI.ShowSkipButton();
                }
                else
                {
                    UI.HideSkipButton();
                }
            }
        }
Example #9
0
        public override void Initialize()
        {
            if (decisions.Count != 0)
            {
                decisionPanel.transform.Find("InformationPanel").GetComponentInChildren <Text>().text = InfoText;

                switch (DecisionViewType)
                {
                case DecisionViewTypes.TextButtons:
                    decisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        395,
                        defaultWindowHeight + ((decisions.Count + 1) / 2) * buttonHeight
                        );
                    buttonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        395,
                        defaultWindowHeight + ((decisions.Count + 1) / 2) * buttonHeight
                        );
                    break;

                case DecisionViewTypes.ImagesUpgrade:
                    decisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        Mathf.Max(395, decisions.Count * RuleSets.RuleSet.Instance.UpgradeCardSize.x + (decisions.Count + 1) * 10),
                        defaultWindowHeight + RuleSets.RuleSet.Instance.UpgradeCardSize.y + 10
                        );
                    buttonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        decisions.Count * RuleSets.RuleSet.Instance.UpgradeCardSize.x + (decisions.Count + 1) * 10,
                        defaultWindowHeight + RuleSets.RuleSet.Instance.UpgradeCardSize.y + 10
                        );
                    break;

                case DecisionViewTypes.ImagesDamageCard:
                    decisionPanel.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        Mathf.Max(395, decisions.Count * ImagesDamageCardSize.x + (decisions.Count + 1) * 10),
                        defaultWindowHeight + ImagesDamageCardSize.y + 10
                        );
                    buttonsHolder.GetComponent <RectTransform>().sizeDelta = new Vector3(
                        decisions.Count * ImagesDamageCardSize.x + (decisions.Count + 1) * 10,
                        defaultWindowHeight + ImagesDamageCardSize.y + 10
                        );
                    break;

                default:
                    break;
                }

                buttonsHolder.transform.localPosition = new Vector2(-buttonsHolder.GetComponent <RectTransform>().sizeDelta.x / 2, -70);

                int i = 0;
                foreach (var decision in decisions)
                {
                    GameObject prefab = null;

                    switch (DecisionViewType)
                    {
                    case DecisionViewTypes.TextButtons:
                        prefab = (GameObject)Resources.Load("Prefabs/DecisionButton", typeof(GameObject));
                        break;

                    case DecisionViewTypes.ImagesUpgrade:
                    case DecisionViewTypes.ImagesDamageCard:
                        prefab = (GameObject)Resources.Load("Prefabs/SquadBuilder/SmallCardPanel", typeof(GameObject));
                        break;

                    default:
                        break;
                    }

                    GameObject     button = MonoBehaviour.Instantiate(prefab, buttonsHolder.transform);
                    SmallCardPanel script = null;

                    switch (DecisionViewType)
                    {
                    case DecisionViewTypes.TextButtons:
                        button.transform.localPosition = new Vector3((i % 2 == 0) ? 5 : 200, -buttonHeight * (i / 2), 0);

                        button.GetComponentInChildren <Text>().text  = decision.Name;
                        button.GetComponentInChildren <Text>().color = (decision.IsRed) ? Color.red : Color.white;

                        if (decision.HasTooltip)
                        {
                            Tooltips.AddTooltip(button, decision.Tooltip);
                        }

                        EventTrigger       trigger = button.AddComponent <EventTrigger>();
                        EventTrigger.Entry entry   = new EventTrigger.Entry();
                        entry.eventID = EventTriggerType.PointerClick;
                        entry.callback.AddListener(
                            (data) => { DecisionButtonWasPressed(decision, button); }
                            );
                        trigger.triggers.Add(entry);

                        break;

                    case DecisionViewTypes.ImagesUpgrade:
                        button.transform.localPosition = new Vector3(10 * (i + 1) + i * RuleSets.RuleSet.Instance.UpgradeCardSize.x, 0, 0);

                        script = button.GetComponent <SmallCardPanel>();
                        script.Initialize(
                            decision.Name,
                            decision.Tooltip,
                            delegate { GameMode.CurrentGameMode.TakeDecision(decision, button); },
                            DecisionViewTypes.ImagesUpgrade,
                            decision.Count
                            );

                        break;

                    case DecisionViewTypes.ImagesDamageCard:
                        button.transform.localPosition = new Vector3(10 * (i + 1) + i * ImagesDamageCardSize.x, 0, 0);

                        script = button.GetComponent <SmallCardPanel>();
                        script.Initialize(
                            decision.Name,
                            decision.Tooltip,
                            delegate { GameMode.CurrentGameMode.TakeDecision(decision, button); },
                            DecisionViewTypes.ImagesDamageCard,
                            decision.Count
                            );

                        break;

                    default:
                        break;
                    }

                    button.name = "Button" + i;
                    i++;
                }

                if (DecisionOwner == null)
                {
                    DecisionOwner = Roster.GetPlayer(Phases.CurrentPhasePlayer);
                }

                if (ShowSkipButton)
                {
                    UI.ShowSkipButton();
                }
                else
                {
                    UI.HideSkipButton();
                }
            }
        }
Example #10
0
 public void TransferToken(Type tokenType, GenericShip targetShip, Action callback, Players.GenericPlayer assigner = null)
 {
     Host.Tokens.RemoveToken(
         tokenType,
         () => targetShip.Tokens.AssignToken(tokenType, callback, assigner)
         );
 }