Ejemplo n.º 1
0
Source.prototype.updateJobs = function(jobManager, sourceIndex) {
    console.log('Source name ' + this.id + ' Update Jobs.')
    var memory = this.getMemory();
    var freeSpaces = memory.FreeSpaces;
    var jobs = memory.Jobs;

    var majorPriority = 0
    var sourcePriority = sourceIndex * 2
    for (var i in freeSpaces) {
        var minorPriority = (i * 2) + 1;
        console.log(' source ' + sourceIndex + ' has sourcePriority of ' + sourcePriority + ', freespaces ' + i + ' makes minorPriority of ' + minorPriority)

        var fs = freeSpaces[i]
        if (fs.ContainerId) {
            var container = Game.getObjectById(fs.ContainerId);
            // There should be an ongoing job to harvest into this container.
            var existingJob = jobs.find(function (job) {
                return job.JobType == 'Harvest'
                    && job.TargetId == fs.ContainerId;
            })
            if (existingJob == undefined) {
                var newJob = JobFactory.CreateJob('Harvest', this.id, fs.ContainerId);
                JobFactory.SetBodyRequirements(newJob, [WORK, MOVE]);
                JobFactory.SetPriority(newJob, [majorPriority, sourcePriority, minorPriority]);
                jobs.push(newJob);
                jobManager.AddJob(newJob);
            }
        }
        else
        {
            var minorPriority = (i * 2) + 1;
            console.log(' source ' + sourceIndex + ' has sourcePriority of ' + sourcePriority + ', freespaces ' + i + ' makes minorPriority of ' + minorPriority)

            var position = new RoomPosition(fs.X, fs.Y, fs.RoomName);
            // There should be a job to create & build this container.
            var existingJob = jobs.find(function (job) {
                return job.JobType == 'BuildStructure'
                    && job.TargetId == STRUCTURE_CONTAINER
                    && job.Position.X == fs.X
                    && job.Position.Y == fs.Y
                    && job.Position.Z == fs.Z
                    && job.Position.RoomName == fs.RoomName;
            });

            if (existingJob == undefined) {
                var newJob = JobFactory.CreateJob('BuildStructure', this.id, STRUCTURE_CONTAINER);
                JobFactory.AddPosition(newJob, position);
                JobFactory.SetBodyRequirements(newJob, [WORK, CARRY, MOVE]);
                JobFactory.SetPriority(newJob, [majorPriority, sourcePriority, minorPriority]);
                jobs.push(newJob);
                jobManager.AddJob(newJob);
            }
        }
    }
}
Ejemplo n.º 2
0
StructureController.prototype.updateJobs = function (jobManager) {
    console.log('StructureController name ' + this.id + ' Update Jobs.')
    var memory = this.getMemory();
    var freeSpaces = memory.FreeSpaces;
    var jobs = memory.Jobs;
    var majorPriority = 0;
    var controllerPriority = 0;

    for (var i in freeSpaces) {
        var minorPriority = i * 2;
        console.log(' controller freespaces ' + i + ' makes minorPriority of ' + minorPriority)
        var fs = freeSpaces[i];
        // There should be an ongoing job to upgrade this controller from this location.
        var position = new RoomPosition(fs.X, fs.Y, fs.RoomName);
        var controllerId = this.id
        var existingJob = jobs.find(function (job) {
            return job.JobType == 'UpgradeController'
                && job.OwnerId == controllerId
                && job.Position.X == fs.X
                && job.Position.Y == fs.Y
                && job.Position.Z == fs.Z
                && job.Position.RoomName == fs.RoomName;
        })
        if (existingJob == undefined) {
            var newJob = JobFactory.CreateJob('UpgradeController', controllerId, undefined);
            JobFactory.AddPosition(newJob, position);
            JobFactory.SetBodyRequirements(newJob, [WORK, CARRY, MOVE]);
            JobFactory.SetPriority(newJob, [majorPriority, controllerPriority, minorPriority]);
            jobs.push(newJob);
            jobManager.AddJob(newJob);
        }
    }

    if (!memory.roomVersionNumber || memory.roomVersionNumber != Memory.roomVersionNumber) {
        memory.roomVersionNumber = Memory.roomVersionNumber
        for (var i in jobs) {
            jobManager.AddJob(jobs[i]);
        }
    }
}