27 GetMainWidget().SetFlags(
WidgetFlags.IGNOREPOINTER );
28 m_MainWidget = m_MainWidget.FindWidget(
"body" );
29 GetMainWidget().SetFlags(
WidgetFlags.IGNOREPOINTER );
40 RecomputeOpenedContainers();
69 return m_ActiveIndex == m_OpenedContainers.Count() - 1;
74 int index = m_ActiveIndex - 1;
75 int attachment_start_index = -1;
76 int cargo_start_index = -1;
77 int attachment_end_index = -1;
78 int cargo_end_index = -1;
82 attachment_start_index = 0;
84 attachment_end_index++;
90 cargo_start_index = attachment_end_index + 1;
96 if ( m_ActiveIndex > m_OpenedContainers.Count() )
98 m_ActiveIndex = m_OpenedContainers.Count();
103 #ifdef PLATFORM_CONSOLE
104 if ( m_MainWidget.FindAnyWidget(
"Cursor") )
105 m_MainWidget.FindAnyWidget(
"Cursor").Show(
true );
111 if( index.InRange( 0, attachment_end_index ) )
118 SetFocusedContainer(
m_Atts.GetWrapper() );
132 else if( index.InRange( cargo_start_index, cargo_end_index ) )
136 if( index == cargo_start_index )
144 SetFocusedContainer(
m_AttachmentCargos.GetElement( index - 1 - cargo_start_index ) );
154 if( m_MainWidget.FindAnyWidget(
"Cursor") )
155 m_MainWidget.FindAnyWidget(
"Cursor").Show(
false );
162 if( !active_container )
170 if( next_pos > (
y + y_s ) )
184 super.Insert( container, pos, immedUpdate );
189 if (m_ActiveIndex == 0)
191 if (CanTakeToInventory())
194 if (item_in_hands &&
GetGame().
GetPlayer().GetHumanInventory().CanRemoveEntityInHands() && !
GetGame().
GetPlayer().GetInventory().HasInventoryReservation(item_in_hands, null))
198 m_MainWidget.FindAnyWidget(
"Cursor").Show(
false );
199 m_MainWidget.FindAnyWidget(
"hands_preview_root").SetAlpha( 0.7 );
205 else if (GetFocusedContainer())
207 return GetFocusedContainer().TransferItem();
216 if (m_ActiveIndex == 0)
223 item_in_hands.OnRightClick();
227 else if( GetFocusedContainer() )
229 return GetFocusedContainer().SplitItem();
239 if (m_ActiveIndex == 0)
244 if (
GetGame().
GetPlayer().GetHumanInventory().CanRemoveEntityInHands() && !
GetGame().
GetPlayer().GetInventory().HasInventoryReservation(item_in_hands, null) )
246 bool res =
GetGame().
GetPlayer().PredictiveTakeOrSwapAttachment( item_in_hands );
253 m_MainWidget.FindAnyWidget(
"Cursor").Show(
false );
254 m_MainWidget.FindAnyWidget(
"hands_preview_root").SetAlpha( 0.7 );
260 else if (GetFocusedContainer())
262 return GetFocusedContainer().EquipItem();
270 super.SetActive(active);
272 EntityAI item_in_hands = player.GetHumanInventory().GetEntityInHands();
276 if( m_MainWidget.FindAnyWidget(
"Cursor" ) )
278 m_MainWidget.FindAnyWidget(
"Cursor" ).Show( active );
284 GetMainWidget().GetScreenPos(
x,
y );
285 PrepareOwnedTooltip( item_in_hands, -1,
y );
291 m_MainWidget.FindAnyWidget(
"hands_preview_root" ).SetAlpha( 0.85 );
293 m_MainWidget.FindAnyWidget(
"hands_preview_root" ).SetAlpha( 0.7 );
299 super.SetLastActive();
301 EntityAI item_in_hands = player.GetHumanInventory().GetEntityInHands();
305 if ( m_ActiveIndex == 0)
307 if( m_MainWidget.FindAnyWidget(
"Cursor" ) )
309 m_MainWidget.FindAnyWidget(
"Cursor" ).Show(
true );
313 GetMainWidget().GetScreenPos(
x,
y );
314 PrepareOwnedTooltip( item_in_hands,
x,
y );
319 m_MainWidget.FindAnyWidget(
"hands_preview_root" ).SetAlpha( 0.85 );
332 ItemBase item =
ItemBase.Cast( player.GetHumanInventory().GetEntityInHands() );
343 ItemBase item =
ItemBase.Cast( player.GetHumanInventory().GetEntityInHands() );
354 return player.GetHumanInventory().GetEntityInHands() == null;
361 if (m_ActiveIndex == 0)
364 ItemBase item_in_hands =
ItemBase.Cast(player.GetHumanInventory().GetEntityInHands());
365 if ( item_in_hands && player.CanDropEntity( item_in_hands ) &&
GetGame().
GetPlayer().GetHumanInventory().CanRemoveEntityInHands() && !player.GetInventory().HasInventoryReservation(item_in_hands, null) )
367 if ( item_in_hands.GetTargetQuantityMax() < item_in_hands.GetQuantity() )
368 item_in_hands.SplitIntoStackMaxClient( null, -1 );
370 player.PhysicalPredictiveDropItem( item_in_hands );
371 m_MainWidget.FindAnyWidget(
"Cursor").Show(
false );
372 m_MainWidget.FindAnyWidget(
"hands_preview_root").SetAlpha( 0.7 );
376 else if ( GetFocusedContainer() )
378 return GetFocusedContainer().TransferItemToVicinity();
386 if(m_ActiveIndex == 0)
389 EntityAI item_in_hands = player.GetHumanInventory().GetEntityInHands();
396 else if( GetFocusedContainer() )
398 return GetFocusedContainer().InspectItem();
405 if(m_ActiveIndex == 0)
412 Inventory.GetInstance().DisableMicromanagement();
422 Inventory.GetInstance().EnableMicromanagement();
428 if( GetFocusedContainer() )
430 return GetFocusedContainer().OnSelectButton();
441 string name = w.GetName();
442 name.Replace(
"PanelWidget",
"Render" );
469 string name = w.GetName();
470 name.Replace(
"PanelWidget",
"Render" );
483 receiver.GetUserData(slots_icon);
501 if( receiver_entity )
507 if( receiver_itemIB && itemIB && receiver_itemIB.
CanBeCombined( itemIB ) )
523 Magazine mag = Magazine.Cast(receiver_item);
528 if( player.GetWeaponManager().CanSwapMagazine( wpn, Magazine.Cast(w_entity) ) )
531 if( w_entity.GetHierarchyRootPlayer() == player )
561 else if( receiver_itemIB.GetInventory().CanAddAttachment( w_entity ) )
577 else if( slot_owner && slot_owner.GetInventory().CanAddAttachment( w_entity ) )
583 else if( receiver_entity.GetInventory().CanAddAttachment( w_entity ) )
627 if ( m_am_entity1 == null || m_am_entity2 == null )
return;
636 m_player.GetWeaponManager().LoadBullet( mag );
645 m_Body.RemoveItem(
m_Atts.GetWrapper() );
648 if( m_am_entity2.GetSlotsCountCorrect() > 0 )
651 m_Atts.InitAttachmentGrid( 1 );
662 if(
m_player.GetWeaponManager().CanAttachMagazine(wpn1, mag1) )
664 m_player.GetWeaponManager().AttachMagazine(mag1);
675 m_player.PredictiveTakeEntityToTargetCargo( m_am_entity1, m_am_entity2 );
684 if(
m_player.GetWeaponManager().CanSwapMagazine(
Weapon_Base.Cast( swapmag1.GetParent() ), Magazine.Cast( swapmag2 ) ) )
686 m_player.GetWeaponManager().SwapMagazine(swapmag2);
690 if(
m_player.GetWeaponManager().CanSwapMagazine(
Weapon_Base.Cast( swapmag2.GetParent() ), Magazine.Cast( swapmag1 )) )
692 m_player.GetWeaponManager().SwapMagazine(swapmag1);
696 if ( !
m_player.PredictiveSwapEntities( m_am_entity1, m_am_entity2 ) &&
m_player.GetHumanInventory().CanAddEntityInHands( m_am_entity1 ) )
698 m_player.PredictiveTakeEntityToHands( m_am_entity1 );
706 m_Body.RemoveItem(
m_Atts.GetWrapper() );
710 if ( m_am_entity2.GetSlotsCountCorrect() > 0 )
713 m_Atts.InitAttachmentGrid( 1 );
719 if (
m_player.GetHumanInventory().CanAddEntityInHands( m_am_entity2 ) )
721 m_player.PredictiveTakeEntityToHands( m_am_entity2 );
728 if ( entity1 && entity2 )
PrintString(
"Showing action menu for " + entity1.GetDisplayName() +
" and " + entity2.GetDisplayName() );
731 m_am_entity1 = entity1;
732 m_am_entity2 = entity2;
739 entity.CombineItemsClient(
ItemBase.Cast( entity2 ) );
743 if ( entity1 == null || entity2 == null )
return;
776 int m_am_pos_x, m_am_pos_y;
781 cmenu.Show( m_am_pos_x, m_am_pos_y );
796 if (!entity1 || !entity2)
return flags;
800 bool skipSwap =
false;
806 if (
Class.
CastTo(parentWpn, swapmag1.GetHierarchyParent()))
809 if (
m_player.GetWeaponManager().CanSwapMagazine(parentWpn,swapmag2))
813 if (
Class.
CastTo(parentWpn, swapmag2.GetHierarchyParent()))
816 if (
m_player.GetWeaponManager().CanSwapMagazine(parentWpn,swapmag1))
827 if (!entity1.IsInherited(
ZombieBase ) && !entity1.IsInherited( Car ))
840 else if (entity1.GetInventory().CanAddAttachment( entity2 ))
842 if (!entity1.IsInherited(
ZombieBase ) && !entity1.IsInherited( Car ) && !entity2.IsInherited(
ZombieBase ) && !entity2.IsInherited( Car ))
847 if (!entity1.GetInventory().HasEntityInInventory(entity2) && entity1.GetInventory().CanAddEntityInCargo( entity2, entity2.GetInventory().GetFlipCargo() )) flags = flags |
InventoryCombinationFlags.
ADD_AS_CARGO;
849 if (entity1 ==
m_player.GetHumanInventory().GetEntityInHands() || entity2 ==
m_player.GetHumanInventory().GetEntityInHands())
853 if (entity1 ==
m_player.GetHumanInventory().GetEntityInHands())
878 PluginRecipesManager plugin_recipes_manager = PluginRecipesManager.Cast(
GetPlugin( PluginRecipesManager ) );
892 m_Body.RemoveItem(
m_Atts.GetWrapper() );
906 m_Body.RemoveItem( att );
915 RecomputeOpenedContainers();
965 m_Body.RemoveItem( cargo );
973 RecomputeOpenedContainers();
979 EntityAI item_in_hands = player.GetHumanInventory().GetEntityInHands();
996 target_cargo =
m_Entity.GetInventory().GetCargo();
997 #ifdef PLATFORM_CONSOLE
1009 target_cargo = target_entity.GetInventory().GetCargo();
1010 #ifdef PLATFORM_CONSOLE
1011 if( cargo.HasItem( item ) )
1021 if( target_cargo && target_entity )
1030 #ifdef PLATFORM_CONSOLE
1035 dst.
SetCargoAuto(target_cargo, item,
x,
y, item.GetInventory().GetFlipCargo());
1039 item.GetInventory().GetCurrentInventoryLocation(src);
1043 #ifdef PLATFORM_CONSOLE
1044 if(dst.
IsValid() && target_entity.GetInventory().LocationCanAddEntity(dst))
1046 if( c_x >
x && c_y >
y && target_entity.GetInventory().LocationCanAddEntity(dst))
1051 Icon icon = cargo.GetIcon( item );
1055 if( w && w.FindAnyWidget(
"Cursor") )
1073 if( !item || !item_in_hands )
1082 if( item_in_hands.GetInventory().GetCargo() )
1084 c_x = item_in_hands.GetInventory().GetCargo().GetHeight();
1085 c_y = item_in_hands.GetInventory().GetCargo().GetWidth();
1088 if( c_x >
x && c_y >
y && item_in_hands.GetInventory().CanAddEntityInCargoEx( item, 0,
x,
y, item.GetInventory().GetFlipCargo() ) )
1100 if( w.FindAnyWidget(
"Cursor") )
1102 w.FindAnyWidget(
"Cursor").SetColor( color );
1106 string name = w.GetName();
1107 name.Replace(
"PanelWidget",
"Cursor" );
1108 w.FindAnyWidget(
name ).SetColor( color );
1121 receiver.GetUserData(slots_icon);
1136 float stack_max = item_base.GetTargetQuantityMax(slot_id);
1139 if( !item.GetInventory().CanRemoveEntity() || !player.CanManipulateInventory() )
1147 if( player.GetWeaponManager().CanAttachMagazine( wpn, mag ) )
1149 player.GetWeaponManager().AttachMagazine( mag );
1151 else if(player.GetWeaponManager().CanSwapMagazine( wpn, mag ))
1153 player.GetWeaponManager().SwapMagazine( mag );
1156 else if( receiver_item )
1158 if( receiver_item != item )
1160 if( (
ItemBase.Cast( receiver_item ) ).CanBeCombined(
ItemBase.Cast( item ) ) )
1162 (
ItemBase.Cast( receiver_item ) ).CombineItemsClient(
ItemBase.Cast( item ) );
1166 if( !receiver_item.GetInventory().CanRemoveEntity() )
1172 else if( slot_owner && slot_owner.GetInventory().CanAddAttachmentEx( item, slot_id ) )
1174 if( stack_max == 0 || stack_max >= item_base.GetQuantity() )
1176 player.PredictiveTakeEntityToTargetAttachmentEx(slot_owner, item, slot_id);
1178 else if( stack_max != 0 && stack_max < item_base.GetQuantity() )
1180 item_base.SplitIntoStackMaxClient( slot_owner, slot_id );
1183 else if( slot_owner && slot_owner.GetInventory().CanAddAttachment( item ) )
1185 if( stack_max == 0 || stack_max >= item_base.GetQuantity() )
1187 player.PredictiveTakeEntityToTargetAttachment(slot_owner, item);
1189 else if( stack_max != 0 && stack_max < item_base.GetQuantity() )
1191 item_base.SplitIntoStackMaxClient( slot_owner, -1 );
1194 else if( target_att_entity.GetInventory().CanAddAttachment( item ) )
1196 if( stack_max == 0 || stack_max >= item_base.GetQuantity() )
1198 player.PredictiveTakeEntityToTargetAttachment(target_att_entity, item);
1200 else if( stack_max != 0 && stack_max < item_base.GetQuantity() )
1202 item_base.SplitIntoStackMaxClient( target_att_entity, -1 );
1205 else if( ( target_att_entity.GetInventory().CanAddEntityInCargo( item, item.GetInventory().GetFlipCargo() ) && ( !player.GetInventory().HasEntityInInventory( item ) || !
m_Entity.GetInventory().HasEntityInCargo( item )) ) || player.GetHumanInventory().HasEntityInHands( item ) )
1224 if( entity.GetSlotsCountCorrect() > 0 )
1227 m_Atts.InitAttachmentGrid( 1 );
1238 if( entity.GetInventory().GetCargo() )
1259 bool hideCargo =
m_Entity.GetInventory().IsInventoryLockedForLockType( HIDE_INV_FROM_SCRIPT ) || !
m_Entity.CanDisplayCargo() || m_ForcedHide;
1272 RecomputeOpenedContainers();
1279 for (
int i = 0; i < m_Body.Count(); i++)
1281 m_Body.Get( i ).OnShow();
1294 if( item.GetInventory().GetAttachmentSlotsCount() > 0 )
1306 Inventory.GetInstance().UpdateConsoleToolbar();
1309 if( item.GetInventory().GetCargo() )
1313 cont.GetRootWidget().SetSort( sort );
1314 cont.SetEntity( item );
1321 Inventory.GetInstance().UpdateConsoleToolbar();
1329 cont.ShowFalseCargoHeader(
false);
1336 cont.SetAlternateFalseTextHeaderWidget(null);
1339 RecomputeOpenedContainers();
1349 m_Body.RemoveItem( old_cont );
1354 Inventory.GetInstance().UpdateConsoleToolbar();
1362 m_Body.RemoveItem( old_att_cont );
1363 delete old_att_cont;
1366 Inventory.GetInstance().UpdateConsoleToolbar();
1368 RecomputeOpenedContainers();
1373 super.UpdateInterval();
1379 bool hideCargo =
m_Entity.GetInventory().IsInventoryLockedForLockType( HIDE_INV_FROM_SCRIPT ) || !
m_Entity.CanDisplayCargo() || m_ForcedHide;
1416 for (
int i = 0; i < m_Body.Count(); i++ )
1418 m_Body.Get( i ).OnShow();
1424 string name = w.GetName();
1425 name.Replace(
"PanelWidget",
"Render");
1437 #ifdef DIAG_DEVELOPER
1438 if (
g_Game.IsLeftCtrlDown())
1439 ShowActionMenu(selectedItem);
1441 if (CanSplitEx(selectedItem))
1443 selectedItem.OnRightClick();
1454 if (
g_Game.IsLeftCtrlDown())
1456 if (controlledPlayer.CanDropEntity(selectedItem))
1458 if (selectedItem.GetTargetQuantityMax() < selectedItem.GetQuantity())
1459 selectedItem.SplitIntoStackMaxClient(null, -1);
1461 controlledPlayer.PhysicalPredictiveDropItem(selectedItem);
1465 bool draggable = !controlledPlayer.GetInventory().HasInventoryReservation(selectedItem, null ) && !controlledPlayer.GetInventory().IsInventoryLocked() && selectedItem.GetInventory().CanRemoveEntity() && !controlledPlayer.IsItemsToDelete();
1483 string name = w.GetName();
1484 name.Replace(
"PanelWidget",
"Render");
1495 EntityAI itemInHands = controlledPlayer.GetHumanInventory().GetEntityInHands();
1497 if (!item.GetInventory().CanRemoveEntity())
1500 if (controlledPlayer.GetInventory().HasEntityInInventory(item) && controlledPlayer.GetHumanInventory().CanAddEntityInHands(item))
1502 controlledPlayer.PredictiveTakeEntityToHands(item);
1506 if (controlledPlayer.GetInventory().CanAddEntityToInventory(item) && controlledPlayer.GetHumanInventory().CanRemoveEntityInHands())
1512 if (controlledPlayer.GetHumanInventory().CanAddEntityInHands(item))
1513 controlledPlayer.PredictiveTakeEntityToHands(item);
1520 name.Replace(
"PanelWidget",
"Temperature");
1521 w.FindAnyWidget(
name).Show(
false);
1534 if( item_in_hands && item_in_hands.GetCompEM() )
1538 bool show_electricity_icon = item_in_hands.GetCompEM().HasElectricityIcon();
1539 GetRootWidget().FindAnyWidget(
"electricity" ).Show( show_electricity_icon );
1542 if( GetRootWidget().
FindAnyWidget(
"electricity_can_work" ) )
1544 bool show_electricity_can_work_icon = item_in_hands.GetCompEM().CanWork() && !item_in_hands.IsRuined();
1545 GetRootWidget().FindAnyWidget(
"electricity_can_work" ).Show( show_electricity_can_work_icon );
1550 GetRootWidget().FindAnyWidget(
"electricity" ).Show(
false );
1559 for (i = 0; i < m_Body.Count(); i++)
1561 m_Body.Get( i ).OnHide();
1567 for (i = 0; i < m_Body.Count(); i++)
1569 m_Body.Get( i ).OnShow();
1574 w.FindAnyWidget(
"opened").Show(
m_Hidden);
1575 w.FindAnyWidget(
"closed").Show(!
m_Hidden);
1585 RecomputeOpenedContainers();
1594 RecomputeOpenedContainers();
void Inventory(LayoutHolder parent)
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
FindInventoryLocationType
flags for searching locations in inventory
PluginBase GetPlugin(typename plugin_type)
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]
bool CanSetActionFromInventory(ItemBase mainItem, ItemBase targetItem)
AttachmentsWrapper GetWrapper()
TextWidget GetFalseHeaderTextWidget()
void InitAttachmentGrid(int att_row_index)
void ShowFalseAttachmentsHeader(bool show)
proto native DayZPlayer GetPlayer()
proto native int GetItemCount()
proto native int GetWidth()
proto native int GetHeight()
represents base for cargo storage for entities
Super root of all classes in Enforce script.
void SetColor(Widget w, int color)
static ColorManager GetInstance()
override EntityAI GetFocusedItem()
override float GetFocusedContainerHeight(bool contents=false)
override float GetFocusedContainerYScreenPos(bool contents=false)
void CargoContainer(LayoutHolder parent, bool is_attachment=false)
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
script counterpart to engine's class Inventory
override void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
ref map< EntityAI, ref CargoContainer > m_AttachmentCargos
void DropReceived(Widget w, int x, int y, CargoContainer cargo)
override bool InspectItem()
ref map< EntityAI, AttachmentsWrapper > m_AttachmentAttachmentsContainers
void ShowAtt(EntityAI entity)
void ScrollToActiveContainer(Container active_container)
ref map< EntityAI, ref Attachments > m_AttachmentAttachments
override bool TransferItem()
void AttachmentRemoved(EntityAI item, string slot, EntityAI parent)
void DoubleClick(Widget w, int x, int y, int button)
void OnPerformCombination(int combinationFlags)
int GetRecipeCount(bool recipe_anywhere, EntityAI entity1, EntityAI entity2)
void DraggingOverHeader2(Widget w, int x, int y, Widget receiver)
ref HandsHeader m_CollapsibleHeader
override bool OnSelectButton()
override bool TransferItemToVicinity()
EntityAI GetItemPreviewItem(Widget w)
void ShowActionMenuCombine(EntityAI entity1, EntityAI entity2, int combinationFlags)
ScrollWidget m_ScrollWidget
override bool IsLastIndex()
override void SetLayoutName()
override void SetLastActive()
ref HandsPreview m_HandsPreview
override void UpdateInterval()
void AttachmentAdded(EntityAI item, string slot, EntityAI parent)
bool DraggingOverGrid(Widget w, int x, int y, Widget reciever, CargoContainer cargo)
override bool EquipItem()
override void DraggingOverHeader(Widget w, int x, int y, Widget receiver)
override bool IsItemWithQuantityActive()
void TakeAsAttachment(Widget w, Widget receiver)
void OnDropReceivedFromHeader2(Widget w, int x, int y, Widget receiver)
void HandsContainer(LayoutHolder parent)
override Header GetHeader()
override void UnfocusGrid()
void CollapseButtonOnMouseButtonDown(Widget w)
ref CargoContainer m_CargoGrid
int GetCombinationFlags(EntityAI entity1, EntityAI entity2)
override void UnfocusAll()
override void Insert(LayoutHolder container, int pos=-1, bool immedUpdate=true)
void MouseClick2(Widget w, int x, int y, int button)
override void SetActive(bool active)
override bool SplitItem()
override bool IsItemActive()
ref array< int > m_AttachmentSlotsSorted
static const int LOAD_CHAMBER
static const int ADD_AS_CARGO
static const int TAKE_TO_HANDS
static const int SET_ACTION
static const int ADD_AS_ATTACHMENT
static const int RECIPE_ANYWHERE
static const int COMBINE_QUANTITY2
proto native bool IsValid()
verify current set inventory location
proto native void SetCargoAuto(notnull CargoBase cargo, EntityAI e, int row, int col, bool flip)
based on Cargo.IsProxyCargo uses SetProxyCargo or SetCargo respectively
proto native bool CompareLocationOnly(notnull InventoryLocation other)
proto native bool GetFlip()
returns flip status of cargo
static proto native int GetSlotIdFromString(string slot_name)
converts string to slot_id
static proto native owned string GetSlotName(int id)
converts slot_id to string
provides access to slot configuration
override bool CanBeCombined(EntityAI other_item, bool reservation_check=true, bool stack_max_limit=false)
override bool CanBeSplit()
Widget GetCenterDropzone()
void ShowSourceDropzone(EntityAI item)
void SetHandsPreview(HandsPreview hansd_preview)
EntityAI GetSelectedItem()
Widget GetRightDropzone()
bool IsMicromanagmentMode()
void SetWidgetDraggable(Widget w, bool draggable)
void SetIsDragging(bool is_dragging)
static ItemManager GetInstance()
static int HasItemQuantity(notnull EntityAI item)
static void TakeOrSplitToInventoryLocation(notnull PlayerBase player, notnull InventoryLocation dst)
static void TakeOrSplitToInventory(notnull PlayerBase player, notnull EntityAI target, notnull EntityAI item)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
void PrintString(string s)
Helper for printing out string expression. Example: PrintString("Hello " + var);.
proto void GetMousePos(out int x, out int y)