Beispiel #1
0
        public Room(IShamanLogger logger, ITaskSchedulerFactory taskSchedulerFactory, IRoomManager roomManager,
                    IRoomPropertiesContainer roomPropertiesContainer,
                    IRoomControllerFactory roomControllerFactory, IPacketSender packetSender,
                    Guid roomId, IRoomStateUpdater roomStateUpdater)
        {
            _logger                  = logger;
            _roomId                  = roomId;
            _roomStateUpdater        = roomStateUpdater;
            _createdOn               = DateTime.UtcNow;
            _taskScheduler           = taskSchedulerFactory.GetTaskScheduler();
            _roomPropertiesContainer = roomPropertiesContainer;
            _packetSender            = packetSender;

            _roomStats = new RoomStats(GetRoomId(), roomPropertiesContainer.GetPlayersCount());

            _roomController =
                roomControllerFactory.GetGameModeController(
                    new RoomContext(this), _taskScheduler, roomPropertiesContainer);

            _ = _taskScheduler.ScheduleOnInterval(() =>
            {
                var maxQueueSIze = _packetSender.GetMaxQueueSIze();
                _roomStats.AddMaxQueueSize(maxQueueSIze);
                _roomStats.AddAvgQueueSize(_packetSender.GetAverageQueueSize());
            }, 0, 1000, true);

            _ = _taskScheduler.ScheduleOnInterval(async() => await SendRoomStateUpdate(), 0, 2000, true);
        }
Beispiel #2
0
 private void OnJoinedRoom(object sender, IRoomController e)
 {
     this.prefabs.RoomLobbyFrame.SetActive(true);
     this.Manager = new RoomManager(e, this.currentUserId, this.prefabs);
     this.Manager.DisplayMessageEvent += (_, msg) => this.DisplayMessage(msg);
     this.Manager.Start();
     joined = true;
 }
Beispiel #3
0
 private void OnRoomCreated(object sender, IRoomController e)
 {
     Log("{0}: Room created", e.ToString());
     e.MatchCreatedEvent += OnMatchCreated;
     e.RoomEndedEvent    += OnRoomEnded;
     e.RoomStartedEvent  += OnRoomStarted;
     e.UserJoinedEvent   += OnUserJoinedRoom;
     e.UserLeftEvent     += OnUserLeftRoom;
 }
Beispiel #4
0
        public RoomManager(IRoomController controller, UserId currentUserId, GamePrefabs prefabs)
        {
            this.prefabs       = prefabs;
            this.currentUserId = currentUserId;
            this.Controller    = controller;
            this.MatchList     = new List <MatchManager>();

            //this.prefabs.StartMatchButton.onClick.AddListener(OnStartMatchClicked);
            Controller.MatchCreatedEvent += OnMatchCreated;
            Controller.RoomStartedEvent  += OnRoomStarted;
            Controller.RoomEndedEvent    += OnRoomEnded;
            Controller.UserJoinedEvent   += OnUserJoined;
            Controller.UserLeftEvent     += OnUserLeft;
            this.type = GameType.Single;

            this.prefabs.SetupMatchButton.onClick.AddListener(OnSetupMatchClicked);
            this.prefabs.ReturnToListButton.onClick.AddListener(OnReturnToListClicked);
            this.prefabs.CreateMatchButton.onClick.AddListener(OnCreateMatchClicked);

            //TODO: Move AI management
            if (controller is LocalRoomController)
            {
                this.aiPlayers = 5;

                this.aiList = new List <UserState>();
                if (this.Controller is LocalRoomController Local)
                {
                    this.currentUser = Local.AddPlayer(this.currentUserId);
                    for (int i = 0; i < aiPlayers; i++)
                    {
                        var user = new UserId();
                        aiList.Add(Local.AddPlayer(new UserId()));
                    }
                }

                for (int i = 0; i < 3; i++)
                {
                    Controller.CreateMatch(new MatchOptions()
                    {
                        Name        = "Match " + i.ToString(),
                        Style       = MatchStyle.Rounds,
                        Rounds      = 3,
                        TimerLength = 10f,
                    });
                }
            }

            var existing = this.Controller.GetMatches();

            foreach (var match in existing)
            {
                this.OnMatchCreated(this, (this.Controller, match));
            }
        }
Beispiel #5
0
        private void OnRoomCreated(object sender, IRoomController e)
        {
            this.roomlist.Join(e.State.Id);

            e.MatchCreatedEvent += OnMatchCreated;
            if (create)
            {
                e.CreateMatch(new Common.Models.MatchOptions()
                {
                    Name        = "Test match",
                    Rounds      = 3,
                    Style       = Common.Models.MatchStyle.Rounds,
                    TimerLength = 20,
                });
            }
        }
Beispiel #6
0
 public AuthorityRoomDecorator(IRoomController roomController, String role)
 {
     this.RoomController             = roomController;
     this.Role                       = role;
     AuthorizedUsers                 = new Dictionary <string, List <string> >();
     AuthorizedUsers["AddEquipment"] = new List <string>()
     {
         "Director"
     };
     AuthorizedUsers["CheckHospitalizationDurationInRoom"] = new List <string>()
     {
         "Director", "Doctor"
     };
     AuthorizedUsers["CheckRoomCodeUnique"] = new List <string>()
     {
         "Director"
     };
     AuthorizedUsers["Delete"] = new List <string>()
     {
         "Director"
     };
     AuthorizedUsers["Edit"] = new List <string>()
     {
         "Director"
     };
     AuthorizedUsers["GetRoomsContainingEquipment"] = new List <string>()
     {
         "Director"
     };
     AuthorizedUsers["GetRoomsForHospitalization"] = new List <string>()
     {
         "Doctor"
     };
     AuthorizedUsers["Save"] = new List <string>()
     {
         "Director"
     };
     AuthorizedUsers["Get"] = new List <string>()
     {
         "Director", "Doctor", "Secretary"
     };
     AuthorizedUsers["GetAll"] = new List <string>()
     {
         "Director", "Doctor", "Secretary"
     };
 }
Beispiel #7
0
    public void DestroyModuleGroup()
    {
        // Controller.I.OnAppPause -= DestroyModuleGroup;

        //killing non mb
        RoomReferences.I       = null;
        CoreGameplay.I         = null;
        RoomUserView.Manager.I = null;
        RoomSettings.I         = null;

        //killing mb
        Object.Destroy(GameObject.Find("Room"));

        // Controller.I.RemoveModuleRpcs(GetType().ToString());

        I = null;

        Destroyed?.Invoke();
    }
Beispiel #8
0
 public RoomUser(IRoomController roomController, IUserController userController)
 {
     this.roomController = roomController;
     this.userController = userController;
 }
Beispiel #9
0
 public RoomsController(IRoomController roomController)
 {
     _roomController = roomController;
 }
Beispiel #10
0
 public RoomView(IRoomController controller)
 {
     _controller = controller;
 }
Beispiel #11
0
 public GetRoomEntryDataEvent(IRoomController roomController)
 {
     _roomController = roomController;
 }
 public OpenFlatConnectionEvent(IRoomController roomController)
 {
     _roomController = roomController;
 }
Beispiel #13
0
 public RoomHub(IRoomController roomController)
 {
     _roomController = roomController;
 }
Beispiel #14
0
 public RoomApiController(IRoomController roomController, IHubContext <ChatHub> chatHub)
 {
     _roomController = roomController;
     _chatHub        = chatHub;
 }
Beispiel #15
0
 public void SetOnGameStateCallback(IRoomController room)
 {
     _room = room;
 }
Beispiel #16
0
 private void OnRoomEnded(object sender, IRoomController e)
 {
     this.DisplayMessage(string.Format("Ended room: '{0}'", e.Name));
 }
Beispiel #17
0
 private void OnRoomStarted(object sender, IRoomController e)
 {
     this.DisplayMessage(string.Format("Started room: {0}", e.Name));
 }
Beispiel #18
0
 private RoomController()
 {
     I = this;
     Controller.I.AddRpcContainer(this);
 }