ConstructionGL2 Part 2: Better guided steps and recipes. (#5103)
This commit is contained in:
committed by
GitHub
parent
5be8271907
commit
5a5006e4cf
@@ -39,13 +39,12 @@ namespace Content.Server.Construction
|
||||
_sawmill = _logManager.GetSawmill(SawmillName);
|
||||
|
||||
InitializeGraphs();
|
||||
InitializeSteps();
|
||||
InitializeGuided();
|
||||
InitializeInteractions();
|
||||
InitializeInitial();
|
||||
|
||||
SubscribeLocalEvent<ConstructionComponent, ComponentInit>(OnConstructionInit);
|
||||
SubscribeLocalEvent<ConstructionComponent, ComponentStartup>(OnConstructionStartup);
|
||||
SubscribeLocalEvent<ConstructionComponent, GetOtherVerbsEvent>(AddDeconstructVerb);
|
||||
SubscribeLocalEvent<ConstructionComponent, ExaminedEvent>(HandleConstructionExamined);
|
||||
}
|
||||
|
||||
private void OnConstructionInit(EntityUid uid, ConstructionComponent construction, ComponentInit args)
|
||||
@@ -94,74 +93,6 @@ namespace Content.Server.Construction
|
||||
PerformActions(uid, null, node.Actions);
|
||||
}
|
||||
|
||||
private void AddDeconstructVerb(EntityUid uid, ConstructionComponent component, GetOtherVerbsEvent args)
|
||||
{
|
||||
if (!args.CanAccess)
|
||||
return;
|
||||
|
||||
if (component.TargetNode == component.DeconstructionNode ||
|
||||
component.Node == component.DeconstructionNode)
|
||||
return;
|
||||
|
||||
Verb verb = new();
|
||||
//verb.Category = VerbCategories.Construction;
|
||||
//TODO VERBS add more construction verbs? Until then, removing construction category
|
||||
verb.Text = Loc.GetString("deconstructible-verb-begin-deconstruct");
|
||||
verb.IconTexture = "/Textures/Interface/hammer_scaled.svg.192dpi.png";
|
||||
|
||||
verb.Act = () =>
|
||||
{
|
||||
SetPathfindingTarget(uid, component.DeconstructionNode, component);
|
||||
if (component.TargetNode == null)
|
||||
{
|
||||
// Maybe check, but on the flip-side a better solution might be to not make it undeconstructible in the first place, no?
|
||||
component.Owner.PopupMessage(args.User, Loc.GetString("deconstructible-verb-activate-no-target-text"));
|
||||
}
|
||||
else
|
||||
{
|
||||
component.Owner.PopupMessage(args.User, Loc.GetString("deconstructible-verb-activate-text"));
|
||||
}
|
||||
};
|
||||
|
||||
args.Verbs.Add(verb);
|
||||
}
|
||||
|
||||
private void HandleConstructionExamined(EntityUid uid, ConstructionComponent component, ExaminedEvent args)
|
||||
{
|
||||
if (GetTargetNode(uid, component) is {} target)
|
||||
{
|
||||
args.PushMarkup(Loc.GetString(
|
||||
"construction-component-to-create-header",
|
||||
("targetName", target.Name)) + "\n");
|
||||
}
|
||||
|
||||
if (component.EdgeIndex == null && GetTargetEdge(uid, component) is {} targetEdge)
|
||||
{
|
||||
var preventStepExamine = false;
|
||||
|
||||
foreach (var condition in targetEdge.Conditions)
|
||||
{
|
||||
preventStepExamine |= condition.DoExamine(args);
|
||||
}
|
||||
|
||||
if (!preventStepExamine)
|
||||
targetEdge.Steps[0].DoExamine(args);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetCurrentEdge(uid, component) is {} edge)
|
||||
{
|
||||
var preventStepExamine = false;
|
||||
|
||||
foreach (var condition in edge.Conditions)
|
||||
{
|
||||
preventStepExamine |= condition.DoExamine(args);
|
||||
}
|
||||
|
||||
if (preventStepExamine) return;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
Reference in New Issue
Block a user