Ejemplo n.º 1
0
    private QuestData HandlingQuestData(QuestSaveData questData)
    {
        TalkerData questGiver = DialogueManager.Instance.Talkers[questData.originalGiverID];

        if (!questGiver)
        {
            return(null);
        }
        QuestData quest = questGiver.questInstances.Find(x => x.Model.ID == questData.questID);

        if (!quest)
        {
            return(null);
        }
        AcceptQuest(quest);
        foreach (ObjectiveSaveData od in questData.objectiveDatas)
        {
            foreach (ObjectiveData o in quest.Objectives)
            {
                if (o.ID == od.objectiveID)
                {
                    o.CurrentAmount = od.currentAmount;
                    break;
                }
            }
        }
        return(quest);
    }
Ejemplo n.º 2
0
 public void Init()
 {
     if (!talkerRoot)
     {
         talkerRoot = new GameObject("Talkers").transform;
     }
     Talkers.Clear();
     scenedTalkers.Clear();
     foreach (var ti in Resources.LoadAll <TalkerInformation>("Configuration").Where(x => x.IsValid && x.Enable))
     {
         TalkerData data = new TalkerData(ti);
         if (ti.Scene == ZetanUtility.ActiveScene.name)
         {
             Talker talker = ti.Prefab.Instantiate(talkerRoot).GetComponent <Talker>();
             talker.Init(data);
         }
         Talkers.Add(ti.ID, data);
         if (scenedTalkers.TryGetValue(ti.Scene, out var talkers))
         {
             talkers.Add(data);
         }
         else
         {
             scenedTalkers.Add(ti.Scene, new List <TalkerData>()
             {
                 data
             });
         }
     }
 }
Ejemplo n.º 3
0
 public ShopData(TalkerData vendor, ShopInformation info)
 {
     Vendor = vendor;
     Info   = info;
     foreach (MerchandiseInfo mi in Info.Commodities)
     {
         Commodities.Add(new GoodsData(this, mi, GoodsType.SellToPlayer));
     }
     foreach (MerchandiseInfo mi in Info.Acquisitions)
     {
         Acquisitions.Add(new GoodsData(this, mi, GoodsType.BuyFromPlayer));
     }
 }
Ejemplo n.º 4
0
 public void Init(TalkerData data)
 {
     base.Init(data);
     transform.position = GetData <TalkerData>().GetInfo <NPCInformation>().Position;
     flagAgent          = ObjectPool.Get(MiscSettings.Instance.QuestFlagsPrefab, UIManager.Instance.QuestFlagParent);
     flagAgent.Init(this);
     if (iconHolder)
     {
         iconHolder.textToDisplay = GetMapIconName();
         iconHolder.iconEvents.RemoveAllListner();
         iconHolder.iconEvents.onFingerClick.AddListener(ShowNameAtMousePosition);
         iconHolder.iconEvents.onMouseEnter.AddListener(ShowNameAtMousePosition);
         iconHolder.iconEvents.onMouseExit.AddListener(HideNameImmediately);
     }
 }
Ejemplo n.º 5
0
    public void Init()
    {
        if (!info)
        {
            return;
        }

        Data      = new TalkerData();
        Data.info = Info;
        if (Info.IsQuestGiver)
        {
            Data.InitQuest(info.QuestsStored);
            Debug.Log("任务-" + TalkerName + "---" + Data.questInstances.Count);
        }
    }
Ejemplo n.º 6
0
 public void Init()
 {
     if (!GameManager.Talkers.ContainsKey(TalkerID))
     {
         GameManager.Talkers.Add(TalkerID, this);
     }
     else if (!GameManager.Talkers[TalkerID] || !GameManager.Talkers[TalkerID].gameObject)
     {
         GameManager.Talkers.Remove(TalkerID);
         GameManager.Talkers.Add(TalkerID, this);
     }
     else
     {
         Destroy(gameObject);
     }
     GameManager.TalkerDatas.TryGetValue(TalkerID, out TalkerData dataFound);
     if (!dataFound)
     {
         Data = new TalkerData();
         if (Info.IsVendor)
         {
             Data.shop = Instantiate(Info.Shop);
             Data.shop.Init();
         }
         else if (Info.IsWarehouseAgent)
         {
             Data.warehouse = new Warehouse(Info.Warehouse.size.Max);
         }
         Data.info = Info;
         Data.InitQuest(Info.QuestsStored);
         GameManager.TalkerDatas.Add(TalkerID, Data);
     }
     else
     {
         Data = dataFound;
     }
     Data.currentScene    = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
     Data.currentPosition = transform.position;
     if (Info.IsVendor && !ShopManager.Vendors.Contains(Data))
     {
         ShopManager.Vendors.Add(Data);
     }
     flagAgent = ObjectPool.Get(QuestManager.Instance.QuestFlagsPrefab.gameObject, UIManager.Instance.QuestFlagParent).GetComponent <QuestFlag>();
     flagAgent.Init(this);
 }
Ejemplo n.º 7
0
 public override void SetData(CharacterData value)
 {
     data = (TalkerData)value;
 }