Esempio n. 1
0
        /// <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
            }
        }
Esempio n. 2
0
        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();
            }
        }