IEnumerator ConnectProcess(Player player) { Log("ConnectProcess=" + ConnectionState.Start); SetConnectionState(ConnectionState.Start); player.State = ClientState.Connection; yield return(WaitAccept(player, ClientState.Verification)); SetConnectionState(ConnectionState.LoadLevel); yield return(WaitLoadGameLevel()); yield return(WaitAccept(player, ClientState.Register)); SendRegisterAccept(player); SetConnectionState(ConnectionState.LoadData); yield return(CheckAllPlayersConnected(player)); Log("ConnectProcess=" + ConnectionState.End); SetConnectionState(ConnectionState.End); m_Client.AddPlayer(player); player.State = ClientState.Connected; //m_Client.AddPlayer(player); m_Client.CallConnectEvents(new Args() { Event = ProcessConnection.Connected }); }
public GameLevel(InputHandler tInput, GameClient tClient) { Input = tInput; Client = tClient; Client.GetGameMode += Client_GetGameMode; Client.GetGameState += Client_GetGameState; Client.GetBonuses += Client_GetBonuses; if (Client.IsMain) { object[] ParsedLevel = LevelGen.ParseLevel(Level); CurrentLevelWidth = (int)ParsedLevel[0]; CurrentLevelHeight = (int)ParsedLevel[1]; Tiles = (List <GEntity>)ParsedLevel[2]; Entities = (List <GEntity>)ParsedLevel[3]; Spawners = (List <GEntity>)ParsedLevel[4]; foreach (GEntity D in LevelGen.GetLevelDetails(Tiles)) { Tiles.Add(D); } GEntity S = Player.GetSpawnCoordinates(Spawners); Player p = new Player(0, S.X, S.Y); Players.Add(p); CurrentPlayer = p; Client.CurrentPlayer = p; } else { var addPlayerResult = Client.AddPlayer(Players); Tiles = addPlayerResult.Tiles; Entities = addPlayerResult.Entities; Spawners = addPlayerResult.Spawners; Bonuses = addPlayerResult.Bonuses; SetMode((Modes)addPlayerResult.Mode); CurrentLevelWidth = addPlayerResult.LevelWidth; CurrentLevelHeight = addPlayerResult.LevelHeight; CurrentPlayer = addPlayerResult.Player; Client.AddPlayerProgress += Client_AddPlayerProgress; Client.AddPlayerComplete += Client_AddPlayerComplete; } Client.OnBonusRemoved += Client_OnBonusRemoved; Client.Init(Entities, Players); CurrentPlayer.Controllable = true; CenterCameraOnPlayer(); GenerateBackground(); int lw = CurrentLevelWidth * GTile.WIDTH; int lh = CurrentLevelHeight * GTile.HEIGHT; Fog = new GBitmap(lw, lh); BuildingGrid = new GBitmap(lw, lh); UpdateBitmapSize(); Fog.Fill(255, 0, 0, 0); GenerateBuildingGrid(); if (GameComponent.DEV) { for (int i = 0; i < 48; ++i) { CurrentPlayer.AddInvItem(new TurretInv()); CurrentPlayer.AddInvItem(new MineInv()); CurrentPlayer.AddInvItem(new DispenserInv()); } } }