Beispiel #1
0
 private void TryStartGame()
 {
     if (initingGame.CanComplete)
     {
         Room.Battling = true;
         Server.Send(RoomS2C.ChangeBattling(Room.Id));
         if (Room.Settings.Mode.PlayersPerTeam() == 2)
         {
             Server.GetUser(Room[0, 0].Id).Send(new PartnerInfoS2C(initingGame.GetPokemons(0, 1)));
             Server.GetUser(Room[0, 1].Id).Send(new PartnerInfoS2C(initingGame.GetPokemons(0, 0)));
             Server.GetUser(Room[1, 0].Id).Send(new PartnerInfoS2C(initingGame.GetPokemons(1, 1)));
             Server.GetUser(Room[1, 1].Id).Send(new PartnerInfoS2C(initingGame.GetPokemons(1, 0)));
         }
         rig                 = initingGame;
         game                = initingGame.Complete();
         initingGame         = null;
         game.GameUpdated   += OnGameUpdate;
         game.GameEnd       += EndGame;
         game.TimeUp        += OnTimeUp;
         game.WaitingNotify += OnWaitingForInput;
         game.Error         += OnError;
         Send(new GameStartS2C(game.GetFragment()));
         game.Start();
     }
 }
Beispiel #2
0
 public static void Add(Room room, InitingGame ig)
 {
     if (room != null && ig != null && IgPath != null)
     {
         try
         {
             ((Action <int, InitingGame>)AddInitingGameImplement).BeginInvoke(room.Id, ig, Callback, null);
         }
         catch { }
     }
 }
Beispiel #3
0
 public void Prepare(ServerUser su, IPokemonData[] pokemons)
 {
     if (game == null)
     {
         if (initingGame == null)
         {
             initingGame = new InitingGame(++GameId, Room.Settings);
         }
         var seat = su.User.Seat;
         if (initingGame.Prepare(seat.TeamId(), seat.TeamIndex(), pokemons))
         {
             Send(new SetPrepareS2C(seat, true));
             TryStartGame();
         }
     }
 }
Beispiel #4
0
        private static void AddInitingGameImplement(int room, InitingGame ig)
        {
            var pms = ig.GetPokemons(0, 0);

            lock (igLocker)
            {
                if (Ig == null)
                {
                    Ig = new StreamWriter(IgPath, true);
                }
                if (pms != null)
                {
                    foreach (var pm in pms)
                    {
                        Append(Ig, new object[] { room, ig.Id, ig.Settings.Mode, "00", pm.Form.Species.Number, pm.Form.Index, pm.Nature, pm.AbilityIndex, pm.Item, pm.Ev.Hp, pm.Ev.Atk, pm.Ev.SpAtk, pm.Ev.Def, pm.Ev.SpDef, pm.Ev.Speed });
                        foreach (var m in pm.Moves)
                        {
                            Append(Ig, m.Move.Id);
                        }
                        Ig.WriteLine();
                    }
                }
                if (ig.Settings.Mode.PlayersPerTeam() == 2)
                {
                    pms = ig.GetPokemons(0, 1);
                    if (pms != null)
                    {
                        foreach (var pm in pms)
                        {
                            Append(Ig, new object[] { room, ig.Id, ig.Settings.Mode, "01", pm.Form.Species.Number, pm.Form.Index, pm.Nature, pm.AbilityIndex, pm.Item, pm.Ev.Hp, pm.Ev.Atk, pm.Ev.SpAtk, pm.Ev.Def, pm.Ev.SpDef, pm.Ev.Speed });
                            foreach (var m in pm.Moves)
                            {
                                Append(Ig, m.Move.Id);
                            }
                            Ig.WriteLine();
                        }
                    }
                    pms = ig.GetPokemons(1, 1);
                    if (pms != null)
                    {
                        foreach (var pm in pms)
                        {
                            Append(Ig, new object[] { room, ig.Id, ig.Settings.Mode, "11", pm.Form.Species.Number, pm.Form.Index, pm.Nature, pm.AbilityIndex, pm.Item, pm.Ev.Hp, pm.Ev.Atk, pm.Ev.SpAtk, pm.Ev.Def, pm.Ev.SpDef, pm.Ev.Speed });
                            foreach (var m in pm.Moves)
                            {
                                Append(Ig, m.Move.Id);
                            }
                            Ig.WriteLine();
                        }
                    }
                }
                pms = ig.GetPokemons(1, 0);
                if (pms != null)
                {
                    foreach (var pm in pms)
                    {
                        Append(Ig, new object[] { room, ig.Id, ig.Settings.Mode, "10", pm.Form.Species.Number, pm.Form.Index, pm.Nature, pm.AbilityIndex, pm.Item, pm.Ev.Hp, pm.Ev.Atk, pm.Ev.SpAtk, pm.Ev.Def, pm.Ev.SpDef, pm.Ev.Speed });
                        foreach (var m in pm.Moves)
                        {
                            Append(Ig, m.Move.Id);
                        }
                        Ig.WriteLine();
                    }
                }
                Ig.Flush();
            }
        }