public Actor.SearchInfo GetSearchInfo()
 {
     if (this._searchInfo == null && Singleton <Resources> .IsInstance())
     {
         CommonDefine             commonDefine  = Singleton <Resources> .Instance.CommonDefine;
         Resources.GameInfoTables gameInfo      = Singleton <Resources> .Instance.GameInfo;
         ItemIDKeyPair            driftwoodId   = commonDefine.ItemIDDefine.DriftwoodID;
         StuffItemInfo            stuffItemInfo = gameInfo.GetItem(driftwoodId.categoryID, driftwoodId.itemID);
         if (stuffItemInfo == null)
         {
             return((Actor.SearchInfo)null);
         }
         this._searchInfo = new Actor.SearchInfo()
         {
             IsSuccess = true,
             ItemList  = new List <Actor.ItemSearchInfo>()
             {
                 new Actor.ItemSearchInfo()
                 {
                     categoryID = stuffItemInfo.CategoryID,
                     id         = stuffItemInfo.ID,
                     name       = stuffItemInfo.Name,
                     count      = 1
                 }
             }
         };
     }
     return(this._searchInfo);
 }
Beispiel #2
0
        public virtual Actor.SearchInfo RandomAddItem(
            Dictionary <int, ItemTableElement> itemTable,
            bool containsNone)
        {
            Resources instance = Singleton <Resources> .Instance;

            if (itemTable == null)
            {
                return new Actor.SearchInfo()
                       {
                           IsSuccess = false
                       }
            }
            ;
            Resources.GameInfoTables gameInfo = Singleton <Resources> .Instance.GameInfo;
            int key = this.Lottery(itemTable);
            ItemTableElement itemTableElement;

            if (itemTable.TryGetValue(key, out itemTableElement))
            {
                Actor.SearchInfo searchInfo = new Actor.SearchInfo()
                {
                    IsSuccess = true
                };

                foreach (ItemTableElement.GatherElement element in itemTableElement.Elements)
                {
                    if ((double)Random.get_value() < (double)element.prob)
                    {
                        StuffItemInfo stuffItemInfo = gameInfo.GetItem(element.categoryID, element.itemID);
                        if (stuffItemInfo != null)
                        {
                            int num = Random.Range(element.minCount, element.maxCount + 1);
                            if (num > 0)
                            {
                                searchInfo.ItemList.Add(new Actor.ItemSearchInfo()
                                {
                                    name       = stuffItemInfo.Name,
                                    categoryID = element.categoryID,
                                    id         = element.itemID,
                                    count      = num
                                });
                            }
                        }
                    }
                }
                if (searchInfo.ItemList.IsNullOrEmpty <Actor.ItemSearchInfo>())
                {
                    searchInfo.IsSuccess = false;
                }
                return(searchInfo);
            }
            return(new Actor.SearchInfo()
            {
                IsSuccess = false
            });
        }
Beispiel #3
0
        protected override void OnCompletedStateTask()
        {
            AgentActor agent     = this.Agent;
            int        desireKey = Desire.GetDesireKey(Desire.Type.Hunt);

            agent.SetDesire(desireKey, 0.0f);
            Dictionary <int, AIProject.SaveData.Environment.SearchActionInfo> searchActionLockTable = agent.AgentData.SearchActionLockTable;

            AIProject.SaveData.Environment.SearchActionInfo searchActionInfo;
            if (!searchActionLockTable.TryGetValue(agent.CurrentPoint.RegisterID, out searchActionInfo))
            {
                searchActionInfo = new AIProject.SaveData.Environment.SearchActionInfo();
            }
            ++searchActionInfo.Count;
            searchActionLockTable[agent.CurrentPoint.RegisterID] = searchActionInfo;
            ActionPoint currentPoint = this.Agent.CurrentPoint;
            Dictionary <int, ItemTableElement> itemTableInArea = Singleton <Resources> .Instance.GameInfo.GetItemTableInArea(currentPoint.IDList.IsNullOrEmpty <int>()?currentPoint.ID : currentPoint.IDList.GetElement <int>(0));

            if (itemTableInArea != null)
            {
                ;
            }
            Actor.SearchInfo searchInfo = agent.RandomAddItem(itemTableInArea, false);
            if (!searchInfo.IsSuccess)
            {
                return;
            }
            foreach (Actor.ItemSearchInfo itemSearchInfo in searchInfo.ItemList)
            {
                StuffItem stuffItem = new StuffItem(itemSearchInfo.categoryID, itemSearchInfo.id, itemSearchInfo.count);
                agent.AgentData.ItemList.AddItem(stuffItem);
                StuffItemInfo info = Singleton <Resources> .Instance.GameInfo.GetItem(itemSearchInfo.categoryID, itemSearchInfo.id);

                MapUIContainer.AddItemLog((Actor)agent, info, itemSearchInfo.count, false);
            }
        }