예제 #1
0
 public void ConnectToRoom(IRoomInformations RoomToConnect)
 {
     if (RoomToConnect.OwnerServerIP != Host.IP)
     {
         ChangeHost(IPAddress.Parse(RoomToConnect.OwnerServerIP), RoomToConnect.OwnerServerPort);
     }
 }
예제 #2
0
        protected internal override void Execute(IOnlineConnection Sender)
        {
            IRoomInformations CreatedRoom = Owner.Database.GenerateNewRoom(RoomName, "", Owner.IP, Owner.Port);

            CreatedGroup = new ClientGroup(CreatedRoom);
            CreatedGroup.Room.AddPlayer(Sender);

            Owner.DicLocalRoom.Add(CreatedRoom.RoomID, CreatedGroup);
            Owner.DicAllRoom.Add(CreatedRoom.RoomID, CreatedRoom);
            Owner.ListPlayerToRemove.Add(Sender);

            Owner.SharedWriteBuffer.ClearWriteBuffer();
            Owner.SharedWriteBuffer.WriteScript(new RoomListScriptServer(Owner, new List <IRoomInformations>()
            {
                CreatedRoom
            }));

            foreach (IOnlineConnection ActivePlayer in Owner.ListPlayer)
            {
                if (ActivePlayer == Sender)
                {
                    continue;
                }

                ActivePlayer.SendWriteBuffer();
            }

            Sender.Send(new SendRoomIDScriptServer(CreatedRoom.RoomID));
        }
예제 #3
0
        public void RemoveRoom(string RoomID)
        {
            IList <DateTimeOffset> RoomKeys = ListRoom.Keys;

            for (int R = 0; R < RoomKeys.Count; ++R)
            {
                for (int i = 0; i < ListRoom[RoomKeys[R]].Count; i++)
                {
                    IRoomInformations ActiveRoom = ListRoom[RoomKeys[R]][i];
                    if (ActiveRoom.RoomID == RoomID)
                    {
                        ListRoom[RoomKeys[R]].RemoveAt(i);
                        break;
                    }
                }

                if (ListRoom[RoomKeys[R]].Count == 0)
                {
                    ListRoom.Remove(RoomKeys[R]);
                }
            }
        }
예제 #4
0
 public JoinRoomFailedScriptServer(string RoomID, IRoomInformations RoomToJoin)
     : base("Join Room Failed")
 {
     this.RoomID     = RoomID;
     this.RoomToJoin = RoomToJoin;
 }
예제 #5
0
 public ClientGroup(IRoomInformations Room)
 {
     this.Room = Room;
 }
 public AskChangeRoomSubtypeScriptServer(IRoomInformations Owner)
     : base(ScriptName)
 {
     this.Owner = Owner;
 }
예제 #7
0
 public GameClientGroup CreateFromTemplate(IRoomInformations Room)
 {
     return(new BattleMapClientGroup(Room));
 }
예제 #8
0
 private BattleMapClientGroup(IRoomInformations Room)
 {
     this._Room = Room;
 }
예제 #9
0
 public AskChangeMapScriptServer(IRoomInformations Owner, Server OnlineServer)
     : base(ScriptName)
 {
     this.Owner        = Owner;
     this.OnlineServer = OnlineServer;
 }
 public GameClientGroup CreateFromTemplate(IRoomInformations Room)
 {
     return(new TripleThunderClientGroup(Room));
 }
 private TripleThunderClientGroup(IRoomInformations Room)
 {
     this._Room = Room;
 }
예제 #12
0
 public LeaveRoomScriptServer(IRoomInformations Owner, Server OnlineServer)
     : base(ScriptName)
 {
     this.Owner        = Owner;
     this.OnlineServer = OnlineServer;
 }
예제 #13
0
        public ClientGroup TransferRoom(string RoomID)
        {
            IRoomInformations UpdatedRoom = Database.TransferRoom(RoomID, IP);

            return(new ClientGroup(UpdatedRoom));
        }