java有没有“简单”的方法来使用protobuf for JavaFX?
我正在用JavaFX制作TCG游戏。我创建protobuf文件来表示各种游戏状态。下面是我写的protobuf的一些片段:
message Board {
repeated GameObject mainDeck = 1;
repeated GameObject hand = 2;
repeated GameObject graveyard = 3;
repeated GameObject exile = 4;
repeated Character character = 5;
}
message Character {
optional GameObject character = 1;
repeated GameObject item = 2;
optional Position position = 3 [default = STAND];
}
JavaFX大量使用“可观察”的东西。例如,我编写了以下代码来“绑定”角色图像及其状态:
private final ObjectProperty<Character> character = new SimpleObjectProperty<>(this, "character", Character.getDefaultInstance());
private void initialize() {
// Other initialize code omitted
ImageView img = new ImageView();
StringBinding url = Bindings.select(character, "character", "imageUrl");
img.imgProperty.bind(() -> ImageCache.getImage(url.get()), url);
ObjectBinding<Position> p = Bindings.select(character, "position");
img.rotateProperty.bind(
Bindings.createDoubleBinding(() -> {
if (p.get() == null) {
return 0.0;
}
switch (p.get()) {
case REST:
return 90.0;
case REVERSE:
return 180.0;
default:
return 0.0;
}
}, p));
}
注意,我在这里使用的是不可变的protobuf对象
然而,正如你所知,TCG的游戏状态是高度动态的,变化可能发生在整块(一个角色死了;角色和它拥有的所有物品都将进入墓地)或一小块(一些强大的魔法会分解一个物品;该物品将进入流放区)
对于不可变的protobuf对象,支持这种动态将是困难和/或低效的
然而,要使用可变protobuf对象(=builder),必须将每个字段包装为可观察的,而不应使用原始的builder。这并非不可能,但似乎太单调乏味了
是否有一些库(或代码生成器?)在JavaFX中轻松使用protobuf
共 (0) 个答案