firmware+controller: Add pregame state
This commit is contained in:
parent
ea5f1a7902
commit
8adb89ef2b
@ -19,7 +19,9 @@ def main():
|
||||
h.queue_start(RiotPlayerInfo.dummy(
|
||||
valorant=ValorantPlayerInfo(queue_type='unrated', is_party_owner=True)))
|
||||
h.match_found(RiotPlayerInfo.dummy(valorant=ValorantPlayerInfo(queue_type='premier-seasonmatch')))
|
||||
h.pregame(RiotPlayerInfo.dummy(valorant=ValorantPlayerInfo(map='/Game/Maps/Bonsai/Bonsai')))
|
||||
h.match_found(RiotPlayerInfo.dummy(valorant=ValorantPlayerInfo()))
|
||||
h.pregame(RiotPlayerInfo.dummy(valorant=ValorantPlayerInfo()))
|
||||
|
||||
h.service()
|
||||
finally:
|
||||
|
@ -316,6 +316,9 @@ class HIDValconomyHandler(ValconomyHandler):
|
||||
def match_found(self, info: RiotPlayerInfo):
|
||||
self._enq(4, 1 if info.valorant.queue_type == 'premier-seasonmatch' else 0, fmt='B')
|
||||
|
||||
def pregame(self, info: RiotPlayerInfo):
|
||||
self._enq(5, 1 if info.valorant.map == '/Game/Maps/Bonsai/Bonsai' else 0, fmt='B')
|
||||
|
||||
class GameState(Enum):
|
||||
NONE = 0
|
||||
MENU = 1
|
||||
|
@ -390,6 +390,57 @@ void val_ui_match_found(bool is_premier) {
|
||||
lv_anim_timeline_start(at_active);
|
||||
}
|
||||
|
||||
void val_ui_pregame(bool is_split) {
|
||||
setup_next_state();
|
||||
|
||||
// Widgets
|
||||
lv_obj_t *l_main = lv_label_create(o_active);
|
||||
lv_obj_add_style(l_main, &s_hero, 0);
|
||||
lv_obj_center(l_main);
|
||||
lv_label_set_text_static(l_main, "CHOOSE AGENT");
|
||||
|
||||
lv_obj_t *l_subtitle = lv_label_create(o_active);
|
||||
lv_obj_add_style(l_subtitle, &s_subtitle, 0);
|
||||
lv_obj_center(l_subtitle);
|
||||
lv_label_set_text_static(l_subtitle, is_split ? "EWWW, SPLIT..." : "PICK SOMETHING GOOD!");
|
||||
|
||||
lv_obj_update_layout(o_active);
|
||||
lv_obj_set_y(
|
||||
l_subtitle,
|
||||
(lv_obj_get_height(l_main) + lv_obj_get_height(l_subtitle)) / 2 + 5);
|
||||
|
||||
// Animations
|
||||
lv_anim_t a_fade_in;
|
||||
lv_anim_init(&a_fade_in);
|
||||
lv_anim_set_values(&a_fade_in, 0, 255);
|
||||
lv_anim_set_exec_cb(&a_fade_in, anim_opa_cb);
|
||||
lv_anim_set_path_cb(&a_fade_in, lv_anim_path_ease_in);
|
||||
lv_anim_set_duration(&a_fade_in, 500);
|
||||
|
||||
lv_anim_set_var(&a_fade_in, l_main);
|
||||
lv_anim_timeline_add(at_active, 0, &a_fade_in);
|
||||
|
||||
lv_anim_set_var(&a_fade_in, l_subtitle);
|
||||
lv_anim_set_completed_cb(&a_fade_in, anim_state_ready_cb);
|
||||
lv_anim_timeline_add(at_active, 0, &a_fade_in);
|
||||
|
||||
lv_anim_t a_warn;
|
||||
lv_anim_init(&a_warn);
|
||||
lv_anim_set_early_apply(&a_warn, false);
|
||||
lv_anim_set_var(&a_warn, l_main);
|
||||
lv_anim_set_path_cb(&a_warn, lv_anim_path_linear);
|
||||
lv_anim_set_duration(&a_warn, 2000);
|
||||
lv_anim_set_exec_cb(&a_warn, anim_text_color_mix_hero_sub);
|
||||
|
||||
lv_anim_set_values(&a_warn, 255, 0);
|
||||
lv_anim_timeline_add(at_active_rep, 0, &a_warn);
|
||||
|
||||
lv_anim_set_values(&a_warn, 0, 255);
|
||||
lv_anim_timeline_add(at_active_rep, 2000, &a_warn);
|
||||
|
||||
lv_anim_timeline_start(at_active);
|
||||
}
|
||||
|
||||
void val_lvgl_ui(lv_display_t *disp) {
|
||||
color_primary = lv_color_hex(0xff4655);
|
||||
color_secondary = lv_color_hex(0xf7518f);
|
||||
|
@ -17,5 +17,6 @@ void val_ui_menu(bool was_idle);
|
||||
void val_ui_idle();
|
||||
void val_ui_queue_start(bool ms_not_comp);
|
||||
void val_ui_match_found(bool is_premier);
|
||||
void val_ui_pregame(bool is_split);
|
||||
|
||||
void val_lvgl_ui(lv_display_t *disp);
|
||||
|
@ -101,7 +101,7 @@ void tud_hid_set_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_
|
||||
ESP_LOGE(TAG, "Failed to grab LVGL lock");
|
||||
return;
|
||||
}
|
||||
if (buf[0] > ST_MATCH_FOUND) {
|
||||
if (buf[0] > ST_PREGAME) {
|
||||
ESP_LOGW(TAG, "Unknown state %hhu", buf[0]);
|
||||
goto ret;
|
||||
}
|
||||
@ -137,6 +137,13 @@ void tud_hid_set_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_
|
||||
}
|
||||
val_ui_match_found((bool)buf[1]);
|
||||
break;
|
||||
case ST_PREGAME:
|
||||
if (bufsize < 2) {
|
||||
ESP_LOGE(TAG, "Invalid ST_PREGAME command");
|
||||
goto ret;
|
||||
}
|
||||
val_ui_pregame((bool)buf[1]);
|
||||
break;
|
||||
}
|
||||
|
||||
ret:
|
||||
|
@ -11,6 +11,7 @@ typedef enum val_state {
|
||||
ST_IDLE,
|
||||
ST_QUEUE_START,
|
||||
ST_MATCH_FOUND,
|
||||
ST_PREGAME,
|
||||
} val_state_t;
|
||||
|
||||
void val_usb_init(void);
|
||||
|
Loading…
Reference in New Issue
Block a user