Files
OpenRA/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnMinelaying.cs
let5sne.win10 9cf6ebb986
Some checks failed
Continuous Integration / Linux (.NET 8.0) (push) Has been cancelled
Continuous Integration / Windows (.NET 8.0) (push) Has been cancelled
Initial commit: OpenRA game engine
Fork from OpenRA/OpenRA with one-click launch script (start-ra.cmd)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 21:46:54 +08:00

45 lines
1.1 KiB
C#

using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
public class GrantConditionOnMinelayingInfo : ConditionalTraitInfo, Requires<MinelayerInfo>
{
[FieldLoader.Require]
[GrantedConditionReference]
[Desc("Condition to grant.")]
public readonly string Condition = null;
public override object Create(ActorInitializer init)
{
return new GrantConditionOnMinelaying(this);
}
}
public class GrantConditionOnMinelaying : ConditionalTrait<GrantConditionOnMinelayingInfo>, INotifyMineLaying
{
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionOnMinelaying(GrantConditionOnMinelayingInfo info)
: base(info)
{
}
void INotifyMineLaying.MineLaid(Actor self, Actor mine)
{
if (conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
}
void INotifyMineLaying.MineLaying(Actor self, CPos location)
{
conditionToken = self.GrantCondition(Info.Condition);
}
void INotifyMineLaying.MineLayingCanceled(Actor self, CPos location)
{
if (conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
}
}
}