/// <summary> /// Send event message to game master's listeners (like scenarios) /// </summary> /// <param name="message"></param> /// <param name="args"></param> public void SendEventMessage(IGameMasterMessage message) { if (this.Mode == GameMasterMode.OFFLINE) { return; } if (this.Mode == GameMasterMode.MASTER) { this.MessageReceived?.Invoke(this, new GameMasterEventArgs() { Message = message, Player = Game1.player, IsLocal = true, } ); if (Context.IsMultiplayer) { // TODO: Write logic to send message to clients through net } } if (this.Mode == GameMasterMode.SLAVE) { // TODO: Write logic to send it to server through net } }
private void CheckForComplete(Quest quest, IGameMasterMessage completionMessage = null) { bool completed; switch (this.StoryHelper.GetQuestType(StoryHelper.ResolveId(quest.id.Value))) { case TYPE_RECRUITMENT: // Is recruitment quest done? Check via compare count of current recruited companions stat with goal from quest var ps = this.GameMaster.Data.GetPlayerState(); completed = int.TryParse(quest.completionString.Value, out int goal) && ps.recruited.Count >= goal; break; default: // Is basic quest done? Check via completion string completed = quest.completionString.Value.Equals(completionMessage?.Name); break; } if (completed) { quest.questComplete(); } }