如何在screeps中扩展creep类

时间:2014-11-22 17:44:35

标签: javascript screeps

我正在努力弄清楚如何扩展creep类以在新的javascript mmo游戏中添加我自己的函数,Screeps - > www.screeps.com

有人想出来了吗?

由于

2 个答案:

答案 0 :(得分:5)

有点旧线程,我不确定自从初始查询发布以来Screeps是否已更改,但这是我的想法......

为什么有一个包装类?为什么不延长提供Creep类的原创/游戏?

e.g。

Creep.prototype.myFunction = function(target){
         // my logic
       }

请务必查看screeps继承结构..(Google screeps API并查看着陆页上的'Prototypes'部分)

这可以节省大量重复代码,例如,“Structure”原型中的一个继承函数声明可以为每个单独的Structure子类协议保存单独的声明。

希望这有帮助。

答案 1 :(得分:3)

我不知道如何做到这一点,但我创建了一个像这样的包装类:

您创建了一个调用内存的函数,并尝试使用它的属性。见下文: var _ = require(" lodash");

function MyCreep(creep){
    this.creep = creep;
    this.memoryProp = creep.memory;
}

MyCreep.prototype.memoryFunc = function(){
    return this.creep.memory;
};

MyCreep.prototype.moveTo = function(target){
    this.creep.moveTo(target);
}

MyCreep.prototype.myFunction = function(target){
    //TODO something
}

因此,当我需要处理蠕变时,我会这样做:

var myCreeps = [];
for (var creep in Game.creeps){
    creep.memory.role = "hello memory";
    var myCreep = new MyCreep(Game.creeps[creep]);
    myCreeps.push(myCreep);      ;
    console.log("original creep memory: "+creep.memory.role);
    console.log("my creep memory func: "+myCreep.memoryFunc().role);
    console.log("my creep memory prop: "+myCreep.memoryProp.role);
}

var myCreeps = [];
_.forEach(Game.creeps, function(creep){
    var myCreep = new MyCreep(creep);
    myCreeps.push(myCreep);
});

然后处理myCreeps,本地存储。