From dded211d45a0bb3fd7e5870e55b41b0693cd6933 Mon Sep 17 00:00:00 2001 From: korenkonder Date: Wed, 6 Mar 2024 20:40:24 +0300 Subject: [PATCH] Why not to tweak it inside? --- src/CRE/auth_2d.cpp | 96 ++++++++++++++++++++++----------------------- src/CRE/auth_2d.hpp | 10 ++--- 2 files changed, 52 insertions(+), 54 deletions(-) diff --git a/src/CRE/auth_2d.cpp b/src/CRE/auth_2d.cpp index 43b36cf7..91f5c3f2 100644 --- a/src/CRE/auth_2d.cpp +++ b/src/CRE/auth_2d.cpp @@ -224,49 +224,6 @@ AetArgs::~AetArgs() { } -AetComp::AetComp() { - -} - -AetComp::~AetComp() { - -} - -void AetComp::Add(const char* name, aet_layout_data& data) { - this->data.insert({ name, data }); -} - -void AetComp::Clear() { - data.clear(); -} - -aet_layout_data* AetComp::Find(const char* name) { - auto elem = data.find(name); - if (elem != data.end()) - return &elem->second; - return 0; -} - -void AetComp::put_number_sprite(int32_t value, int32_t max_digits, - AetComp* comp, const char** names, const int32_t* spr_ids, spr::SprPrio prio, - vec2* pos, bool all_digits, const sprite_database* spr_db) { - if (!comp || !names || !spr_ids) - return; - - for (int32_t i = 0; i < max_digits; i++) { - int32_t digit = value % 10; - value /= 10; - - aet_layout_data* layout = comp->Find(names[i]); - if (layout) - aet_layout_data::put_sprite(spr_ids[digit], - spr::SPR_ATTR_CTR_CC, prio, pos, layout, spr_db); - - if (!all_digits && !value) - break; - } -} - aet_layout_data::aet_layout_data() : width(), height() { mat = mat4_identity; opacity = 1.0f; @@ -275,7 +232,7 @@ aet_layout_data::aet_layout_data() : width(), height() { } void aet_layout_data::put_sprite(int32_t spr_id, spr::SprAttr attr, spr::SprPrio prio, - vec2* pos, aet_layout_data* layout, const sprite_database* spr_db) { + const vec2* pos, const aet_layout_data* layout, const sprite_database* spr_db) { if (!layout) return; @@ -284,14 +241,12 @@ void aet_layout_data::put_sprite(int32_t spr_id, spr::SprAttr attr, spr::SprPrio args.id.id = spr_id; args.attr = attr; args.prio = prio; - if (pos) { - args.trans.x = args.trans.x + pos->x; - args.trans.y = args.trans.y + pos->y; - } + if (pos) + *(vec2*)&args.trans.x += *pos; spr::put_sprite(args, spr_db); } -void aet_layout_data::set_args(aet_layout_data* layout, spr::SprArgs* args) { +void aet_layout_data::set_args(const aet_layout_data* layout, spr::SprArgs* args) { if (!layout || !args) return; @@ -302,6 +257,49 @@ void aet_layout_data::set_args(aet_layout_data* layout, spr::SprArgs* args) { args->scale.z = layout->mat.row2.z; } +AetComp::AetComp() { + +} + +AetComp::~AetComp() { + +} + +void AetComp::Add(const char* name, const aet_layout_data& data) { + this->data.insert({ name, data }); +} + +void AetComp::Clear() { + data.clear(); +} + +const aet_layout_data* AetComp::Find(const char* name) { + auto elem = data.find(name); + if (elem != data.end()) + return &elem->second; + return 0; +} + +void AetComp::put_number_sprite(int32_t value, int32_t max_digits, + AetComp* comp, const char** names, const int32_t* spr_ids, spr::SprPrio prio, + const vec2* pos, bool all_digits, const sprite_database* spr_db) { + if (!comp || !names || !spr_ids) + return; + + for (int32_t i = 0; i < max_digits; i++) { + int32_t digit = value % 10; + value /= 10; + + const aet_layout_data* layout = comp->Find(names[i]); + if (layout) + aet_layout_data::put_sprite(spr_ids[digit], + spr::SPR_ATTR_CTR_CC, prio, pos, layout, spr_db); + + if (!all_digits && !value) + break; + } +} + void aet_manager_init() { if (!aet_manager) aet_manager = new AetMgr; diff --git a/src/CRE/auth_2d.hpp b/src/CRE/auth_2d.hpp index 65cf243c..7a95b9bc 100644 --- a/src/CRE/auth_2d.hpp +++ b/src/CRE/auth_2d.hpp @@ -84,8 +84,8 @@ struct aet_layout_data { aet_layout_data(); static void put_sprite(int32_t spr_id, spr::SprAttr attr, spr::SprPrio prio, - vec2* pos, aet_layout_data* layout, const sprite_database* spr_db); - static void set_args(aet_layout_data* layout, spr::SprArgs* args); + const vec2* pos, const aet_layout_data* layout, const sprite_database* spr_db); + static void set_args(const aet_layout_data* layout, spr::SprArgs* args); }; struct AetComp { @@ -94,13 +94,13 @@ struct AetComp { AetComp(); ~AetComp(); - void Add(const char* name, aet_layout_data& data); + void Add(const char* name, const aet_layout_data& data); void Clear(); - aet_layout_data* Find(const char* name); + const aet_layout_data* Find(const char* name); static void put_number_sprite(int32_t value, int32_t max_digits, AetComp* comp, const char** names, const int32_t* spr_ids, spr::SprPrio prio, - vec2* pos, bool all_digits, const sprite_database* spr_db); + const vec2* pos, bool all_digits, const sprite_database* spr_db); }; extern void aet_manager_init();