예제 #1
0
            internal BattleGUI(ScreenConstants screen, GUIManager manager, 
            Dialog messageFrame, MessageBox messageBox, 
            IMenuWidget<MainMenuEntries> mainWidget, 
            IMenuWidget<Move> moveWidget, IMenuWidget<Pokemon> pokemonWidget, 
            IMenuWidget<Item> itemWidget, IBattleStateService battleState, 
            BattleData data)
        {
            this.battleState = battleState;
            playerId = data.PlayerId;
            ai = data.Clients.First(id => !id.IsPlayer);
            this.moveWidget = moveWidget;
            this.itemWidget = itemWidget;
            this.mainWidget = mainWidget;
            this.pokemonWidget = pokemonWidget;

            this.messageBox = messageBox;
            this.messageFrame = messageFrame;

            InitMessageBox(screen, manager);

            InitMainMenu(screen, manager);
            InitAttackMenu(screen, manager);
            InitItemMenu(screen, manager);
            InitPKMNMenu(screen, manager);

        }
예제 #2
0
        public BattleGraphicController(ScreenConstants screen, 
            PlayerPokemonDataView playerView, AIPokemonDataView aiView, 
            PokemonSprite playerSprite, PokemonSprite aiSprite,
            BattleData data)
        {
            var player = data.PlayerId;
            var ai = data.Clients.First(id => !id.IsPlayer);

            playerSprite.IsPlayer = true;
            aiSprite.IsPlayer = false;

            dataViews[player] = playerView;
            dataViews[ai] = aiView;

            sprites[player] = playerSprite;
            sprites[ai] = aiSprite;

            foreach (var view in dataViews.Values)
                view.OnHPUpdated += delegate { OnHPSet(this, null); };

            foreach (var sprite in sprites.Values)
                sprite.OnPokemonAppeared += delegate { OnPokemonSet(this, null); };

            initAIGraphic(aiView, aiSprite, screen);
            initPlayerGraphic(playerView, playerSprite, screen);
        }
예제 #3
0
 public BattleGUI(ScreenConstants screen, GUIManager manager, 
     Dialog messageFrame, MessageBox messageBox, 
     MainMenuWidget mainWidget,
     MoveMenuWidget moveWidget, PokemonMenuWidget pokemonWidget,
     ItemMenuWidget itemWidget, IBattleStateService battleState,
     BattleData data) :
     this(screen, manager, messageFrame, messageBox, (IMenuWidget<MainMenuEntries>)mainWidget, moveWidget, pokemonWidget, itemWidget, battleState, data)
 {}
예제 #4
0
        public void Init(BattleData data)
        {
            commands.Clear();
            IsDone = false;
            foreach (var c in data.Clients)
                commands[c] = null;

            clientCnt = commands.Count;
        }
예제 #5
0
        public override void Update(BattleData data)
        {
            executer.Data = data;

            var commands = ScheduleCommands(data);
            commands.ForEach(c => c.Execute(executer));

            data.ClearCommands();
            IsDone = true;
        }
예제 #6
0
        public void Update(BattleData data)
        {
            if (clientCnt != 0)
                return;

            foreach (var c in commands)
                data.SetCommand(c.Key, c.Value);

            commands.Clear();

            IsDone = true;
        }
예제 #7
0
        public override void Init(BattleData data)
        {
            IsDone = false;

            clients = data.Clients
                .Where(id => NeedsPokemon(data, id))
                .ToDictionary(id => id, id => (Pokemon)null);

            clientsLeft = clients.Count;

            IsDone = (clientsLeft == 0);
        }
예제 #8
0
        internal BattleStateComponent(BattleData data, IBattleState actionState, IBattleState characterSetState, IBattleState executionState, IEventCreator eventCreator)
        {
            actionState.CheckNull("actionState");
            characterSetState.CheckNull("characterSetState");
            executionState.CheckNull("executionState");
            eventCreator.CheckNull("eventCreator");

            ActionState = actionState;
            CharacterSetState = characterSetState;
            ExecutionState = executionState;
            this.eventCreator = eventCreator;
            this.data = data;
        }
예제 #9
0
        public override void Update(BattleData data)
        {
            if (clientsLeft != 0)
                return;

            foreach (var c in clients)
            {
                var pokemon = data.GetPokemon(c.Key);
                pokemon.Pokemon = c.Value;
                eventCreator.SetPokemon(c.Key, pokemon);
            }

            IsDone = true;
        }
예제 #10
0
 public abstract void Update(BattleData data);
예제 #11
0
 public virtual void Init(BattleData data)
 {
 }
예제 #12
0
 public BattleStateComponent(BattleData data, WaitForActionState actionState, WaitForCharState characterSetState, ExecuteState executionState, IEventCreator eventCreator) :
     this(data, (IBattleState)actionState, characterSetState, executionState, eventCreator) { }
예제 #13
0
 private WaitForCharState CreateWaitForCharState(BattleData battleData)
 {
     var state = CreateWaitForCharState();
     state.Init(battleData);
     return state;
 }
예제 #14
0
 public override void Init(BattleData data)
 {
     IsDone = false;
 }
예제 #15
0
 private bool NeedsPokemon(BattleData data, ClientIdentifier id)
 {
     var pkmn = data.GetPokemon(id);
     return pkmn.Pokemon == null || pkmn.Condition == StatusCondition.KO;
 }
예제 #16
0
 private List<ICommand> ScheduleCommands(BattleData data)
 {
     scheduler.ClearCommands();
     scheduler.AppendCommands(data.Commands);
     return scheduler.ScheduleCommands().ToList();
 }
예제 #17
0
 public TestFactory()
 {
     PlayerID = new ClientIdentifier();
     AIID = new ClientIdentifier();
     BattleData = new BattleData(PlayerID, AIID);
 }