protected override void TraitEnabled(Actor self) { domainIndex = world.WorldActor.Trait <DomainIndex>(); resLayer = world.WorldActor.TraitOrDefault <ResourceLayer>(); claimLayer = world.WorldActor.TraitOrDefault <ResourceClaimLayer>(); scanForIdleHarvestersTicks = Info.ScanForIdleHarvestersInterval; }
public HackyAI(HackyAIInfo info, ActorInitializer init) { Info = info; World = init.World; if (World.Type == WorldType.Editor) { return; } domainIndex = World.WorldActor.Trait <DomainIndex>(); resLayer = World.WorldActor.Trait <ResourceLayer>(); territory = World.WorldActor.TraitOrDefault <ResourceClaimLayer>(); pathfinder = World.WorldActor.Trait <IPathFinder>(); isEnemyUnit = unit => Player.Stances[unit.Owner] == Stance.Enemy && !unit.Info.HasTraitInfo <HuskInfo>() && unit.Info.HasTraitInfo <ITargetableInfo>(); unitCannotBeOrdered = a => a.Owner != Player || a.IsDead || !a.IsInWorld; foreach (var decision in info.PowerDecisions) { powerDecisions.Add(decision.OrderName, decision); } }
public Freighter(Actor self, FreighterInfo info) { Info = info; Contents = new ReadOnlyDictionary <DrResourceTypeInfo, int>(contents); mobile = self.Trait <Mobile>(); resLayer = self.World.WorldActor.Trait <ResourceLayer>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); }
public HarvestResource(Actor self) { harv = self.Trait <Harvester>(); harvInfo = self.Info.Traits.Get <HarvesterInfo>(); facing = self.Trait <IFacing>(); territory = self.World.WorldActor.TraitOrDefault <ResourceClaimLayer>(); resLayer = self.World.WorldActor.Trait <ResourceLayer>(); }
public HarvestResource(Actor self) { harv = self.Trait<Harvester>(); harvInfo = self.Info.Traits.Get<HarvesterInfo>(); facing = self.Trait<IFacing>(); territory = self.World.WorldActor.TraitOrDefault<ResourceClaimLayer>(); resLayer = self.World.WorldActor.Trait<ResourceLayer>(); }
public FindAndDeliverResources(Actor self, Actor deliverActor = null) { harv = self.Trait <Harvester>(); harvInfo = self.Info.TraitInfo <HarvesterInfo>(); mobile = self.Trait <Mobile>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); this.deliverActor = deliverActor; }
public SpawnerRefineryHarvest(Actor self) { harv = self.Trait <SpawnerRefineryMaster>(); harvInfo = self.Info.TraitInfo <SpawnerRefineryMasterInfo>(); claimLayer = self.World.WorldActor.TraitOrDefault <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); domainIndex = self.World.WorldActor.Trait <DomainIndex>(); lastScanRange = harvInfo.LongScanRadius; }
public AIHarvesterManager(HackyAI ai, Player p) { this.ai = ai; world = p.World; pathfinder = world.WorldActor.Trait <IPathFinder>(); domainIndex = world.WorldActor.Trait <DomainIndex>(); resLayer = world.WorldActor.TraitOrDefault <ResourceLayer>(); claimLayer = world.WorldActor.TraitOrDefault <ResourceClaimLayer>(); }
public HarvestResource(Actor self) { harv = self.Trait <Harvester>(); harvInfo = self.Info.TraitInfo <HarvesterInfo>(); facing = self.Trait <IFacing>(); body = self.Trait <BodyOrientation>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); resLayer = self.World.WorldActor.Trait <ResourceLayer>(); }
public DrFindAndDeliverResources(Actor self, Actor deliverActor = null) { harv = self.Trait <Freighter>(); harvInfo = self.Info.TraitInfo <FreighterInfo>(); mobile = self.Trait <Mobile>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); domainIndex = self.World.WorldActor.Trait <DomainIndex>(); this.deliverActor = deliverActor; }
public SlaveMinerMasterHarvest(Actor self) { harv = self.Trait <SlaveMinerMaster>(); harvInfo = self.Info.TraitInfo <SlaveMinerMasterInfo>(); claimLayer = self.World.WorldActor.TraitOrDefault <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); domainIndex = self.World.WorldActor.Trait <DomainIndex>(); lastScanRange = harvInfo.LongScanRadius; ChildHasPriority = false; }
public FindResources(Actor self) { harv = self.Trait <Harvester>(); harvInfo = self.Info.TraitInfo <HarvesterInfo>(); mobile = self.Trait <Mobile>(); mobileInfo = self.Info.TraitInfo <MobileInfo>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); domainIndex = self.World.WorldActor.Trait <DomainIndex>(); }
public Sandworm(Actor self, SandwormInfo info) : base(self, info) { WormInfo = info; mobile = self.Trait <Mobile>(); attackTrait = self.Trait <AttackBase>(); //manager = self.World.WorldActor.Trait<ActorSpawnManager>(); resLayer = self.World.WorldActor.Trait <ResourceLayer>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); }
public FindResources(Actor self) { harv = self.Trait <Harvester>(); harvInfo = self.Info.Traits.Get <HarvesterInfo>(); mobile = self.Trait <Mobile>(); mobileInfo = self.Info.Traits.Get <MobileInfo>(); resLayer = self.World.WorldActor.Trait <ResourceLayer>(); territory = self.World.WorldActor.TraitOrDefault <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); }
public FindResources(Actor self) { harv = self.Trait<Harvester>(); harvInfo = self.Info.Traits.Get<HarvesterInfo>(); mobile = self.Trait<Mobile>(); mobileInfo = self.Info.Traits.Get<MobileInfo>(); resLayer = self.World.WorldActor.Trait<ResourceLayer>(); territory = self.World.WorldActor.TraitOrDefault<ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait<IPathFinder>(); }
public EatResource(Actor self, CPos targetcell) { harv = self.Trait <Sandworm>(); harvInfo = self.Info.TraitInfo <SandwormInfo>(); facing = self.Trait <IFacing>(); body = self.Trait <BodyOrientation>(); move = self.Trait <IMove>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); resLayer = self.World.WorldActor.Trait <ResourceLayer>(); this.targetCell = targetcell; }
public FindAndEatResources(Actor self, Actor deliverActor = null) { harv = self.Trait <Sandworm>(); harvInfo = self.Info.TraitInfo <SandwormInfo>(); mobile = self.Trait <Mobile>(); locomotorInfo = mobile.Info.LocomotorInfo; claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); domainIndex = self.World.WorldActor.Trait <DomainIndex>(); this.deliverActor = deliverActor; }
public HarvestResource(Actor self, CPos targetCell) { harv = self.Trait <Harvester>(); harvInfo = self.Info.TraitInfo <HarvesterInfo>(); facing = self.Trait <IFacing>(); body = self.Trait <BodyOrientation>(); move = self.Trait <IMove>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); resourceLayer = self.World.WorldActor.Trait <IResourceLayer>(); this.targetCell = targetCell; notifyHarvesterActions = self.TraitsImplementing <INotifyHarvesterAction>().ToArray(); }
public SpawnerHarvesterHarvest(Actor self) { harv = self.Trait <SpawnerHarvesterMaster>(); harvInfo = self.Info.TraitInfo <SpawnerHarvesterMasterInfo>(); mobile = self.Trait <Mobile>(); mobileInfo = self.Info.TraitInfo <MobileInfo>(); deploy = self.Trait <GrantConditionOnDeploy>(); claimLayer = self.World.WorldActor.TraitOrDefault <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); domainIndex = self.World.WorldActor.Trait <DomainIndex>(); tranforms = self.Trait <Transforms>(); }
protected override void TraitEnabled(Actor self) { pathfinder = world.WorldActor.Trait <IPathFinder>(); domainIndex = world.WorldActor.Trait <DomainIndex>(); resLayer = world.WorldActor.TraitOrDefault <ResourceLayer>(); claimLayer = world.WorldActor.TraitOrDefault <ResourceClaimLayer>(); // Avoid all AIs scanning for idle harvesters on the same tick, randomize their initial scan delay. scanForIdleHarvestersTicks = world.LocalRandom.Next(Info.ScanForIdleHarvestersInterval, Info.ScanForIdleHarvestersInterval * 2); scanForEnoughHarvestersTicks = Info.ProduceHarvestersInterval; }
public HackyAI(HackyAIInfo info, ActorInitializer init) { Info = info; World = init.World; domainIndex = World.WorldActor.Trait <DomainIndex>(); resLayer = World.WorldActor.TraitOrDefault <ResourceLayer>(); claimLayer = World.WorldActor.TraitOrDefault <ResourceClaimLayer>(); pathfinder = World.WorldActor.Trait <IPathFinder>(); isEnemyUnit = unit => Player.Stances[unit.Owner] == Stance.Enemy && !unit.Info.HasTraitInfo <HuskInfo>() && unit.Info.HasTraitInfo <ITargetableInfo>(); unitCannotBeOrdered = a => a.Owner != Player || a.IsDead || !a.IsInWorld; }
public AutoDeployMinersBotModule(Actor self, AutoDeployMinersBotModuleInfo info) : base(info) { world = self.World; player = self.Owner; resourceLayer = self.World.WorldActor.Trait <ResourceLayer>(); claimLayer = self.World.WorldActor.Trait <ResourceClaimLayer>(); pathFinder = self.World.WorldActor.Trait <IPathFinder>(); domainIndex = self.World.WorldActor.Trait <DomainIndex>(); var resourceTypes = self.World.WorldActor.TraitsImplementing <ResourceType>().ToArray(); var resourceType = resourceTypes.FirstOrDefault(a => string.Equals(a.Info.Type, info.TargetResourceType, StringComparison.InvariantCultureIgnoreCase)); if (resourceType == null) { throw new ArgumentException($"Couldn't find resource type: {info.TargetResourceType}"); } }
public static bool CanHarvestAt(this Actor self, CPos pos, ResourceLayer resLayer, HarvesterInfo harvInfo, ResourceClaimLayer territory) { var resType = resLayer.GetResource(pos); if (resType == null) return false; // Can the harvester collect this kind of resource? if (!harvInfo.Resources.Contains(resType.Info.Type)) return false; if (territory != null) { // Another harvester has claimed this resource: ResourceClaim claim; if (territory.IsClaimedByAnyoneElse(self as Actor, pos, out claim)) return false; } return true; }
public HackyAI(HackyAIInfo info, ActorInitializer init) { Info = info; World = init.World; if (World.Type == WorldType.Editor) return; domainIndex = World.WorldActor.Trait<DomainIndex>(); resLayer = World.WorldActor.Trait<ResourceLayer>(); territory = World.WorldActor.TraitOrDefault<ResourceClaimLayer>(); pathfinder = World.WorldActor.Trait<IPathFinder>(); isEnemyUnit = unit => Player.Stances[unit.Owner] == Stance.Enemy && !unit.Info.HasTraitInfo<HuskInfo>() && unit.Info.HasTraitInfo<ITargetableInfo>(); unitCannotBeOrdered = a => a.Owner != Player || a.IsDead || !a.IsInWorld; foreach (var decision in info.PowerDecisions) powerDecisions.Add(decision.OrderName, decision); }