Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
craftingmanager.c
Go to the documentation of this file.
1
2
class
CraftingManager
3
{
4
const
int
CM_MODE_NONE
= 0;
5
const
int
CM_MODE_WORLD
= 1;
6
const
int
CM_MODE_INVENTORY
= 2;
7
8
PlayerBase
m_player
;
9
PluginRecipesManager
m_recipesManager
;
10
ActionVariantManager
m_actionVariantManager
;
11
int
m_recipeID
;
12
int
m_contextualRecipeID
;
13
int
m_recipeCount
;
14
int
m_craftingMode
;
15
ItemBase
m_item1
;
16
ItemBase
m_item2
;
17
18
ref
array<int>
m_recipes
;
19
20
void
CraftingManager
(
PlayerBase
player, PluginRecipesManager recipesManager)
21
{
22
m_recipesManager
= recipesManager;
23
m_player
= player;
24
m_craftingMode
=
CM_MODE_NONE
;
25
m_actionVariantManager
=
ActionManagerClient
.
GetVariantManager
(
ActionWorldCraft
);
26
m_actionVariantManager
.GetOnUpdateInvoker().Clear();
27
m_actionVariantManager
.GetOnUpdateInvoker().Insert(
OnUpdate
);
28
m_recipes
=
new
array<int>
;
29
}
30
31
void
~CraftingManager
()
32
{
33
if
(
m_actionVariantManager
)
34
{
35
m_actionVariantManager
.GetOnUpdateInvoker().Remove(
OnUpdate
);
36
}
37
}
38
39
void
SetRecipeID
(
int
recipeID)
40
{
41
m_recipeID
= recipeID;
42
}
43
44
int
GetRecipeID
()
45
{
46
return
m_recipeID
;
47
}
48
49
bool
IsInventoryCraft
()
50
{
51
return
m_craftingMode
==
CM_MODE_INVENTORY
;
52
}
53
54
bool
IsWorldCraft
()
55
{
56
return
m_craftingMode
==
CM_MODE_WORLD
;
57
}
58
59
int
GetRecipesCount
()
60
{
61
return
m_recipeCount
;
62
}
63
// deprecated
64
void
SetNextRecipe
()
65
{
66
67
}
68
69
void
OnUpdate
(
Object
item,
Object
target,
int
component_index )
70
{
71
ItemBase
item1 =
ItemBase
.Cast( item );
72
ItemBase
item2 =
ItemBase
.Cast( target );
73
74
if
(
m_player
.GetActionManager().GetRunningAction() )
75
return
;
76
77
ItemBase
item_in_hands =
m_player
.GetItemInHands();
78
79
if
(!item1 || !item2)
80
{
81
m_recipeCount
= 0;
82
m_craftingMode
=
CM_MODE_NONE
;
83
m_actionVariantManager
.Clear();
84
return
;
85
}
86
else
87
{
88
89
if
( item1 != item_in_hands && item2 != item_in_hands )
90
{
91
InventoryLocation
il1 =
new
InventoryLocation
;
92
InventoryLocation
il2 =
new
InventoryLocation
;
93
94
item1.GetInventory().GetCurrentInventoryLocation(il1);
95
item2.GetInventory().GetCurrentInventoryLocation(il2);
96
97
Error
(
"Crafting manager - both of items are out of hands - item1: "
+ il1.
DumpToString
() +
" item2: "
+ il2.
DumpToString
() +
" / item in hands: - "
+ item_in_hands);
98
}
99
}
100
101
int
recipeCount = 0;
102
103
if
(
m_craftingMode
==
CM_MODE_INVENTORY
)
104
{
105
recipeCount =
m_recipesManager
.GetValidRecipes(
m_item1
,
m_item2
,
m_recipes
,
m_player
);
106
m_recipeCount
= recipeCount;
107
m_recipeID
=
m_recipes
.Get(
m_contextualRecipeID
);
108
return
;
109
}
110
111
recipeCount =
m_recipesManager
.GetValidRecipes(item1, item2,
m_recipes
,
m_player
);
112
113
if
(recipeCount == 0)
114
{
115
m_recipeCount
= 0;
116
m_craftingMode
=
CM_MODE_NONE
;
117
m_actionVariantManager
.Clear();
118
}
119
else
120
{
121
if
(
m_craftingMode
==
CM_MODE_NONE
||
m_recipeCount
!= recipeCount ||
m_item1
!= item1 ||
m_item2
!= item2 )
122
{
123
m_craftingMode
=
CM_MODE_WORLD
;
124
m_recipeCount
= recipeCount;
125
m_contextualRecipeID
= 0;
126
m_item1
= item1;
127
m_item2
= item2;
128
129
m_actionVariantManager
.SetActionVariantCount(
m_recipeCount
);
130
}
131
m_recipeID
=
m_recipes
.Get(
m_contextualRecipeID
);
132
}
133
134
}
135
136
bool
SetInventoryCraft
(
int
recipeID,
ItemBase
item1,
ItemBase
item2)
137
{
138
int
recipeCount =
m_recipesManager
.GetValidRecipes(item1,item2,
m_recipes
,
m_player
);
139
140
for
(
int
i = 0; i < recipeCount; i++ )
141
{
142
if
(recipeID == -1 ||
m_recipes
.Get(i) == recipeID)
143
{
144
if
(
m_recipesManager
.GetIsInstaRecipe(
m_recipes
.Get(i)) ||
m_recipesManager
.IsEnableDebugCrafting() )
145
{
146
Param
craftParam =
new
Param3<int, ItemBase, ItemBase>
(
m_recipes
.Get(i), item1, item2);
147
m_player
.RPCSingleParam(
ERPCs
.RPC_CRAFTING_INVENTORY_INSTANT, craftParam,
true
,
m_player
.GetIdentity());
148
return
true
;
149
}
150
else
151
{
152
m_craftingMode
=
CM_MODE_INVENTORY
;
153
m_recipeCount
= recipeCount;
154
m_contextualRecipeID
= i;
155
m_item1
= item1;
156
m_item2
= item2;
157
m_recipeID
=
m_recipes
.Get(i);
158
159
ActionManagerClient
am =
ActionManagerClient
.Cast(
m_player
.GetActionManager());
160
161
if
(
m_player
.GetItemInHands() == item1) am.
SetInventoryAction
( am.GetAction(
ActionWorldCraft
), item2, item1);
162
else
am.
SetInventoryAction
( am.GetAction(
ActionWorldCraft
), item1, item2);
163
164
return
true
;
165
}
166
}
167
168
}
169
return
false
;
170
}
171
172
void
ResetInventoryCraft
()
173
{
174
m_recipeCount
= 0;
175
m_craftingMode
=
CM_MODE_NONE
;
176
}
177
178
bool
IsEnableDebugCrafting
()
179
{
180
return
true
;
181
}
182
183
int
GetRecipeID
(
int
action_index )
184
{
185
return
m_recipes
[action_index];
186
}
187
}
ActionManagerClient
Definition
actionmanagerclient.c:5
ActionManagerClient::SetInventoryAction
void SetInventoryAction(ActionBase action_name, ItemBase target_item, ItemBase main_item)
Definition
actionmanagerclient.c:788
ActionManagerClient::GetVariantManager
static ActionVariantManager GetVariantManager(typename actionName)
Definition
actionmanagerclient.c:255
ActionVariantManager
Definition
actionvariantsmanager.c:2
ActionWorldCraft
Definition
actionworldcraft.c:35
CraftingManager::CM_MODE_WORLD
const int CM_MODE_WORLD
Definition
craftingmanager.c:5
CraftingManager::ResetInventoryCraft
void ResetInventoryCraft()
Definition
craftingmanager.c:172
CraftingManager::m_item2
ItemBase m_item2
Definition
craftingmanager.c:16
CraftingManager::SetNextRecipe
void SetNextRecipe()
Definition
craftingmanager.c:64
CraftingManager::IsWorldCraft
bool IsWorldCraft()
Definition
craftingmanager.c:54
CraftingManager::SetInventoryCraft
bool SetInventoryCraft(int recipeID, ItemBase item1, ItemBase item2)
Definition
craftingmanager.c:136
CraftingManager::~CraftingManager
void ~CraftingManager()
Definition
craftingmanager.c:31
CraftingManager::OnUpdate
void OnUpdate(Object item, Object target, int component_index)
Definition
craftingmanager.c:69
CraftingManager::m_recipeCount
int m_recipeCount
Definition
craftingmanager.c:13
CraftingManager::GetRecipeID
int GetRecipeID(int action_index)
Definition
craftingmanager.c:183
CraftingManager::CraftingManager
void CraftingManager(PlayerBase player, PluginRecipesManager recipesManager)
Definition
craftingmanager.c:20
CraftingManager::GetRecipesCount
int GetRecipesCount()
Definition
craftingmanager.c:59
CraftingManager::m_actionVariantManager
ActionVariantManager m_actionVariantManager
Definition
craftingmanager.c:10
CraftingManager::m_player
PlayerBase m_player
Definition
craftingmanager.c:8
CraftingManager::IsInventoryCraft
bool IsInventoryCraft()
Definition
craftingmanager.c:49
CraftingManager::m_item1
ItemBase m_item1
Definition
craftingmanager.c:15
CraftingManager::CM_MODE_NONE
const int CM_MODE_NONE
Definition
craftingmanager.c:4
CraftingManager::IsEnableDebugCrafting
bool IsEnableDebugCrafting()
Definition
craftingmanager.c:178
CraftingManager::m_recipes
ref array< int > m_recipes
Definition
craftingmanager.c:18
CraftingManager::m_craftingMode
int m_craftingMode
Definition
craftingmanager.c:14
CraftingManager::GetRecipeID
int GetRecipeID()
Definition
craftingmanager.c:44
CraftingManager::CM_MODE_INVENTORY
const int CM_MODE_INVENTORY
Definition
craftingmanager.c:6
CraftingManager::m_contextualRecipeID
int m_contextualRecipeID
Definition
craftingmanager.c:12
CraftingManager::SetRecipeID
void SetRecipeID(int recipeID)
Definition
craftingmanager.c:39
CraftingManager::m_recipeID
int m_recipeID
Definition
craftingmanager.c:11
CraftingManager::m_recipesManager
PluginRecipesManager m_recipesManager
Definition
craftingmanager.c:9
InventoryLocation
InventoryLocation.
Definition
inventorylocation.c:30
InventoryLocation::DumpToString
string DumpToString()
Definition
inventorylocation.c:240
ItemBase
Definition
inventoryitem.c:742
Object
Definition
objecttyped.c:2
Param3
Definition
entityai.c:102
Param
Base Param Class with no parameters.
Definition
param.c:12
PlayerBase
Definition
playerbaseclient.c:2
array
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Definition
isboxcollidinggeometryproxyclasses.c:28
ERPCs
ERPCs
Definition
erpcs.c:2
Error
void Error(string err)
Messagebox with error message.
Definition
endebug.c:90
Games
Dayz
scripts
4_world
classes
craftingmanager.c
Generated by
1.17.0