Esempio n. 1
0
 public Harvester(Actor self, HarvesterInfo info)
 {
     Info          = info;
     Contents      = new ReadOnlyDictionary <string, int>(contents);
     mobile        = self.Trait <Mobile>();
     resourceLayer = self.World.WorldActor.Trait <IResourceLayer>();
     claimLayer    = self.World.WorldActor.Trait <ResourceClaimLayer>();
 }
Esempio n. 2
0
        public ResourceRenderer(Actor self, ResourceRendererInfo info)
        {
            Info = info;

            ResourceLayer              = self.Trait <IResourceLayer>();
            ResourceLayer.CellChanged += AddDirtyCell;

            RenderContent = new CellLayer <RendererCellContents>(self.World.Map);
        }
Esempio n. 3
0
        protected override void TraitEnabled(Actor self)
        {
            pathfinder    = world.WorldActor.Trait <IPathFinder>();
            resourceLayer = world.WorldActor.TraitOrDefault <IResourceLayer>();
            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);
        }
Esempio n. 4
0
        public Floods(Actor self, FloodsInfo info)
            : base(info)
        {
            this.info = info;

            resourceLayer = self.World.WorldActor.Trait <IResourceLayer>();

            cells.Add(self.Location);
        }
Esempio n. 5
0
        public EditorDefaultBrush(EditorViewportControllerWidget editorWidget, WorldRenderer wr)
        {
            this.editorWidget = editorWidget;
            worldRenderer     = wr;
            world             = wr.World;

            editorLayer         = world.WorldActor.Trait <EditorActorLayer>();
            editorActionManager = world.WorldActor.Trait <EditorActionManager>();
            resourceLayer       = world.WorldActor.Trait <IResourceLayer>();
        }
Esempio n. 6
0
        protected override void TraitEnabled(Actor self)
        {
            // PERF: Avoid all AIs reevaluating assignments on the same tick, randomize their initial evaluation delay.
            scanForIdleMinersTicks = world.LocalRandom.Next(0, Info.MinimumScanDelay);

            pathfinder    = world.WorldActor.Trait <IPathFinder>();
            domainIndex   = world.WorldActor.Trait <DomainIndex>();
            resourceLayer = world.WorldActor.TraitOrDefault <IResourceLayer>();

            requestUnitProduction = player.PlayerActor.TraitsImplementing <IBotRequestUnitProduction>().ToArray();
        }
Esempio n. 7
0
        public ResourceCollector(Actor self, ResourceCollectorInfo info)
            : base(info)
        {
            this.info = info;
            Ticks     = info.InitialDelay;

            resourceLayer = self.World.WorldActor.Trait <IResourceLayer>();
            building      = self.Trait <Building>();

            rallyPoint = Exts.Lazy(() => self.IsDead ? null : self.TraitOrDefault <RallyPoint>());
        }
Esempio n. 8
0
        public TSVeinsRenderer(Actor self, TSVeinsRendererInfo info)
        {
            this.info = info;
            world     = self.World;

            resourceLayer              = self.Trait <IResourceLayer>();
            resourceLayer.CellChanged += AddDirtyCell;
            maxDensity = resourceLayer.GetMaxDensity(info.ResourceType);

            renderIndices = new CellLayer <int[]>(world.Map);
            borders       = new CellLayer <Adjacency>(world.Map);
        }
Esempio n. 9
0
 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 ResourceExplodeWeaponLayer(Actor self, ResourceExplodeWeaponLayerInfo info)
        {
            world     = self.World;
            this.info = info;

            ticks = info.Interval.Length == 2
                                ? world.SharedRandom.Next(info.Interval[0], info.Interval[1])
                                : info.Interval[0];

            resourceLayer              = self.Trait <IResourceLayer>();
            resourceLayer.CellChanged += UpdateCells;
        }
Esempio n. 11
0
        public EditorResourceBrush(EditorViewportControllerWidget editorWidget, string resourceType, WorldRenderer wr)
        {
            this.editorWidget   = editorWidget;
            ResourceType        = resourceType;
            worldRenderer       = wr;
            world               = wr.World;
            editorActionManager = world.WorldActor.Trait <EditorActionManager>();
            editorCursor        = world.WorldActor.Trait <EditorCursorLayer>();
            resourceLayer       = world.WorldActor.Trait <IResourceLayer>();
            action              = new AddResourcesEditorAction(world.Map, resourceType, resourceLayer);

            cursorToken = editorCursor.SetResource(wr, resourceType);
        }
Esempio n. 12
0
 public BaseBuilderQueueManager(BaseBuilderBotModule baseBuilder, string category, Player p, PowerManager pm,
                                PlayerResources pr, IResourceLayer rl)
 {
     this.baseBuilder   = baseBuilder;
     world              = p.World;
     player             = p;
     playerPower        = pm;
     playerResources    = pr;
     resourceLayer      = rl;
     this.category      = category;
     failRetryTicks     = baseBuilder.Info.StructureProductionResumeDelay;
     minimumExcessPower = baseBuilder.Info.MinimumExcessPower;
     if (!baseBuilder.Info.NavalProductionTypes.Any())
     {
         waterState = WaterCheck.DontCheck;
     }
 }
Esempio n. 13
0
        public SpiceBloom(Actor self, SpiceBloomInfo info)
        {
            this.info = info;

            resourceLayer = self.World.WorldActor.Trait <IResourceLayer>();

            var rs = self.Trait <RenderSprites>();

            body = new Animation(self.World, rs.GetImage(self));
            rs.Add(new AnimationWithOffset(body, null, () => self.IsDead));

            growTicks = self.World.SharedRandom.Next(info.Lifetime[0], info.Lifetime[1]);
            body.Play(info.GrowthSequences[0]);

            spurt = new Animation(self.World, rs.GetImage(self));
            rs.Add(new AnimationWithOffset(spurt, null, () => !showSpurt));
            spurt.PlayThen(info.SpurtSequence, () => showSpurt = false);
        }
Esempio n. 14
0
        public CustomBaseBuilderQueueManager(CustomBaseBuilderBotModule baseBuilder, string category, Player player,
                                             PowerManager powerManager, PlayerResources playerResources, IResourceLayer resourceLayer)
        {
            this.baseBuilder     = baseBuilder;
            world                = player.World;
            this.player          = player;
            this.powerManager    = powerManager;
            this.playerResources = playerResources;
            this.resourceLayer   = resourceLayer;
            this.category        = category;
            failRetryTicks       = baseBuilder.Info.StructureProductionResumeDelay;
            minimumExcessPower   = baseBuilder.Info.MinimumExcessPower;
            if (!baseBuilder.Info.NavalProductionTypes.Any())
            {
                waterState = WaterCheck.DontCheck;
            }

            buildingInfluence = world.WorldActor.Trait <BuildingInfluence>();
        }
 public TransformsNearResources(Actor self, TransformsNearResourcesInfo info)
 {
     resourceLayer = self.World.WorldActor.Trait <IResourceLayer>();
     delay         = Common.Util.RandomInRange(self.World.SharedRandom, info.Delay);
     this.info     = info;
 }
Esempio n. 16
0
 public SeedsResource(Actor self, SeedsResourceInfo info)
     : base(info)
 {
     this.info     = info;
     resourceLayer = self.World.WorldActor.Trait <IResourceLayer>();
 }
 public AddResourcesEditorAction(string resourceType, IResourceLayer resourceLayer)
 {
     this.resourceType  = resourceType;
     this.resourceLayer = resourceLayer;
 }
Esempio n. 18
0
 public AddResourcesEditorAction(Map map, string resourceType, IResourceLayer resourceLayer)
 {
     this.map           = map;
     this.resourceType  = resourceType;
     this.resourceLayer = resourceLayer;
 }