6EXHALB3E5HP3IQVC47M4RVZE2JERJHX37GOOHPYIVAFBWSWUX7QC
FLGWAOMMMGBO5ICWD3SXBOGJQA6LL2ZHTIQIMGY5VNFAETKDPPYAC
6OD22ZHHEANTKREVSWHHAWEDVUFWTZHUKJD35ICBPWYERYPABGDQC
DPJCZOPIKAKQIS4YRXETBSJA5ZTL2KQESSJE2TEZFLRQARXUVFXQC
Y7VEWZEPUKX2WWPTQCUSIF7YMRUC6JZQNUU5OX3HQDB4GSDSTQZAC
HXHNGFB2VCXB6YXDND35HJI22GBJC3QTSUR2TK3M3LXGJHVNXVHAC
VGU4VI6EMYILKHN3TFRCEGU7LL6NM6PW6RHRC726YUKO6RBORBQQC
EMED7UWAGESRTWJJWVXRL27O4XMBGZDDAU4LNVF3MQAYKFKRDNXQC
Z3E7XJOW6NSBDYRDKSGTOAEJSPATAUX4JUFCL4DIL3372GL4K52QC
HUH4SI4HXIP72KQSJP2I4ELHX5KUQZM7FFGKZZGJ33DF7E3JHMYQC
<UIContext.Provider value={uiState}>
<PixiComponent onFocusedNodeChange={handleFocusedNodeChange} />
<Sidebar>
<Tabs
value={activeTab}
labels={tabLabels}
onChange={handleActiveTabChange}
/>
{tabViews.map((component, i) => {
return (
<TabContent key={i} showContent={activeTab === i}>
{component}
</TabContent>
);
})}
</Sidebar>
</UIContext.Provider>
<PixiComponent onFocusedNodeChange={handleFocusedNodeChange} />
<Sidebar>
<Tabs
value={activeTab}
labels={tabLabels}
onChange={handleActiveTabChange}
/>
{tabViews.map((component, i) => {
return (
<TabContent key={i} showContent={activeTab === i}>
{component}
</TabContent>
);
})}
</Sidebar>
/**
* Data owned by the master "App" component, to be made available as props to ALL subcomponents (both pixi and react); react uses context providers to make this easier
* 1. world generation data, stuff that was computed off of the random seed and is stored so we can do logic off of it,
* but can be deleted/recomputed any time.
* May or may not be persisted to disk - unimportant apart from the random seed.
* 2. data about player activity in the game e.g. which nodes were allocated, what quest stage they are on
* Must be persisted to disk - this is essentially the player's "save file"
* 3. data about player activity that only influences the UI, e.g. which node was selected, but affects UI across
* very far away pixi/react components.
* Should be persisted to disk - will help the player "remember their place" in the game, but not a big deal if lost.
*
* Does NOT include UI data which is only relevant to a small part of the component hierarchy - e.g. how many seconds since last tap.
* That data should belong in state owned by subcomponents.
*/