Open iceBear67 opened 3 years ago
Game 游戏对象,是主要需要修改的地方
Setting
将SimpleConfig内部序列化实现换成SnakeYaml
Game是ManiHunt的核心部分,和许多地方耦合。
于是我们重新设计一下Game:
一局游戏
应该具有以下属性:
谁
?范围
是哪里?状态
是怎么样的?启动和停止
各项统计
Runner是谁
与此同时,游戏应该传入一个 Region
作为游戏范围。
Region 的语义是区域
区域
可以提供多种实现,例如:
interface GamingRegion{
boolean isInRegion(Location loc);
Location getCenter(); //Center 相当于 Lobby,即玩家等待玩家进入/开局时的地方。
void setProperty(RegionProperty prop,Object property); //例如 freezeTime Difficulty
Object getProperty(RegionProperty prop);
boolean isLocked();
void setLocked(boolean status); //解锁出生点限制。
void setLockRadius(int radius); //出生点限制范围,为了上述例子中的第一条做的准备。
}
接着我们通过RegionProvider获取到GamingRegion:
interface RegionProvider{
GamingRegion claim();
}
拓宽范围。Runner或许可以不止一个。
Runner应默认在不同的地方被空投,且当所有 Runner 死亡后游戏才判断结束。
9a8636ce83e0b4bb6acb2e82737e1bd6c0291942
根据具体情况对GameRegion等做了调整
ManiHunt 在早期开始开发的时候,由于时间紧促,设计上其实有许多问题..
例如:
Magic String
Game
本身的设计导致的问题....我们需要尽快改良这些问题,以便后续的
Additions
等功能的开发。这份 issue 将用于收集问题以供开发