indexing description: "[ Singleplayer Password Resume Menu ]" date: "$Date$" revision: "$Revision$" class BB_SINGLEPLAYER_PASSWORD inherit BB_MENU EM_SHARED_SUBSYSTEMS export {NONE} all end create make feature {NONE} -- Initialization make is -- create widgets local button: BB_MENU_BUTTON password_label: EM_LABEL file: PLAIN_TEXT_FILE do init_menu create password_label.make_from_text ("Password:") password_label.set_font (Standard_ttf_fonts.bitstream_vera_sans_bold (24)) password_label.set_foreground_color (create {EM_COLOR}.make_white) password_label.resize_to_optimal_dimension password_label.set_position (bb_window_width // 2 - password_label.width // 2, 185) add_widget(password_label) create password_textbox.make_empty password_textbox.set_dimension (200, 20) password_textbox.set_position (bb_window_width // 2 - password_textbox.width // 2, 220) add_widget(password_textbox) -- create menu items create file.make ("./levels/original.ord") if file.exists then create button.make ("Original Levels") button.set_position (bb_window_width // 2 - button.width // 2, 170 + 2 * 50) button.pressed_event.subscribe (agent original_level_button_pressed) add_button (button) end create button.make ("Custom Levels") button.set_position (bb_window_width // 2 - button.width // 2, 170 + 3 * 50) button.pressed_event.subscribe (agent custom_level_button_pressed) add_button (button) create button.make ("Back") button.set_position (bb_window_width // 2 - button.width // 2, 170 + 5 * 50) button.pressed_event.subscribe (agent back_button_pressed) add_button (button) set_selected_menu_item(1) end feature -- Events custom_level_button_pressed is -- custom level button pressed do bb_settings.set_level_set ("custom") bb_settings.write_user_settings check_password end original_level_button_pressed is -- original level button pressed do bb_settings.set_level_set ("original") bb_settings.write_user_settings check_password end check_password is -- check password local level_set_file: PLAIN_TEXT_FILE level_file: PLAIN_TEXT_FILE password_match_found: BOOLEAN password_line_found: BOOLEAN do create level_set_file.make ("./levels/" + bb_settings.level_set + ".ord") if level_set_file.exists then level_set_file.open_read from level_set_file.start password_match_found := False until level_set_file.end_of_file or password_match_found loop level_set_file.read_line create level_file.make ("./levels/" + level_set_file.last_string) if level_file.exists then level_file.open_read from level_file.start password_line_found := False until level_file.end_of_file or password_line_found loop level_file.read_line password_line_found := not level_file.last_string.is_equal ("") and not level_file.last_string.substring (1, 2).is_equal ("//") end if level_file.last_string.is_equal (password_textbox.text) then password_match_found := True end level_file.close end end if password_match_found then set_next_scene (create {BB_LEVEL_SCENE}.make_from_level (level_set_file.last_string.split ('.').first)) start_next_scene end level_set_file.close end end back_button_pressed is -- back button pressed do set_next_scene (create {BB_SINGLEPLAYER}.make) start_next_scene end feature {NONE} -- Implementation password_textbox: EM_TEXTBOX -- password textbox end