34 super.BuildPartServerEx(player,part_name,action_id);
42 super.DismantlePartServerEx(player,part_name,action_id);
48 override void DestroyPartServer(Man player,
string part_name,
int action_id,
bool destroyed_by_connected_part =
false)
52 if (DamageSystem.GetDamageZoneFromComponentName(
m_EntityParent, part_name, damage_zone) &&
m_EntityParent.GetHealth(damage_zone,
"Health") > 0)
57 super.DestroyPartServer(player,part_name,action_id,destroyed_by_connected_part);
68 super.OnConstructionVariablesSynchronized();
141 int partId = part.
GetId();
196 int partId = part.
GetId();
250 int partId = part.
GetId();
305 int partId = part.
GetId();
363 bool wasChanged =
false;
370 changedParts.Insert(part);
381 if (part.
GetId() < 1)
384 ErrorEx(
"invalid or corrupted part ID for part " + part.
GetPartName() +
". Part ID must be > 0");
394 bool changed =
false;
425 super.AddToConstructedParts(part_name);
433 super.RemoveFromConstructedParts(part_name);
441 super.OnConstructionDoorOpenStart(params);
443 int doorIdx = (
int)params.param1;
454 super.OnConstructionDoorCloseStart(params);
456 int doorIdx = (
int)params.param1;
477 super.HandleStoreSave(ctx);
487 super.HandleStoreLoad(ctx,version);
581 return ConstructionPartRebuild;
596 if (!super.HasRequiredPart(part_name))
600 TConstructionPartVariantArray tmp =
GetRebuildingPart(part_name).GetRequiredPartsVariants();
603 bool anyVariantBuilt =
false;
606 anyVariantBuilt =
false;
607 foreach (
string partName : variantGroup)
612 if (!anyVariantBuilt)
626 if (!super.PartHasAnySupportFulfilled(part_name))
630 set<int> tmp = rebPart.GetConfiguredSupportCategories();
633 foreach (
int category : tmp)
648 set<int> tmp = rebPart.GetConfiguredSupportCategories();
649 foreach (
int category : tmp)
661 set<int> tmp = rebPart.GetConfiguredSupportCategories();
663 foreach (
int category : tmp)
665 value = rebPart.GetSupportProvided(category);
677 set<int> tmp = rebPart.GetConfiguredSupportCategories();
679 foreach (
int category : tmp)
681 value = rebPart.GetSupportProvided(category);
694 if (rebPart.IsUtilityPart())
697 set<int> tmp = rebPart.GetConfiguredSupportCategories();
699 foreach (
int category : tmp)
701 value = rebPart.GetSupportRequirement(category);
714 if (rebPart.IsUtilityPart())
717 set<int> tmp = rebPart.GetConfiguredSupportCategories();
719 foreach (
int category : tmp)
721 value = rebPart.GetSupportRequirement(category);
732 ConstructionPartRebuild rebPart;
735 if (
Class.
CastTo(rebPart, part) && !rebPart.IsUtilityPart())
737 if (rebPart.GetRequiredParts().Find(part_name) != -1)
740 TConstructionPartVariantArray tmpArr = rebPart.GetRequiredPartsVariants();
745 foreach (
string partName : variantGroup)
747 if (partName == part_name)
763 ConstructionPartRebuild rebPart;
768 name = rebPart.GetPartName();
770 if (reqPartsArray && reqPartsArray.Find(part_name) > -1)
772 if (!recurs || (recurs.Find(
name) == -1))
773 dependentParts.Insert(
name);
776 TConstructionPartVariantArray tmpArr = rebPart.GetRequiredPartsVariants();
781 foreach (
string partName : variantGroup)
783 if (partName == part_name)
784 dependentParts.Insert(
name);
791 dependentParts.Insert(
name);
796 return dependentParts;
805 if (!super.CanDisplayAttachmentCategoryConstruction(categoryName))
809 if (GUIRequiredParts.Count() > 0)
Param1< int > DoorStartParams
ConstructionPart GetConstructionPart()
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
void ConstructionBase(EntityAI parent)
void ProcessOnPartDestroyedServer(Man player, string part_name, int action_id, bool destroyed_by_connected_part=false)
ConstructionDataTypeHolder m_TypeLevelHolder
Sandstorm decay speed coef.
void ProcessOnPartDismantledServer(Man player, string part_name, int action_id)
void ProcessOnPartBuiltServer(Man player, string part_name, int action_id)
ref array< ConstructionPart > m_ConstructionPartArray
INSTANCED construction part data;.
bool IsPartConstructed(string part_name)
returns true if part constructed
ref array< ConstructionPart > m_BuiltConstructionPartArray
void QueueFullUpdateParts(array< ConstructionPart > changedParts)
void SetLockOnAttachedMaterials(string part_name, bool lock_slot)
string m_DoorConstructionPhysicsSource
Name of the construction part linked to the doors, if any (empty default)
Super root of all classes in Enforce script.
int GetSyncDataSize()
Not ready for overrides yet. All in good time.
void ComposeSyncDataOnDismantle(inout int syncData, int offset)
int CalculateLocalSyncBitMask(int syncData, int offset)
Translates the bitmask value from the main syncVariable into simple int format of 'GetSyncDataSize' s...
bool IsLocalSyncBuilt()
'true' if synced as built already
void ComposeSyncDataOnDestroy(inout int syncData, int offset)
void ComposeSyncDataOnBuild(inout int syncData, int offset)
void StoreLocalSyncBitMask(int bitmask)
Instanced construction part data classes for dynamic data, statics now stored on EntityType level in ...
static parts info, lives on EntityType level. Instanced data in 'ConstructionPart' class
override void AddToConstructedParts(string part_name)
void RemoveSupportRequirementFromSourcePart(string part_name)
bool DeserializeConstructionData(ParamsReadContext ctx, int version)
override void OnConstructionDoorCloseStart(DoorStartParams params)
override bool HandleStorageEvents()
override void HandleSyncDataDismantle(ConstructionPart part)
override bool SupportRemovalCheck(string part_name)
override void HandleSyncDataDestroy(ConstructionPart part)
ref map< int, int > m_SupportFulfillment
override void OnConstructionVariablesSynchronized()
override void DestroyPartServer(Man player, string part_name, int action_id, bool destroyed_by_connected_part=false)
bool HasRequiredPart(string part_name)
Also checks for all listed variant categories (at least 1 from each is required)
override bool UpdatePartSyncStateLocal(ConstructionPart part)
Sets local construction part state.
ref map< int, int > m_SupportRequirement
bool SetAllPartsFromSyncData(out array< ConstructionPart > changedParts=null)
returns 'true' if any part state was changed
override void RemoveFromConstructedParts(string part_name)
GetDefaultPartInstanceTypename()
override void HandleSyncDataBuild(ConstructionPart part)
void AddSupportFulfillmentFromSourcePart(string part_name)
void AddSupportRequirementFromSourcePart(string part_name)
override bool CanDisplayAttachmentCategoryConstruction(string categoryName)
client-side distance checks (valid memory point and configuration required)
override void OnConstructionDoorOpenStart(DoorStartParams params)
bool PartHasAnySupportFulfilled(string part_name)
override void BuildPartServerEx(Man player, string part_name, int action_id)
override void HandleStoreSave(ParamsWriteContext ctx)
void RemoveSupportFulfillmentFromSourcePart(string part_name)
ConstructionPartRebuild GetRebuildingPart(string part_name)
override bool HasDependentPart(string part_name)
override void DismantlePartServerEx(Man player, string part_name, int action_id)
override void InitBaseState()
array< string > GetValidDepenentPartsArray(string part_name, array< string > recurs=null)
void SerializeConstructionData(ParamsWriteContext ctx)
int GetPartLocalSyncBitMaskValue(ConstructionPart part)
Returns the translated value of 'GetSyncDataSize' size (currently 2 bits)
bool SetPartStateLocal(ConstructionPart part)
void InitBaseStateDeferred()
static int REBUILDING_STORAGE_VERSION
override void HandleStoreLoad(ParamsReadContext ctx, int version)
proto bool Write(void value_out)
proto bool Read(void value_in)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Serializer ParamsReadContext
Serializer ParamsWriteContext
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static const string Empty