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); }
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 }); }
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); } }