public bool IsStoryCollectionReadyToCharge(StoryCollectionData collection) { bool hasCollectables = true; RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>(); PlayerService playerService = engine.GetService <IPlayerService>().Cast <PlayerService>(); foreach (string collectableId in collection.collectables) { StoryCollectableData collectableData = resourceService.GetStoryCollectable(collectableId); int playerCount = playerService.GetItemCount(collectableData); if (playerCount <= 0) { hasCollectables = false; break; } } bool hasCharger = true; StoryChargerData chargerData = resourceService.GetStoryCharger(collection.chargerId); int playerChargerCount = playerService.GetItemCount(chargerData); if (playerChargerCount <= 0) { hasCharger = false; } return(hasCollectables && hasCharger); }
public bool IsCollectionReadyToCharge(CollectionData collection) { bool collectablesReady = true; RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>(); PlayerService playerService = engine.GetService <IPlayerService>().Cast <PlayerService>(); foreach (string collectableId in collection.collectableIds) { CollectableData data = resourceService.GetCollectable(collectableId); int playerCount = playerService.GetItemCount(data); if (playerCount <= 0) { collectablesReady = false; break; } } bool chargersReady = true; foreach (var info in collection.chargers) { ChargerData data = resourceService.GetCharger(info.id); int playerCount = playerService.GetItemCount(data); if (playerCount < info.count) { chargersReady = false; break; } } return(collectablesReady && chargersReady); }
//Algorithm of generation room drop... public List <InventoryItem> GenerateRoomDrop(RoomData roomData, RoomLevel roomLevel) { RavenhillResourceService resourceService = engine.GetService <IResourceService>() as RavenhillResourceService; List <InventoryItem> result = new List <InventoryItem>(); List <CollectableData> collectables = resourceService.GetCollectables(roomData.id).FindAll((item) => { return(((int)roomLevel >= (int)item.roomLevel) && (UnityEngine.Random.value < GetCollectableProb(item))); }); result.AddRange(collectables.Select(c => new InventoryItem(c, 1)).ToList()); List <WeaponData> weapons = resourceService.weaponList.FindAll((w) => UnityEngine.Random.value < w.prob); result.AddRange(weapons.Select(w => new InventoryItem(w, 1)).ToList()); List <IngredientData> ingredients = resourceService.GetIngredients(roomData.id).FindAll(item => { return(UnityEngine.Random.value < GetIngredientProb(item)); }); result.AddRange(ingredients.Select(i => new InventoryItem(i, 1)).ToList()); List <ChargerData> chargers = resourceService.chargerList.FindAll(item => UnityEngine.Random.value < item.prob); result.AddRange(chargers.Select(c => new InventoryItem(c, 1)).ToList()); return(result); }
public List <InventoryItem> FilterCollectableForRoom(RoomInfo roomInfo) { RavenhillResourceService resourceService = engine.GetService <IResourceService>() as RavenhillResourceService; return(resourceService.GetCollectables(roomInfo.roomData.id).Where(collectable => { return ((int)collectable.roomLevel <= (int)roomInfo.roomLevel); }).Select(collectable => new InventoryItem(collectable, 1)).ToList()); }
public void ChargeStoryCollection(StoryCollectionData collectionData) { PlayerService playerService = engine.GetService <IPlayerService>().Cast <PlayerService>(); RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>(); StoryChargerData chargerData = resourceService.GetStoryCharger(collectionData.chargerId); if (playerService.GetItemCount(chargerData) > 0) { playerService.RemoveItem(InventoryItemType.StoryCharger, chargerData.id, 1); playerService.AddItem(new InventoryItem(collectionData, 1)); RavenhillEvents.OnStoryCollectionCharged(collectionData); } }
private void OnInventoryItemAdded(InventoryItemType type, string itemId, int count) { if (type == InventoryItemType.Collectable) { RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>(); CollectableData data = resourceService.GetCollectable(itemId); if (data != null) { receivedCollectables.Enqueue(data); //StopCoroutine("CorShowReceivedCollectables"); //StartCoroutine(CorShowReceivedCollectables(data)); } } }
public void ChargeAlchemy(BonusData bonus) { RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>(); PlayerService playerService = engine.GetService <IPlayerService>().Cast <PlayerService>(); foreach (var pair in bonus.ingredients) { IngredientData ingredientData = resourceService.GetIngredient(pair.Key); playerService.RemoveItem(ingredientData.type, ingredientData.id, pair.Value); } playerService.AddItem(new InventoryItem(bonus, 1)); //engine.Cast<RavenhillEngine>().DropItems(new List<DropItem> { new DropItem(DropType.item, 1, bonus )}); RavenhillEvents.OnAlchemyCharged(bonus); }
public bool IsAlchemyReadyToCharge(BonusData bonus) { bool alchemyReady = true; RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>(); PlayerService playerService = engine.GetService <IPlayerService>().Cast <PlayerService>(); foreach (var pair in bonus.ingredients) { int playerCount = playerService.GetItemCount(resourceService.GetIngredient(pair.Key)); if (playerCount < pair.Value) { alchemyReady = false; break; } } return(alchemyReady); }