Fuzzer App: Attack state

This commit is contained in:
gid9798
2023-06-05 17:49:30 +03:00
parent 6eed74c716
commit d3eb43ce35
7 changed files with 143 additions and 35 deletions

View File

@@ -49,11 +49,10 @@ void fuzzer_scene_attack_on_enter(void* context) {
app->attack_view,
fuzzer_proto_get_menu_label(app->fuzzer_state.menu_index),
fuzzer_proto_get_name(app->fuzzer_state.proto_index));
fuzzer_view_attack_set_attack(app->attack_view, false);
fuzzer_scene_attack_update_uid(app);
scene_manager_set_scene_state(app->scene_manager, FuzzerSceneAttack, false);
scene_manager_set_scene_state(app->scene_manager, FuzzerSceneAttack, FuzzerAttackStateIdle);
view_dispatcher_switch_to_view(app->view_dispatcher, FuzzerViewIDAttack);
}
@@ -65,35 +64,53 @@ bool fuzzer_scene_attack_on_event(void* context, SceneManagerEvent event) {
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == FuzzerCustomEventViewAttackBack) {
if(!scene_manager_get_scene_state(app->scene_manager, FuzzerSceneAttack)) {
if(scene_manager_get_scene_state(app->scene_manager, FuzzerSceneAttack) ==
FuzzerAttackStateRunning) {
// Pause if attack running
fuzzer_worker_pause(app->worker);
scene_manager_set_scene_state(
app->scene_manager, FuzzerSceneAttack, FuzzerAttackStateIdle);
fuzzer_view_attack_pause(app->attack_view);
} else {
// Exit
fuzzer_worker_stop(app->worker);
scene_manager_set_scene_state(
app->scene_manager, FuzzerSceneAttack, FuzzerAttackStateOff);
fuzzer_view_attack_stop(app->attack_view);
if(!scene_manager_previous_scene(app->scene_manager)) {
scene_manager_stop(app->scene_manager);
view_dispatcher_stop(app->view_dispatcher);
}
} else {
scene_manager_set_scene_state(app->scene_manager, FuzzerSceneAttack, false);
fuzzer_view_attack_set_attack(app->attack_view, false);
fuzzer_worker_stop(app->worker);
}
consumed = true;
} else if(event.event == FuzzerCustomEventViewAttackOk) {
if(!scene_manager_get_scene_state(app->scene_manager, FuzzerSceneAttack) &&
fuzzer_worker_start(
app->worker, fuzzer_view_attack_get_time_delay(app->attack_view))) {
scene_manager_set_scene_state(app->scene_manager, FuzzerSceneAttack, true);
fuzzer_view_attack_set_attack(app->attack_view, true);
} else {
scene_manager_set_scene_state(app->scene_manager, FuzzerSceneAttack, false);
fuzzer_view_attack_set_attack(app->attack_view, false);
fuzzer_worker_stop(app->worker);
if(scene_manager_get_scene_state(app->scene_manager, FuzzerSceneAttack) ==
FuzzerAttackStateIdle) {
// Start or Continue Attack
if(fuzzer_worker_start(
app->worker, fuzzer_view_attack_get_time_delay(app->attack_view))) {
scene_manager_set_scene_state(
app->scene_manager, FuzzerSceneAttack, FuzzerAttackStateRunning);
fuzzer_view_attack_start(app->attack_view);
} else {
// Error?
}
} else if(
scene_manager_get_scene_state(app->scene_manager, FuzzerSceneAttack) ==
FuzzerAttackStateRunning) {
scene_manager_set_scene_state(
app->scene_manager, FuzzerSceneAttack, FuzzerAttackStateIdle);
fuzzer_view_attack_pause(app->attack_view);
fuzzer_worker_pause(app->worker); // XXX
}
consumed = true;
} else if(event.event == FuzzerCustomEventViewAttackTick) {
fuzzer_scene_attack_update_uid(app);
consumed = true;
} else if(event.event == FuzzerCustomEventViewAttackEnd) {
scene_manager_set_scene_state(app->scene_manager, FuzzerSceneAttack, false);
fuzzer_view_attack_set_attack(app->attack_view, false);
scene_manager_set_scene_state(
app->scene_manager, FuzzerSceneAttack, FuzzerAttackStateEnd);
fuzzer_view_attack_end(app->attack_view);
consumed = true;
}
}