public override void OnShowArk(BaseSceneGame game, GamePlayer player) { game.Data._fallItemID.Clear(); game.GameState = eGameState.FREE; game.BeginTimer(TIMEOUT * 5); if (game.RoomType == eRoomType.PAIRUP) { PairUpMgr.PairUpGameLeave(game); } }
public override void OnRemovedPlayer(BaseSceneGame game, GamePlayer player) { base.OnRemovedPlayer(game, player); TankData data = game.Data; if (data == null) { if (game.GameState == eGameState.FREE || game.GameState == eGameState.PAIRUP || game.GameState == eGameState.OVER) { if (game.Count == 0) { game.StopTimer(); if (game.RoomType == eRoomType.PAIRUP) { PairUpMgr.RemovefromPairUpMgr(game); } else { game.GameState = eGameState.FREE; } } } return; } if (!data.Players.ContainsKey(player)) { return; } //if (game.GameState == eGameState.PLAY || game.GameState == eGameState.LOAD) //{ // int disLevel = (data.TotalLevel - data.persons[player.CurrentTeamIndex].TotalLevel) / (data.TotalPerson - game.Data.persons[player.CurrentTeamIndex].TeamPerson) - data.persons[player.CurrentTeamIndex].AveLevel; // int GP = (int)(20 * (1 - data.Players[player].TotalKill * 0.1 - disLevel * 0.1) * 0.8); // if (GP > 1 && player.PlayerCharacter.Grade > 10) // player.SetGP(-GP); //} //data.Players[player].State = TankGameState.LOSE; data.Players[player].Lose(); if (game.GameState == eGameState.LOAD && player.CurrentGameState != ePlayerGameState.FINISH) { CanStartGame(game); } if (game.GameState == eGameState.OVER) { byte index = data.GetCards(); if (data.Players[player].IsTakeOut) { GSPacketIn pkg = new GSPacketIn((int)ePackageType.GAME_TAKE_OUT, player.PlayerCharacter.ID); pkg.WriteByte(index); ThreadSafeRandom rand = new ThreadSafeRandom(); int gold = data.GetRandomGold(game.RoomType); player.SetGold(gold, Game.Server.Statics.GoldAddType.Cards); pkg.WriteByte(1); pkg.WriteInt(gold); player.Out.SendTCP(pkg); } } if (!CanStopGame(game, data) && game.GameState == eGameState.PLAY) { if (game.RoomType == eRoomType.PAIRUP) { player.PlayerCharacter.Escape++; player.PlayerCharacter.Total++; } if (player == data.CurrentIndex && game.Data.Count > 0) { SendPlayFinish(game, player); } //else if (game.Data.Count > 0) //{ // int Count = game.Data.GetPlayFinishCount(); // if (Count == game.Data.Count) // SendPlayFinish(game, player); //} } if (game.GameState == eGameState.FREE || game.GameState == eGameState.PAIRUP || game.GameState == eGameState.OVER) { data.Players.Remove(player); } if (game.GameState == eGameState.OVER && 8 - game.Data.ArkCount == game.Data.Count) { OnShowArk(game, player); } if (game.Data.Count == 0) { game.StopTimer(); game.GameState = eGameState.FREE; game.Data.Players.Clear(); if (game.RoomType == eRoomType.PAIRUP) { PairUpMgr.RemovefromPairUpMgr(game); if (game.MatchGame != null) { game.MatchGame.StopTimer(); game.MatchGame.GameState = eGameState.FREE; PairUpMgr.RemovefromPairUpMgr(game.MatchGame); } PairUpMgr.PairUpGameLeave(game); } //else //{ // //game.Data = null; //} } }