有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案