Esempio n. 1
0
        public GameSession(GamePackage gamePkg)
        {
            this.package = gamePkg;

            Id           = Guid.NewGuid();
            GameId       = gamePkg.Name;
            StartedAt    = DateTime.Now;
            Players      = new List <Player>();
            PropertyBag  = new Dictionary <string, string>();
            ChatMessages = new List <TextChatMessage>();

            messagesProcessor = new GameMessagesProcessor(this);
            messagesProcessor.MessageProcessed += MessageProcessed;
        }
        /// <summary>
        /// Создать новую игровую сессию
        /// </summary>
        /// <param name="name">Название игры</param>
        /// <param name="gameMaster"></param>
        /// <returns>Новый игровой сеанс</returns>
        public async Task <GameSession> StartNewGame(string name, GameMaster master)
        {
            var gamePkg = new GamePackage(name);

            var objManager = new ObjectsManager(gamePkg);
            await objManager.LoadDefinitions();

            await objManager.LoadClientResources();

            var newSession = new GameSession(gamePkg)
            {
                Room            = await(new GameRoomLoader(gamePkg)).Load(objManager),
                Master          = master,
                ResourceManager = objManager
            };

            // Запустить сценарий игры
            newSession.StartInteractivity();

            activeSessions.Add(newSession);

            return(newSession);
        }
Esempio n. 3
0
 public ObjectsManager(GamePackage pkg)
 {
     this.objectsCounter = 0;
     this.package        = pkg;
     definitions         = new Dictionary <string, ObjectDefinition>();
 }
 public GameRoomLoader(GamePackage pkg)
 {
     package = pkg;
 }