Skip to content

Commit

Permalink
Merge pull request rakugoteam#258 from theludovyc/hotfix_menu_index_o…
Browse files Browse the repository at this point in the history
…ut_of_range

hotfix for menu index out of range
  • Loading branch information
Jeremi360 authored Oct 16, 2023
2 parents 9a7efde + a5364a1 commit 8b926f4
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 12 deletions.
20 changes: 15 additions & 5 deletions Test/TestExecuter/TestMenu/TestMenu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,27 @@ func test_menu():

await wait_parse_and_execute_script(file_path)

await wait_menu(["Loop", "End"])
await wait_menu(["Loop0", "End", "Loop1"])

assert_menu_return(0);

await wait_menu(["Loop", "End"])
await wait_menu(["Loop0", "End", "Loop1"])

assert_menu_return(1);

await wait_execute_script_finished(file_base_name)

func test_menu_choice_parse_fail():
var file_path = "res://Test/TestExecuter/TestMenu/TestMenuChoiceParseFail.rk"
func test_menu_out_of_range():
var file_path = "res://Test/TestExecuter/TestMenu/TestMenu.rk"

var file_base_name = get_file_base_name(file_path)

watch_rakugo_signals()

await wait_parse_and_execute_script(file_path)

await wait_menu(["Loop0", "End", "Loop1"])

assert_menu_return(3);

assert_eq(Rakugo.parse_script(file_path), FAILED)
await wait_execute_script_finished(file_base_name, "Executer::do_execute_script::MENU, menu_jump_index out of range: 3 >= 3")
3 changes: 2 additions & 1 deletion Test/TestExecuter/TestMenu/TestMenu.rk
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
menu menu:
"Loop" > menu
"Loop0" > menu
"End"
"Loop1" > menu
5 changes: 5 additions & 0 deletions Test/TestParser/TestMenu/TestMenu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,8 @@ func test_menu(params=use_parameters(test_params)):
assert_eq(menu_choice_results[0]["label"], "menu")

assert_eq(menu_choice_results[1]["text"], "end")

func test_menu_choice_parse_fail():
var file_path = "res://Test/TestExecuter/TestMenu/TestMenuChoiceParseFail.rk"

assert_eq(Rakugo.parse_script(file_path), FAILED)
13 changes: 7 additions & 6 deletions addons/Rakugo/lib/systems/Executer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,11 @@ func do_execute_script(parameters:Dictionary):

semephore.wait()

if menu_jump_index < 0 or menu_jump_index >= menu_choices.size():
parameters["error"] = "Executer::do_execute_script::MENU, menu_jump_index out of range: " + str(menu_jump_index) + " >= " + str(menu_choices.size())
parameters["stop"] = true
break

if menu_jumps.has(menu_jump_index):
var jump_label = menu_jumps[menu_jump_index]

Expand All @@ -238,12 +243,8 @@ func do_execute_script(parameters:Dictionary):
break

# remove 1 because we add 1 at the end of the loop
index -= 1
elif !(menu_jump_index in [0, menu_choices.size() - 1]):
parameters["error"] = "Executer::do_execute_script::MENU, menu_jump_index out of range: " + str(menu_jump_index) + " >= " + str(menu_choices.size())
parameters["stop"] = true
break

index -= 1

"SET_VARIABLE":
var rvar_name = result["rvar_name"]
var text = result["text"]
Expand Down

0 comments on commit 8b926f4

Please sign in to comment.