void FixedUpdate() { if (_actionTimer != null) { _actionTimer.update(); } else if (_initialized && !this.MenuBounds.Running) { if (next()) { _currentMenu.HighlightNext(); highlight(); } else if (prev()) { _currentMenu.HighlightPrev(); highlight(); } else if (MenuInput.Confirm) { Menu.Action action = _currentMenu.SelectCurrent(); if (action.Type == Menu.ActionType.Custom) { handleAction(this.ElementVisuals[_currentHighlight].HandleCustomAction(action)); } else { handleAction(action); } } else if (MenuInput.Cancel) { if (_pastMenuStack.Count > 0) { configureForState(_pastMenuStack.Pop()); } else { handleAction(this.CancelAction); } } else if (_currentMenu.CurrentElementAllowsCycling()) { if (cycleNext()) { cycleCurrent(1); } else if (cyclePrev()) { cycleCurrent(-1); } } } }
private void cycleCurrent(int dir) { Menu.Action action = _currentMenu.SelectCurrent(); if (action.Type == Menu.ActionType.Custom) { handleAction(this.ElementVisuals[_currentHighlight].HandleCustomAction(action, dir), dir); } else { handleAction(action, dir); } }
private void handleAction(Menu.Action action, int dir = 1) { switch (action.Type) { default: case Menu.ActionType.None: break; case Menu.ActionType.OpenMenu: _pastMenuStack.Add(_currentMenu.Name); configureForState(action.Param); break; case Menu.ActionType.SceneTransition: this.Hide(); _actionTimer = new Timer(this.SceneTransitionDelay, false, true, onDelayedAction); _timerParam = action.Param; _changingScene = true; LocalEventNotifier.Event e = new LocalEventNotifier.Event(); e.Name = this.EndSceneEvent; GlobalEvents.Notifier.SendEvent(e); break; case Menu.ActionType.CloseMenuWithEvent: this.Hide(); _actionTimer = new Timer(this.EventSendDelay, false, true, onDelayedAction); _timerParam = action.Param; break; case Menu.ActionType.ChangeValue: OptionsValues.ChangeValue(action.Param, dir); refreshState(); break; case Menu.ActionType.Reload: for (int i = 0; i < _pastMenuStack.Count; ++i) { menuByStateName(_pastMenuStack[i]).Reload(); } _currentMenu.Reload(); refreshState(); break; } }
public abstract Menu.Action HandleCustomAction(Menu.Action action, int dir = 0);
public static void Updates() { bool end = false; while (!end) { Menu.Action nextact = Menu.GetNextAction(); switch (nextact) { case Menu.Action.FIGHT: //debut combat Menu.Fight fight = Menu.GetFight(); Combat combat; if (fight == Menu.Fight.WILD) { Trainer wild = new Trainer("Wild pokemon", 0); wild.CatchAPokemon(_index.GetRandomPokemon()); combat = new Combat(Trainer, wild, true); } else { combat = new Combat(MyGame.Trainer, MyGame.Opponent, false); } //combatmusic(); bool isWon = combat.CombatLoop(); //fin combat et retour au menu //music(); if (!isWon) { Console.WriteLine("{0} scurried to a pokemon center, \nprotecting the exhausted and fainted pokemon from further harm", Trainer.Name); Trainer.Heal(); } break; case Menu.Action.SHOP: //storemusic(); Menu.Shop myshop = Menu.Getshop(); switch (myshop) { case Menu.Shop.SHOP: Console.ReadLine(); // music(); break; case Menu.Shop.POKECENTER: _trainer.Heal(); Console.WriteLine("Your pokemons have been healed"); Console.ReadLine(); // music(); break; case Menu.Shop.HOMEPAGE: //music(); Menu.GetNextAction(); break; } break; case Menu.Action.SHOW: Menu.Stat mystat = Menu.GetStat(); switch (mystat) { case Menu.Stat.MYPOKEMON: _trainer.MyPokemon(); Console.ReadLine(); Menu.GetStat(); break; case Menu.Stat.MYID: _trainer.WhoAmI(); _trainer.Describe(); Console.ReadLine(); Menu.GetStat(); break; case Menu.Stat.HOMEPAGE: Menu.GetNextAction(); break; default: Menu.GetStat(); break; } break; case Menu.Action.OPTION: Menu.Option nextoption = Menu.GetOption(); switch (nextoption) { case Menu.Option.QUIT: end = true; Console.WriteLine("goodbye my friend"); break; case Menu.Option.PAUSE: Console.Clear(); Console.WriteLine(); Console.WriteLine(" ****************************************************************"); Console.WriteLine(" * *"); Console.WriteLine(" * *GAME PAUSED* *"); Console.WriteLine(" * *"); Console.WriteLine(" * *"); Console.WriteLine(" ****************************************************************"); Console.WriteLine(); Console.WriteLine(" <-/"); Console.ReadLine(); break; case Menu.Option.RESTART: Console.Clear(); Welcome(); Getmyfirstpokemon(); break; case Menu.Option.HOMEPAGE: Menu.GetNextAction(); break; default: Menu.GetOption(); break; } break; default: Menu.GetNextAction(); break; } } }
public override Menu.Action HandleCustomAction(Menu.Action action, int dir = 0) { return(new Menu.Action()); }