2023-08-09 Math App Task 4

 

Design

Dizains: https://www.figma.com/file/cEcBpfXCgl0e7IBqI4bAnX/Math-App?node-id=514%3A67556&mode=dev

Zālei / Fonam arī būs visuals, pašlaik var nelikt, bet ieplānot, ka būs

 

image-20230809081728637

 

Model

Pozīcijām un vektoriem izmantot math lib ThreeJS (ar TypeScript @types)

Data structure apmēram šāda - interfaces:

Map
map_id: int,
layers: MapLayer[],
player: Player,
map_position: Vector2D
map_size: Vector2D
map_zoom_level: float
Player
player_id: int,
player_position: Vector2D,
player_movement_target: Vector2D,
direction: EnumDirection,
animation_state: EnumAnimation,
wearable_items_on_player: ShopItem[],
bought_items: ShopItem[],
lives: int,
honey_points: int,
MapLayer
map_layer_id: int,
order_idx: int
map_items: MapItem[]
MapItem
map_item_id: int,
map_item_type: EnumMapItemType, //objects and background tiles
map_item_position: Vector2D,
map_item_size: Vector2D,
map_item_repeatable: bool, // background tiles can be repeated
ShopItem
shop_item_id: int,
shop_item_type: EnumShopItem,
is_wearable: bool,
honey_points: int

Map un visi entities glabāsies nākotnē backend, bet sākotnēji var uztaisīt, ka map.json tiek ielādēts app pusē no faila.

 

Controller

Izveidot ControllerMap, kurš apstrādā funkcijas, kad nepieciešams, kaut ko pamainīt map datu struktūrā

 

View

Izveidot ScreenMap, ComponentMapLayer, ComponentMapItem, ComponentPlayer. Visiem Model interaces, kuriem vajag visuals savu component izveidot. Uzejot uz ūdenskrituma (no vienalga kuras puses), atveras math uzdevumu spēle.

Atkarībā no telefona ekrāna rezolūcijas mainās map zoom level (to implementēt ar style->transform->scale). Map position implementēt ar style->transform->translate (veļāk būs ārī panresponder, ka ar 2 pirkstiem varēs zoom)

FYI pirms kartes skata būs onboarding Screens un ScreenMainMenu, tos tagad netaisīt, bet atcerēties, ka tādi būs!

image-20230809083351673

 

Web based map editor

Uztasīt TypeScript/ ReactJS / index.html / NodeJS express based map editor, kurš spēj saglabāt map.json failu. Nākotnē glabās DB, pirmai versijai var map.json. Implementē arī iespēju norādīt, kur Player sāk spēli, pozīciju. Atceries, ka MapItems ir arī map_item_size un map_item_repeatable, kas nozīmē, ka dažiem items ir TILING funkcija, ka viņi atkārtojas, ja viņus ievelk in range.

Jābūt Undo / Redo! Jābūt Confirm messages, kad delete layers.

Map size ir jābūt Dynamic, based on min (x, y) un max (x, y) map_item position

MapItem structures priekš library saglabāt kā JSON šobrīd (velāk būs DB) map_items.json

image-20230809082904726

image-20230809085018750