예제 #1
0
파일: Actor.cs 프로젝트: wlasser/D3Emu
        /// <summary>
        /// Reads known tags from TagMapEntry and set the proper values.
        /// </summary>
        protected virtual void ReadTags()
        {
            if (this.Tags == null)
            {
                return;
            }

            // load scale from actor data and override it with marker tags if one is set
            this.Scale = ActorData.TagMap.ContainsKey(ActorKeys.Scale) ? ActorData.TagMap[ActorKeys.Scale] : 1;
            this.Scale = Tags.ContainsKey(MarkerKeys.Scale) ? Tags[MarkerKeys.Scale] : this.Scale;


            if (Tags.ContainsKey(MarkerKeys.QuestRange))
            {
                int snoQuestRange = Tags[MarkerKeys.QuestRange].Id;
                if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange].ContainsKey(snoQuestRange))
                {
                    _questRange = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange][snoQuestRange].Data as Mooege.Common.MPQ.FileFormats.QuestRange;
                }
                else
                {
                    Logger.Warn("Actor {0}  Dyn ID {1} is tagged with unknown QuestRange {2}", NameSNOId, DynamicID, snoQuestRange);
                }
            }

            if (Tags.ContainsKey(MarkerKeys.ConversationList))
            {
                int snoConversationList = Tags[MarkerKeys.ConversationList].Id;

                Logger.Debug(" (ReadTags) actor {0} dyniD {2} has a conversation list {1}", NameSNOId, snoConversationList, DynamicID);

                if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList].ContainsKey(snoConversationList))
                {
                    ConversationList = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList][snoConversationList].Data as Mooege.Common.MPQ.FileFormats.ConversationList;
                }
                else
                {
                    Logger.Warn("Actor {0} Dyn ID {1} is tagged with unknown ConversationList {2}", NameSNOId, DynamicID, snoConversationList);
                    // ConversationList = null; // erekose this is bad but at least it can be tracked  and not worse than  failed "as" cast :p
                }
            }


            if (this.Tags.ContainsKey(MarkerKeys.TriggeredConversation))
            {
                snoTriggeredConversation = Tags[MarkerKeys.TriggeredConversation].Id;
            }
        }
예제 #2
0
파일: Actor.cs 프로젝트: DZilli/mooege
        /// <summary>
        /// Reads known tags from TagMapEntry and set the proper values.
        /// </summary>
        protected virtual void ReadTags()
        {
            if (this.Tags == null)
            {
                return;
            }

            // load scale from actor data and override it with marker tags if one is set
            this.Scale = ActorData.TagMap.ContainsKey(ActorKeys.Scale) ? ActorData.TagMap[ActorKeys.Scale] : 1;
            this.Scale = Tags.ContainsKey(MarkerKeys.Scale) ? Tags[MarkerKeys.Scale] : this.Scale;


            if (Tags.ContainsKey(MarkerKeys.QuestRange))
            {
                int snoQuestRange = Tags[MarkerKeys.QuestRange].Id;
                if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange].ContainsKey(snoQuestRange))
                {
                    _questRange = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange][snoQuestRange].Data as Mooege.Common.MPQ.FileFormats.QuestRange;
                }
                //else Logger.Warn("Actor {0} is tagged with unknown QuestRange {1}", SNOId, snoQuestRange);
            }

            if (Tags.ContainsKey(MarkerKeys.ConversationList))
            {
                int snoConversationList = Tags[MarkerKeys.ConversationList].Id;
                if (Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList].ContainsKey(snoConversationList))
                {
                    ConversationList = Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList][snoConversationList].Data as Mooege.Common.MPQ.FileFormats.ConversationList;
                }
                //else Logger.Warn("Actor {0} is tagged with unknown ConversationList {1}", SNOId, snoConversationList);
            }


            if (this.Tags.ContainsKey(MarkerKeys.TriggeredConversation))
            {
                snoTriggeredConversation = Tags[MarkerKeys.TriggeredConversation].Id;
            }

            // Actor group
            if (this.Tags.ContainsKey(MarkerKeys.Group1Hash))
            {
                this.Group1Hash = Tags[MarkerKeys.Group1Hash];
            }
            if (this.Tags.ContainsKey(MarkerKeys.Group2Hash))
            {
                this.Group2Hash = Tags[MarkerKeys.Group2Hash];
            }
        }