我正在努力弄清楚如何扩展creep类以在新的javascript mmo游戏中添加我自己的函数,Screeps - > www.screeps.com
有人想出来了吗?
由于
答案 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,本地存储。