Пример #1
0
    public void reset()
    {
        info      = new RoomInfo();
        conf      = new RoomConf();
        players   = new List <PlayerInfo> ();
        state     = new GameState();
        seats     = new List <SeatInfo> ();
        action    = new GameAction();
        overinfo  = new GameOverInfo();
        histories = new List <GameOverInfo>();

        dissolve = null;
    }
Пример #2
0
        /// <summary>
        /// 广播房间信息以连接
        /// </summary>
        /// <param name="address"></param>
        /// <param name="port"></param>
        /// <param name="gameConf"></param>
        public static byte[] SendRoomConf(string address, int port, GameConf gameConf)
        {
            RoomBroadCast roomBroadCast = new RoomBroadCast();

            roomBroadCast.address = address;
            roomBroadCast.port    = port;
            RoomConf conf = new RoomConf();

            conf.name              = gameConf.Name;
            conf.maxMemCount       = gameConf.MemCount;
            conf.mapType           = (int)gameConf.MapType;
            conf.forceKill         = gameConf.ForceKill;
            roomBroadCast.roomConf = conf;

            return(Serialize(Cmd.BroadcastRoomConf, roomBroadCast));
        }
Пример #3
0
        public static void LoginResponse(Player player, int ownerGuid, List <Player> players, GameConf conf)
        {
            LoginResponse response = new LoginResponse();

            response.guid = player.GUID;
            foreach (Player p in players)
            {
                Member m = new Member();
                m.guid = p.GUID;
                m.name = p.Name;
                response.members.Add(m);
            }

            RoomConf roomConf = new RoomConf();

            roomConf.name        = conf.Name;
            roomConf.mapType     = (int)conf.MapType;
            roomConf.maxMemCount = conf.MemCount;
            roomConf.forceKill   = conf.ForceKill;
            response.roomConf    = roomConf;
            response.ownerGuid   = ownerGuid;

            SerializeAndSend(player, Cmd.LoginResponse, response);
        }
Пример #4
0
    public void prepareReplay(RoomHistory room, GameBaseInfo baseInfo)
    {
        reset();

        info.roomid     = room.room_tag;
        info.numofseats = room.info.seats.Count;
        info.numofgames = baseInfo.index + 1;

        int nSeats = room.info.seats.Count;

        state.state = "playing";

        for (int i = 0; i < nSeats; i++)
        {
            PlayerInfo p = new PlayerInfo();
            p.reset();

            HistorySeats hs = room.info.seats[i];
            p.name      = hs.name;
            p.score     = hs.score;
            p.userid    = hs.uid;
            p.seatindex = i;
            p.online    = true;
            p.ip        = "127.0.0.1";
            p.ready     = true;

            players.Add(p);

            SeatInfo s = new SeatInfo();
            s.reset();

            s.holds   = new List <int>(baseInfo.game_seats[i].holds);
            s.flowers = new List <int>(baseInfo.game_seats[i].flowers);
            seats.Add(s);

            if (p.userid == GameMgr.GetInstance().userMgr.userid)
            {
                seatindex = i;
            }
        }

        if (seatindex < 0)
        {
            seatindex = 0;
        }

        conf = baseInfo.conf;

        int button = baseInfo.button;

        state.button = button;
        state.turn   = button;

        int count = baseInfo.mahjongs.Count;

        foreach (GameSeatInfo seat in baseInfo.game_seats)
        {
            count -= seat.holds.Count + seat.flowers.Count;
        }

        state.numofmj = count;
    }