public override int RemoveSlotItems(int slotIndex, int count) { int num = 0; if (slotIndex == ResultSlotIndex) { if (m_matchedRecipe != null) { if (m_matchedRecipe.RemainsValue != 0 && m_matchedRecipe.RemainsCount > 0) { if (m_slots[RemainsSlotIndex].Count == 0 || m_slots[RemainsSlotIndex].Value == m_matchedRecipe.RemainsValue) { int num2 = BlocksManager.Blocks[Terrain.ExtractContents(m_matchedRecipe.RemainsValue)].MaxStacking - m_slots[RemainsSlotIndex].Count; count = MathUtils.Min(count, num2 / m_matchedRecipe.RemainsCount); } else { count = 0; } } count = count / m_matchedRecipe.ResultCount * m_matchedRecipe.ResultCount; if (slotIndex >= 0 && slotIndex < m_slots.Count) { Slot slot = m_slots[slotIndex]; count = MathUtils.Min(count, GetSlotCount(slotIndex)); slot.Count -= count; num = count; } else { num = 0; } if (num > 0) { for (int index = 0; index < 36; index++) { if (!string.IsNullOrEmpty(m_matchedIngredients[index])) { int index2 = index % 6 + m_craftingGridSize * (index / 6); m_slots[index2].Count = MathUtils.Max(m_slots[index2].Count - num / m_matchedRecipe.ResultCount, 0); } } if (m_matchedRecipe.RemainsValue != 0 && m_matchedRecipe.RemainsCount > 0) { m_slots[RemainsSlotIndex].Value = m_matchedRecipe.RemainsValue; m_slots[RemainsSlotIndex].Count += num / m_matchedRecipe.ResultCount * m_matchedRecipe.RemainsCount; } ComponentPlayer componentPlayer = Entity.FindComponent <ComponentPlayer>(); if (componentPlayer == null) { ComponentBlockEntity componentBlockEntity = Entity.FindComponent <ComponentBlockEntity>(); if (componentBlockEntity != null) { var position = new Vector3(componentBlockEntity.Coordinates); componentPlayer = Project.FindSubsystem <SubsystemPlayers>(true).FindNearestPlayer(position); } } if (componentPlayer != null && componentPlayer.PlayerStats != null) { componentPlayer.PlayerStats.ItemsCrafted += num; } } } } else { if (slotIndex >= 0 && slotIndex < m_slots.Count) { Slot slot = m_slots[slotIndex]; count = MathUtils.Min(count, GetSlotCount(slotIndex)); slot.Count -= count; num = count; } else { num = 0; } } UpdateCraftingResult(); return(num); }
public override void Load(ValuesDictionary valuesDictionary, IdToEntityMap idToEntityMap) { this.LoadItems(valuesDictionary); m_componentBlockEntity = Entity.FindComponent <ComponentBlockEntity>(true); SubsystemPlayers = Project.FindSubsystem <SubsystemPlayers>(true); }