Exemplo n.º 1
0
    public void MsgtoSer_JoinRoom(NetworkConnection cliconn, Msg_JoinRoom msg)
    {
        H.klog($"Got req to join from {cliconn.connectionId} , with name {msg.mename}");
        if (GameMan._ins.roomTab_ser.ContainsKey(msg.idtojoin))
        {   //prepare for message to send
            GameMan.Room  ro       = GameMan._ins.roomTab_ser[msg.idtojoin];
            List <int>    memid    = new List <int>();
            List <string> memname  = new List <string>();
            List <bool>   memstate = new List <bool>();
            //addin LEADER to the list
            //memid.Add(ro.leader.connectionId);
            //memname.Add(ro.nameslist[ro.leader.connectionId]);

            //H.klog($"Memcount = {ro.members.Count}");
            if (ro.members.Count != 0)
            {
                for (int i = 0; i < ro.members.Count; i++)
                {
                    //add conn id to member id list to send to cliconn
                    memid.Add(ro.members[i].connectionId);
                    memname.Add(ro.nameslist[ro.members[i].connectionId]);

                    //send a msg to each member of room, new one join
                    ro.members[i].Send(new Msg_Lobby {
                        playerconnid = cliconn.connectionId, playername = msg.mename, comcode = ComCode.JoinRoom
                    });

                    // adding ready state to right client conn id
                    if (ro.readyflags.ContainsKey(ro.members[i].connectionId))
                    {
                        memstate.Add(ro.readyflags[ro.members[i].connectionId]);
                    }
                    else
                    {
                        memstate.Add(false);
                    }
                }
            }
            //send message to leader to add new mem
            ro.leader.Send(new Msg_Lobby {
                playerconnid = cliconn.connectionId, playername = msg.mename, comcode = ComCode.JoinRoom
            });
            //reset start ui button
            ro.leader.Send(new Msg_Lobby {
                comcode = ComCode.AllReady, enaRoomStart = false
            });
            //H.klog($"Memid count = {memid.Count}");
            Msg_JoinRoom mess = new Msg_JoinRoom {
                idtojoin = msg.idtojoin, members = memid, roommemnames = memname, memcount = memid.Count, memstate = memstate, leaderid = ro.leader.connectionId, leadername = ro.nameslist[ro.leader.connectionId], error = false
            };
            cliconn.Send(mess);

            // adding cliconn as room member on server
            GameMan._ins.AddRoomPlayer_Ser(msg.idtojoin, cliconn, msg.mename);
            //adding player to player table
            GameMan._ins.playerTab_ser.Add(cliconn.connectionId, msg.idtojoin);
        }
    }
Exemplo n.º 2
0
 public void MsgtoCli_JoinRoom(Msg_JoinRoom sermsg)
 {
     // open game room and add itself
     GameMan._ins.SetupRoom_Cli(sermsg.idtojoin);
     // adding leader badge to the room
     GameMan._ins.AddRoomPlayerUI_Cli(sermsg.leaderid, sermsg.leadername, true);
     // add extra lobby player
     if (sermsg.memcount != 0)
     {
         for (int i = 0; i < sermsg.memcount; i++)
         {
             GameMan._ins.AddRoomPlayerUI_Cli(sermsg.members[i], sermsg.roommemnames[i], false, sermsg.memstate[i]);
         }
     }
 }