1local map = ... 2local game = map:get_game() 3 4local state_1 5local state_2 6local state_3 7local expected_jump_time 8 9function hero:on_state_changed(state) 10 11 if state == "jumping" then 12 assert_equal(sol.main.get_elapsed_time(), expected_jump_time) 13 end 14end 15 16function map:on_opening_transition_finished() 17 18 sol.timer.start(map, 4000, function() 19 assert_equal_xy(hero, jumper_3_before_sensor) 20 sol.main.exit() 21 end) 22 23 state_1 = sol.state.create() 24 assert_equal(state_1:get_can_use_jumper(), true) 25 assert_equal(state_1:get_jumper_delay(), 200) 26 state_1:set_jumper_delay(500) 27 assert_equal(state_1:get_jumper_delay(), 500) 28 hero:start_state(state_1) 29 hero:set_animation("walking") 30 game:simulate_command_pressed("down") 31 32 function jumper_1_before_sensor:on_activated() 33 assert_equal(hero:get_state(), "custom") 34 assert_equal(hero:get_state_object(), state_1) 35 assert_equal(state_1:get_jumper_delay(), 500) 36 expected_jump_time = sol.main.get_elapsed_time() + state_1:get_jumper_delay() 37 end 38end 39 40function jumper_1_after_sensor:on_activated() 41 42 assert_equal(hero:get_state(), "jumping") 43 assert_equal(hero:get_state_object(), nil) 44 45 state_2 = sol.state.create() 46 assert_equal(state_2:get_can_use_jumper(), true) 47 state_2:set_can_use_jumper(true) 48 assert_equal(state_2:get_can_use_jumper(), true) 49 assert_equal(state_2:get_jumper_delay(), 200) 50 state_2:set_jumper_delay(0) 51 assert_equal(state_2:get_jumper_delay(), 0) 52 hero:start_state(state_2) 53 hero:set_animation("walking") 54end 55 56function jumper_2_before_sensor:on_activated() 57 assert_equal(hero:get_state(), "custom") 58 assert_equal(hero:get_state_object(), state_2) 59 assert_equal(state_2:get_jumper_delay(), 0) 60 expected_jump_time = sol.main.get_elapsed_time() + state_2:get_jumper_delay() 61end 62 63function jumper_2_after_sensor:on_activated() 64 65 assert_equal(hero:get_state(), "jumping") 66 assert_equal(hero:get_state_object(), nil) 67 68 state_3 = sol.state.create() 69 assert_equal(state_3:get_can_use_jumper(), true) 70 state_3:set_can_use_jumper(false) 71 assert_equal(state_3:get_can_use_jumper(), false) 72 hero:start_state(state_3) 73 hero:set_animation("walking") 74end 75