public static BaseGame StartGame(List<GamePlayer> red, List<GamePlayer> blue, int mapIndex,eRoomType roomType, eTeamType teamType, eGameType gameType, int timeType) { try { int index = MapMgr.GetMapIndex(mapIndex,(byte)roomType); Map map = MapMgr.CloneMap(index); if (map != null) { BaseGame game = new BaseGame(red, blue, map,roomType,teamType,gameType,timeType); lock (m_games) { m_games.Add(game); } game.Prepare(); return game; } else { return null; } } catch (Exception e) { log.Error("Create game error:", e); return null; } }
public BaseGame(List <GamePlayer> red, List <GamePlayer> blue, Map map, eRoomType roomType, eTeamType teamType, eGameType gameType, int timeType) { m_players = new Dictionary <GamePlayer, Player>(); m_redTeam = new List <Player>(); m_blueTeam = new List <Player>(); m_roomType = roomType; m_gameType = gameType; m_teamType = teamType; m_random = new Random(); m_redAvgLevel = 0; foreach (GamePlayer player in red) { Player fp = new Player(player, this, 1); fp.Direction = m_random.Next(0, 1) == 0 ? 1 : -1; m_players.Add(player, fp); m_redTeam.Add(fp); player.CurrentGame = this; m_redAvgLevel += player.PlayerCharacter.Grade; fp.Died += new PlayerEventHandle(Player_Died); } m_redAvgLevel = m_redAvgLevel / m_redTeam.Count; m_blueAvgLevel = 0; foreach (GamePlayer player in blue) { Player fp = new Player(player, this, 2); fp.Direction = m_random.Next(0, 1) == 0 ? 1 : -1; m_players.Add(player, fp); m_blueTeam.Add(fp); player.CurrentGame = this; m_blueAvgLevel += player.PlayerCharacter.Grade; fp.Died += new PlayerEventHandle(Player_Died); } m_blueAvgLevel = m_blueAvgLevel / blue.Count; m_map = map; m_actions = new ArrayList(); PhysicalId = 0; switch (m_roomType) { case eRoomType.Freedom: m_mapType = eMapType.Normal; break; case eRoomType.Match: m_mapType = eMapType.PairUp; break; default: m_mapType = eMapType.Normal; break; } m_timeType = timeType; m_tempBox = new List <Box>(); m_tempPoints = new List <Point>(); Cards = new int[8]; GameState = eGameState.Inited; }
public BaseGame(List<GamePlayer> red, List<GamePlayer> blue, Map map,eRoomType roomType,eTeamType teamType, eGameType gameType, int timeType) { m_players = new Dictionary<GamePlayer, Player>(); m_redTeam = new List<Player>(); m_blueTeam = new List<Player>(); m_roomType = roomType; m_gameType = gameType; m_teamType = teamType; m_random = new Random(); m_redAvgLevel = 0; foreach (GamePlayer player in red) { Player fp = new Player(player, this, 1); fp.Direction = m_random.Next(0, 1) == 0 ? 1 : -1; m_players.Add(player, fp); m_redTeam.Add(fp); player.CurrentGame = this; m_redAvgLevel += player.PlayerCharacter.Grade; fp.Died += new PlayerEventHandle(Player_Died); } m_redAvgLevel = m_redAvgLevel / m_redTeam.Count; m_blueAvgLevel = 0; foreach (GamePlayer player in blue) { Player fp = new Player(player, this, 2); fp.Direction = m_random.Next(0, 1) == 0 ? 1 : -1; m_players.Add(player, fp); m_blueTeam.Add(fp); player.CurrentGame = this; m_blueAvgLevel += player.PlayerCharacter.Grade; fp.Died += new PlayerEventHandle(Player_Died); } m_blueAvgLevel = m_blueAvgLevel / blue.Count; m_map = map; m_actions = new ArrayList(); PhysicalId = 0; switch (m_roomType) { case eRoomType.Freedom: m_mapType = eMapType.Normal; break; case eRoomType.Match: m_mapType = eMapType.PairUp; break; default: m_mapType = eMapType.Normal; break; } m_timeType = timeType; m_tempBox = new List<Box>(); m_tempPoints = new List<Point>(); Cards = new int[8]; GameState = eGameState.Inited; }
public static BaseGame StartPVEGame(List<IGamePlayer> player, int mapIndex, eRoomType roomType, eTeamType teamType, eGameType gameType, int timeType) { try { int index = MapMgr.GetMapIndex(mapIndex, (byte)roomType, m_serverId); index = 1072; Map map = MapMgr.CloneMap(index); if (map != null) { PVEGame game = new PVEGame(m_gameId ++,player, map, roomType, teamType, gameType, timeType); lock (m_games) { m_games.Add(game); } game.Prepare(); return game; } else { return null; } } catch (Exception e) { log.Error("Create game error:", e); return null; } }