DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ UpdateInterval()

override void ConstructionActionInfoToolsGrid::UpdateInterval ( )
inlineprotected

См. определение в файле ActionInfoGrids.c строка 127

128 {
130 {
131 ActionInfoDataConstructionBase info = ActionInfoDataConstructionBase.Cast(m_ActionInfo);
132 ConstructionPart part = info.GetConstructionPart();
133 //int partActionMask = part.GetBuildActionTypeMask();
134 int partInfoMask = part.GetBuildIndicationTypeMask();
135 int toolActionMask = EConstructionTools.TOOL_HANDS; //hands as default
136 ItemBase tool;
137 if (Class.CastTo(tool, info.GetTool()))
138 {
139 //
140 string toolCfgPath = "cfgVehicles" + " " + tool.GetType() + " " + "build_action_type"; //TODO: cache later on tools (ItemBase sufficient?)
141 if (g_Game.ConfigIsExisting(toolCfgPath))
142 {
143 toolActionMask = g_Game.ConfigGetInt(toolCfgPath);
144 }
145 else
146 {
147 toolActionMask = EConstructionTools.TOOL_NO_ACTION;
148 }
149 //
150 }
151
152 if (partInfoMask != m_LastPartMask || part != m_LastPart || toolActionMask != m_LastToolMask)
153 {
154 m_IconVisibleCount = 0;
155
156 bool firstValidToolSet = false;
157 int maskOverlap = toolActionMask & partInfoMask;
158 //bool toolToDisplay = maskOverlap != EConstructionTools.TOOL_NO_ACTION;
159 //toolToDisplay |= EConstructionTools.TOOL_HANDS & partInfoMask;
160 int iconIdx;
161 ConstructionToolInfoIcon toolIcon;
162
163 //m_CrossedImage
164 foreach (GenericIconBase icon : m_Icons)
165 {
166 Class.CastTo(toolIcon,icon);
167 toolIcon.SetConstructionPart(part);
168 iconIdx = toolIcon.GetIconIndex();
169 bool validToolBool = iconIdx & maskOverlap;
170 //use first icon and hide the rest
171 if (maskOverlap)
172 {
173 if (validToolBool && !firstValidToolSet)
174 {
175 toolIcon.SetShowIcon(true);
176 toolIcon.SetTool(tool);
177 toolIcon.ToolCompatibilityWarning(false);
178 firstValidToolSet = true;
179 }
180 else
181 {
182 toolIcon.SetShowIcon(false);
183 toolIcon.SetTool(null);
184 }
185
186 toolIcon.UpdateInterval();
187 m_IconVisibleCount += toolIcon.IsVisible();
188 }
189 else //show all tool icons by sanitized part mask value (indicates required tools)
190 {
191 if (iconIdx == EConstructionTools.TOOL_HANDS)
192 {
193 toolIcon.ToolCompatibilityWarning(tool != null);
194 toolIcon.SetTool(tool);
195 }
196 else
197 {
198 toolIcon.SetTool(null);
199 }
200
201 toolIcon.SetShowIcon(iconIdx & partInfoMask);
202 toolIcon.UpdateInterval();
203 m_IconVisibleCount += toolIcon.IsVisible();
204 }
205 }
206
207 m_LastPartMask = partInfoMask;
208 m_LastToolMask = toolActionMask;
209 m_LastPart = part;
210 }
211 }
212 else
213 {
214 m_IconVisibleCount = 0;
215 }
216
217 super.UpdateInterval(); //handles grid widget visibility
218 }
ActionInfoGridBase m_LastPart
ActionInfoDataBase m_ActionInfo
Определения ActionInfoPanels.c:8
EConstructionInfoCategories
Определения ConstructionConstants.c:2
void ConstructionPart(string name, string part_name, string main_part_name, int id, bool is_built, bool is_base, bool is_gate, array< string > required_parts)
Определения ConstructionPart.c:531
DayZGame g_Game
Определения DayZGame.c:4074
class GP5GasMask extends MaskBase ItemBase
int m_InfoContextMask
Определения ActionPartInfo.c:211
int GetBuildIndicationTypeMask()
Определения ConstructionPart.c:336
void SetTool(ItemBase tool)
Определения ConstructionInfoIcons.c:115
void ToolCompatibilityWarning(bool show)
Определения ConstructionInfoIcons.c:125
override void UpdateInterval()
Определения ConstructionInfoIcons.c:131
void SetShowIcon(bool show)
Определения ConstructionInfoIcons.c:120

Перекрестные ссылки Class::CastTo(), g_Game, ConstructionPart::GetBuildIndicationTypeMask(), m_ActionInfo, m_LastPart, m_LastPartMask, m_LastToolMask, ConstructionToolInfoIcon::SetShowIcon(), ConstructionToolInfoIcon::SetTool(), ConstructionToolInfoIcon::ToolCompatibilityWarning() и ConstructionToolInfoIcon::UpdateInterval().