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(); } }
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 { } } }
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(); } } }
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(); } }