我正在制作一种资源管理类型的游戏,我需要一些“集合管理器”在我的状态和对象之间。我使用的是Typescript。
比方说,这个游戏是关于养猫的。在一种状态下,玩家可以向前跳过一年。当这种情况发生时,我想要浏览猫的集合,并选择一对成为新猫的父母。在另一种状态下,玩家可以喂养10只猫(改变它们的饥饿值)。所以在两个不同的状态下,我需要更新这个猫的集合。
我在每个州中都有这个代码,猫的集合通过localStorage (有时也可以是Phaser Cache)传递。因此,代码变得相当混乱。
所以我想在状态和这个对象集合之间创建一个抽象层。这将负责更新猫,创建新的猫,并根据通过的标准返回猫的子集。我希望这个东西是一个静态层,这样我就不必在状态之间传递它。我希望能够简单地调用如下函数:
catManager.generateNewCats(10);
catManager.getCats({minAge:2, maxAge:5});
catManager.incrementAges();你将如何组织这次会议?
发布于 2016-05-25 09:45:33
这里有一个潜在的解决方案:
/** Creates a Guid (UUID v4) */
function createId(): string {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
class Cat {
id: string;
constructor() {
this.id = createId();
}
}
class Manager {
cats: {}
getNew(howMany: number): Cat[] {
const result: Cat[] = [];
for (let index = 0; index < howMany; index++) {
const cat = new Cat();
this.cats[cat.id] = cat;
}
return result;
}
}
export const manager = new Manager();您始终可以通过Id来标识cat。如果需要,您可以将管理器扩展到本地存储等位置进行缓冲。
https://stackoverflow.com/questions/37425783
复制相似问题