是否有“简单”的方法为JavaFX使用protobuf?

时间:2014-10-09 16:45:54

标签: java javafx protocol-buffers

我正在使用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正在使用" Observable"事情很重要。例如,我将此代码写入" bind"角色形象及其状态:

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),必须将每个字段包装为Observable,并且不应使用原始构建器。这不是不可能,但似乎太乏味了。

是否有一些库(或代码生成器?)可以使用JavaFX轻松使用protobuf?

0 个答案:

没有答案