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); }
public ObjectsManager(GamePackage pkg) { this.objectsCounter = 0; this.package = pkg; definitions = new Dictionary <string, ObjectDefinition>(); }
public GameRoomLoader(GamePackage pkg) { package = pkg; }