mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Fix level system
This commit is contained in:
@@ -14,9 +14,9 @@
|
||||
#define DOLPHIN_STATE_PATH INT_PATH(DOLPHIN_STATE_FILE_NAME)
|
||||
#define DOLPHIN_STATE_HEADER_MAGIC 0xD0
|
||||
#define DOLPHIN_STATE_HEADER_VERSION 0x01
|
||||
int level_array[30] = {100, 200, 300, 450, 600, 750, 950, 1150, 1350, 1600,
|
||||
1850, 2100, 2400, 2700, 3000, 3350, 3700, 4050, 4450, 4850,
|
||||
5250, 5700, 6150, 6600, 7100, 7600, 8100, 8650, 9200};
|
||||
int level_array[DOLPHIN_LEVEL_COUNT] = {100, 200, 300, 450, 600, 750, 950, 1150, 1350, 1600,
|
||||
1850, 2100, 2400, 2700, 3000, 3350, 3700, 4050, 4450, 4850,
|
||||
5250, 5700, 6150, 6600, 7100, 7600, 8100, 8650, 9200};
|
||||
|
||||
#define BUTTHURT_MAX 14
|
||||
#define BUTTHURT_MIN 0
|
||||
@@ -82,7 +82,7 @@ uint64_t dolphin_state_timestamp() {
|
||||
}
|
||||
|
||||
bool dolphin_state_is_levelup(int icounter) {
|
||||
for(int i = 0; i < 30; ++i) {
|
||||
for(int i = 0; i < DOLPHIN_LEVEL_COUNT; ++i) {
|
||||
if((icounter == level_array[i])) {
|
||||
return true;
|
||||
}
|
||||
@@ -91,30 +91,30 @@ bool dolphin_state_is_levelup(int icounter) {
|
||||
}
|
||||
|
||||
uint8_t dolphin_get_level(int icounter) {
|
||||
for(int i = 0; i < 29; ++i) {
|
||||
for(int i = 0; i < DOLPHIN_LEVEL_COUNT; ++i) {
|
||||
if(icounter <= level_array[i]) {
|
||||
return i + 1;
|
||||
}
|
||||
}
|
||||
return 30;
|
||||
return DOLPHIN_LEVEL_COUNT + 1;
|
||||
}
|
||||
|
||||
uint32_t dolphin_state_xp_above_last_levelup(int icounter) {
|
||||
for(int i = 1; i < 29; ++i) {
|
||||
if(icounter <= level_array[i]) {
|
||||
return icounter - level_array[i - 1];
|
||||
for(int i = DOLPHIN_LEVEL_COUNT; i >= 0; --i) {
|
||||
if(icounter >= level_array[i]) {
|
||||
return icounter - level_array[i];
|
||||
}
|
||||
}
|
||||
return icounter;
|
||||
}
|
||||
|
||||
uint32_t dolphin_state_xp_to_levelup(int icounter) {
|
||||
for(int i = 0; i < 29; ++i) {
|
||||
for(int i = 0; i < DOLPHIN_LEVEL_COUNT; ++i) {
|
||||
if(icounter <= level_array[i]) {
|
||||
return level_array[i] - icounter;
|
||||
}
|
||||
}
|
||||
return (uint32_t)-1 - icounter;
|
||||
return (uint32_t)-1;
|
||||
}
|
||||
|
||||
void dolphin_state_on_deed(DolphinState* dolphin_state, DolphinDeed deed) {
|
||||
@@ -198,4 +198,4 @@ void dolphin_state_clear_limits(DolphinState* dolphin_state) {
|
||||
}
|
||||
dolphin_state->data.butthurt_daily_limit = 0;
|
||||
dolphin_state->dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
|
||||
#define DOLPHIN_LEVEL_COUNT 29
|
||||
|
||||
typedef struct DolphinState DolphinState;
|
||||
typedef struct {
|
||||
uint8_t icounter_daily_limit[DolphinAppMAX];
|
||||
|
||||
@@ -102,7 +102,7 @@ static void render_callback(Canvas* canvas, void* _ctx) {
|
||||
}
|
||||
uint32_t xp_have = xp_levelup - xp_need;
|
||||
|
||||
if(stats->level == 30) {
|
||||
if(stats->level == DOLPHIN_LEVEL_COUNT + 1) {
|
||||
xp_progress = 0;
|
||||
} else {
|
||||
xp_progress = xp_need * 64 / xp_levelup;
|
||||
@@ -116,7 +116,7 @@ static void render_callback(Canvas* canvas, void* _ctx) {
|
||||
}
|
||||
|
||||
// portrait
|
||||
furi_assert((stats->level > 0) && (stats->level <= 30));
|
||||
furi_assert((stats->level > 0) && (stats->level <= DOLPHIN_LEVEL_COUNT + 1));
|
||||
uint16_t tmpLvl = 0;
|
||||
if(settings->sfw_mode) {
|
||||
canvas_draw_icon(canvas, 11, 2, portraits_sfw[mood][tmpLvl]);
|
||||
@@ -126,7 +126,11 @@ static void render_callback(Canvas* canvas, void* _ctx) {
|
||||
|
||||
const char* my_name = furi_hal_version_get_name_ptr();
|
||||
snprintf(level_str, 12, "Level: %hu", stats->level);
|
||||
snprintf(xp_str, 12, "%lu/%lu", xp_have, xp_levelup);
|
||||
if(stats->level == DOLPHIN_LEVEL_COUNT + 1) {
|
||||
snprintf(xp_str, 12, "Max Level!");
|
||||
} else {
|
||||
snprintf(xp_str, 12, "%lu/%lu", xp_have, xp_levelup);
|
||||
}
|
||||
canvas_set_font(canvas, FontSecondary);
|
||||
canvas_draw_str(canvas, 58, 10, my_name ? my_name : "Unknown");
|
||||
canvas_draw_str(canvas, 58, 22, mood_str);
|
||||
@@ -138,7 +142,7 @@ static void render_callback(Canvas* canvas, void* _ctx) {
|
||||
canvas_set_font(canvas, FontSecondary);
|
||||
|
||||
canvas_set_color(canvas, ColorWhite);
|
||||
canvas_draw_box(canvas, 123 - xp_progress, 45, xp_progress + 1, 5);
|
||||
canvas_draw_box(canvas, 123 - xp_progress, 45, xp_progress + (xp_progress > 0), 5);
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
|
||||
canvas_draw_icon(canvas, 52, 51, &I_Ok_btn_9x9);
|
||||
|
||||
Reference in New Issue
Block a user