예제 #1
0
        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;
            }
        }
예제 #2
0
        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;
        }
예제 #3
0
        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;
        }
예제 #4
0
        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;
            }
        }