Editorial illustration: The main menu from data to buttons

The main menu from data to buttons

The problem I needed to solve

After Hokm, Dalo needed a shared entry point. I did not want coins, games and rewards each interpreting save data through independent display logic.

Implementation in this snapshot

MainMenuPresenter.BuildUiData creates header, games, coin packs, weekly rewards and achievements. It reads MetaCatalog and economy/statistics services rather than button labels.

The design decision and its cost

Presentation data lets me describe the menu without turning its presenter into a collection of GameObjects. Invalid definitions are also filtered while lists are built.

Current boundaries

The presenter does not draw the screen by itself. Binders, prefabs and scene references still matter; an absent catalog can produce empty menu data rather than an automatically complete interface.

Menu data and the actual scene connector

A Hokm entry card may need entry cost, played games and wins together. BuildGames obtains those values from GameDefinition, StatisticsService and CurrencyService and packages GameCardUiData. CanAfford depends on coins rather than colored button text. A balance change therefore needs refreshed data and UI application. This separates incorrect affordability calculation from failure to display the correct result. BuildUiData does not purchase entry or load a scene.

BuildWeeklyStreakRewards creates entries for days one through seven, allowing a null Reward when no definition exists. BuildAchievements combines progress, target, completion and claimed status with achievement data. This does not prove one binder displays every section. game.unity references StaticMainMenuSceneConnector, which uses CurrentUiData for RefreshHeader and RefreshGameCards. A broad presenter does not mean that this connector actively renders every possible view.

StaticMainMenuSceneConnector connects to existing scene objects and subscribes to coin and statistics changes, removing those subscriptions on destruction. Paths such as Top and the Content location matter to reference discovery. This preserves scene-authored design but makes hierarchy changes a wiring concern. A technical account needs both data production and its actual consumer. Citing only the older MainMenuSceneBinder would not describe the observed path accurately; file existence and scene references are different evidence.

What this stage taught me

For me, the main menu marked the product layer’s beginning. Hokm rules stayed in place while a new layer connected players to games and their surrounding systems.

Explore Dalo

Latest devlogs

Editorial illustration: Pasur launch and telemetry in the shared structure

Pasur launch and telemetry in the shared structure

Adding Pasur needs both a correct mode handoff and valid public telemetry.

Read article
Editorial illustration: Pasur bot decisions from capture options

Pasur bot decisions from capture options

My teammate’s Pasur bot chooses among legal options without inspecting hidden opposing cards.

Read article
Editorial illustration: Capturing table cards in Pasur

Capturing table cards in Pasur

In my teammate’s implementation, Pasur combines selecting a hand card with selecting table cards. Its rules must produce valid sets and prohibit ignoring an available capture.

Read article
Dalo