4 const int CM_MODE_NONE = 0;
5 const int CM_MODE_WORLD = 1;
6 const int CM_MODE_INVENTORY = 2;
9 PluginRecipesManager m_recipesManager;
12 int m_contextualRecipeID;
22 m_recipesManager = recipesManager;
24 m_craftingMode = CM_MODE_NONE;
33 if (m_actionVariantManager)
39 void SetRecipeID(
int recipeID)
41 m_recipeID = recipeID;
49 bool IsInventoryCraft()
51 return m_craftingMode == CM_MODE_INVENTORY;
56 return m_craftingMode == CM_MODE_WORLD;
69 void OnUpdate(
Object item,
Object target,
int component_index )
74 if (
m_player.GetActionManager().GetRunningAction() )
82 m_craftingMode = CM_MODE_NONE;
83 m_actionVariantManager.
Clear();
89 if ( item1 != item_in_hands && item2 != item_in_hands )
94 item1.GetInventory().GetCurrentInventoryLocation(il1);
95 item2.GetInventory().GetCurrentInventoryLocation(il2);
97 Error(
"Crafting manager - both of items are out of hands - item1: " + il1.DumpToString() +
" item2: " + il2.DumpToString() +
" / item in hands: - " + item_in_hands);
103 if (m_craftingMode == CM_MODE_INVENTORY)
106 m_recipeCount = recipeCount;
107 m_recipeID = m_recipes.Get(m_contextualRecipeID);
111 recipeCount = m_recipesManager.GetValidRecipes(item1, item2, m_recipes,
m_player);
113 if (recipeCount == 0)
116 m_craftingMode = CM_MODE_NONE;
117 m_actionVariantManager.
Clear();
121 if ( m_craftingMode == CM_MODE_NONE || m_recipeCount != recipeCount ||
m_item1 != item1 ||
m_item2 != item2 )
123 m_craftingMode = CM_MODE_WORLD;
124 m_recipeCount = recipeCount;
125 m_contextualRecipeID = 0;
131 m_recipeID = m_recipes.Get(m_contextualRecipeID);
138 int recipeCount = m_recipesManager.GetValidRecipes(item1,item2,m_recipes,
m_player);
140 for (
int i = 0; i < recipeCount; i++ )
142 if (recipeID == -1 || m_recipes.Get(i) == recipeID)
144 if ( m_recipesManager.GetIsInstaRecipe(m_recipes.Get(i)) || m_recipesManager.IsEnableDebugCrafting() )
147 m_player.RPCSingleParam(
ERPCs.RPC_CRAFTING_INVENTORY_INSTANT, craftParam,
true,
m_player.GetIdentity());
152 m_craftingMode = CM_MODE_INVENTORY;
153 m_recipeCount = recipeCount;
154 m_contextualRecipeID = i;
157 m_recipeID = m_recipes.Get(i);
172 void ResetInventoryCraft()
175 m_craftingMode = CM_MODE_NONE;
178 bool IsEnableDebugCrafting()
183 int GetRecipeID(
int action_index )
185 return m_recipes[action_index];