38 override void CreateConditionComponents()
44 override void OnActionInfoUpdate(
PlayerBase player, ActionTarget target,
ItemBase item)
51 m_Text =
"#build " + constrution_part.GetName();
55 override bool CanBeUsedLeaning()
60 override bool CanBeUsedInFreelook()
67 if (player.IsPlacingLocal() || player.IsPlacingServer())
71 if (player.GetBrokenLegs() ==
eBrokenLegs.BROKEN_LEGS)
75 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
78 if ((!
GetGame().IsDedicatedServer()))
80 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item,
m_VariantID))
89 override bool ActionConditionContinue(ActionData action_data)
92 Construction construction = base_building.GetConstruction();
93 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
96 check_data.m_PartName = part_name;
97 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
99 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem,
true);
102 bool collides = construction.IsCollidingEx(check_data);
104 return !collides && canBuild;
112 override void OnFinishProgressServer(ActionData action_data)
115 Construction construction = base_building.GetConstruction();
117 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
120 check_data.m_PartName = part_name;
121 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
123 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem,
true))
126 construction.BuildPartServer(action_data.m_Player, part_name,
AT_BUILD_PART);
132 override string GetSoundCategory(ActionData action_data)
134 return "Base_building";
137 override ActionData CreateActionData()
139 BuildPartActionData action_data =
new BuildPartActionData;
144 override bool SetupAction(
PlayerBase player, ActionTarget target,
ItemBase item, out ActionData action_data,
Param extra_data = NULL)
146 if (super.SetupAction(player, target, item, action_data, extra_data))
150 if (!
GetGame().IsDedicatedServer())
185 super.WriteToContext(ctx, action_data);
187 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
193 super.ReadFromContext(ctx, action_recive_data);
196 if (ctx.Read(part_type))
207 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
209 super.HandleReciveData(action_recive_data, action_data);
217 string partName = BuildPartActionData.Cast(action_data).m_PartType;
219 string message =
string.Format(
"Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());