Why not to tweak it inside?

This commit is contained in:
korenkonder
2024-03-06 20:40:24 +03:00
parent ca8e169113
commit dded211d45
2 changed files with 52 additions and 54 deletions
+47 -49
View File
@@ -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;
+5 -5
View File
@@ -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();