public virtual void SetExecute(Execute_MenuOption e)
 {
 }
    private void Update()
    {
        if (Engine.InputManager.Attach != this)
        {
            return;
        }
        switch (State)
        {
        case TargetableActionState.WaitingForTileSelect:
            Engine.MapCursor.DelegatedInput();
            if (Engine.InputManager.Accept)
            {
                Engine.InputManager.Accept = false;
                Tile TargetTile = Engine.MapCursor.GetTile();
                if (TargetTile.CurrentlySelectable)
                {
                    TargetTile = Engine.MapCursor.GetTile();
                    HighlightAffectedTiles(TargetTile);
                    Caster.gameObject.GetComponent <UnitPanel>().ModeOverride = 1;
                    State = TargetableActionState.WaitingForTileConfirm;

                    if (TileOccupier.GetTileOccupant(TargetTile) != null)
                    {
                        CombatUnit target = TileOccupier.GetTileOccupant(TargetTile).GetComponent <CombatUnit>();
                        if (target)
                        {
                            PredictEffect(target);
                        }
                    }
                }
                else
                {
                    Message m = new GameObject().AddComponent <Message>();
                    m.BoxMessageLabel = "Check";
                    m.BoxMessage      = "Select within range.";
                    m.ReturnControlTo = this;
                    Engine.AssignControl(m);
                }
            }
            else if (Engine.InputManager.Cancel)
            {
                Engine.InputManager.Cancel = false;
                State = TargetableActionState.Inactive;
                Menu.ShowAllMenus();
                Engine.AssignControl(Menu);
                Engine.TileManager.ClearHighlights();     //Engine.PathManager.ClearAll(false);
                Engine.CameraManager.SetTargetPosition(Caster.transform.position, .5f);
                Engine.MapCursor.X = Caster.gameObject.GetComponent <TileOccupier>().X;
                Engine.MapCursor.Y = Caster.gameObject.GetComponent <TileOccupier>().Y;
                Engine.MapCursor.GoToTile();
            }
            break;

        case TargetableActionState.WaitingForTileConfirm:
            if (Engine.InputManager.Accept)
            {
                Engine.InputManager.Accept = false;
                Menu m = new GameObject().AddComponent <Menu>();
                m.Attach          = Caster.gameObject;
                m.Top             = .5f;
                m.Left            = .7f;
                m.name            = "Confirm Effect";
                m.ReturnControlTo = this;
                Execute_MenuOption e = m.gameObject.AddComponent <Execute_MenuOption>();
                SetExecute(e);
                m.AddMenuOption("Execute", e);
                NoExecute_MenuOption ne = m.gameObject.AddComponent <NoExecute_MenuOption>();
                m.AddMenuOption("Quit", ne);
            }
            if (Engine.InputManager.Cancel)
            {
                Engine.InputManager.Cancel = false;
                State = TargetableActionState.WaitingForTileSelect;

                Engine.TileManager.ClearHighlights();
                HighlightSelectableTiles();

                //Prediction[] ps = ReturnControlTo.gameObject.GetComponents<Prediction>();
                //foreach (Prediction p in ps)
                //{
                //    Destroy(p);
                //}
            }
            break;
        }
    }
Example #3
0
 public override void SetExecute(Execute_MenuOption e)
 {
     e.Action = Action;
 }