GUI Update

By no means finished, but a solid foundation going forwards. I tried to make it adaptive, mostly for my own sake: it should work with any resolution more or less properly.

Anyway, here goes:

Besides GUI, I’ve also been moving most of the stuff that’s been hardcoded out into the data. It’s mostly a “what I wish the data would look like” at this point, but the build tree is already loaded from disk in the video. Here’s what a Rasvelg (Coven T7 unit) file looks like:

id: rasvelg
tier: 7
statistics:
    offense: 18
    defense: 18
    damage: 30..40
    hits: 150
    speed: 7
    initiative: 10
    growth: 1
    cost: 4000g+1cr
abilities:
    - flying
    - giant
    - <inline>:
        id: transform
        type: action
        when:
            - battle
            - army
        condition: >
            (inTown() && town.isFaction("coven") && town.built("coven/walking-hut")) ||
            (inHeroArmy() && hero.visited("coven/walking-hut"))
        effect: |
            stack.trainTo("coven/yaga");

That <inline> ability should allow creature-unique abilities to be defined in-place. Normally you’d reference a shared ability (e.g., flying, spellcaster).

Last but not least: scripting! After some deliberation I’ve settled on ChaiScript over Lua, as it promises smoother integration with modern C++. We’ll see about that, but meanwhile it’s been fairly frictionless. In fact, that drop-down console feeds into a ChaiScript interpreter.

+ Credits

Coven town background by u/revesvans.

Witch portrait placeholder — Witch by Mark Belokopytov under CC BY-ND 2.0.

Raven icon by Lorc under CC BY 3.0.

Castle (heavily modified) by Delapouite under CC BY 3.0.

Hero sprite placeholder — capital "H" of Morris Roman font by W. Morris, 1893.