indexing description: "[ Various Constants for Brick Breaker ]" date: "$Date$" revision: "$Revision$" class BB_CONSTANTS inherit MATH_CONST feature -- General constants bb_window_width: INTEGER is 800 -- Window width bb_window_height: INTEGER is 600 -- Window height bb_screen_resolution: INTEGER is 32 -- Screen resolution opengl_enabled: BOOLEAN is False -- Is OpenGL enabled? Max_frame_delay: INTEGER is 200 Corner_tolerance: DOUBLE is 1.5 -- how exact a corner has to be hit that it's counted as corner hit, must be >= 1 Number_of_rows: INTEGER is 21 -- number of block rows Number_of_columns: INTEGER is 16 -- number of block columns Number_of_keyboard_keys: INTEGER is 2 -- number of keyboard keys which need an "is_pressed" check outside of events -- these keys are left and right BB_keyboard_key_left: INTEGER is 1 BB_keyboard_key_right: INTEGER is 2 Minimum_angle: DOUBLE is 0.3 -- how "flat" can a ball fly Minimum_start_angle: DOUBLE is -- how "flat" can a ball be started from a bar once Result := Pi / 4 ensure result_correct: Result = Pi / 4 end Bonus_score_for_remaining_life: INTEGER is 15000 -- bonus score for each remaining life if game was finished Item_display_effect_duration: INTEGER is 1000 -- duration of item display effect when an item was catched Is_sound_enabled: BOOLEAN is True -- is sound for sound effects enabled? (causes crashes at the moment) Is_music_enabled: BOOLEAN is True -- is music for background music enabled? (can cause crashes) Maximum_nickname_length: INTEGER is 10 Ranking_position_x: INTEGER is 180 Ranking_position_x_name: INTEGER is 220 Ranking_position_x_score_end: INTEGER is 430 Ranking_position_x_blocks_end: INTEGER is 525 Ranking_position_x_lifes_end: INTEGER is 600 Ranking_position_x_wins_end: INTEGER is 675 Ranking_position_x_end: INTEGER is 675 -- position of ranking display Game_result_position_x: INTEGER is 80 Game_result_position_x_name: INTEGER is 120 Game_result_position_x_score_end: INTEGER is 330 Game_result_position_x_bonus_score_end: INTEGER is 480 Game_result_position_x_total_score_end: INTEGER is 600 Game_result_position_x_wins_end: INTEGER is 675 Game_result_position_x_end: INTEGER is 675 -- position of game result display Ranking_font_size: INTEGER is 20 Ranking_line_spacing: INTEGER is 25 Ranking_border: INTEGER is 10 feature -- Difficulty constants Difficulty_foolproof: INTEGER is 1 Difficulty_easy: INTEGER is 2 Difficulty_normal: INTEGER is 3 Difficulty_hard: INTEGER is 4 Difficulty_insane: INTEGER is 5 -- score needed for an extra life Score_for_extra_life_foolproof: INTEGER is 5000 Score_for_extra_life_easy: INTEGER is 10000 Score_for_extra_life_normal: INTEGER is 15000 Score_for_extra_life_hard: INTEGER is 25000 Score_for_extra_life_insane: INTEGER is 50000 -- start lifes Start_lifes_foolproof: INTEGER is 10 Start_lifes_easy: INTEGER is 5 Start_lifes_normal: INTEGER is 3 Start_lifes_hard: INTEGER is 1 Start_lifes_insane: INTEGER is 0 -- number of remaining blocks to reach next level Remaining_blocks_for_next_level_foolproof: INTEGER is 3 Remaining_blocks_for_next_level_easy: INTEGER is 1 Remaining_blocks_for_next_level_normal: INTEGER is 0 Remaining_blocks_for_next_level_hard: INTEGER is 0 Remaining_blocks_for_next_level_insane: INTEGER is 0 feature -- Speed constants Low_speed: INTEGER is 1 -- low speed array element Normal_speed: INTEGER is 2 -- normal speed array element High_speed: INTEGER is 3 -- high speed array element Acceleration_time: INTEGER is 350 -- how long a bar needs to accelerate to full speed feature -- Object types Object_type_block: INTEGER is 1 -- type number of blocks Object_type_item: INTEGER is 2 -- type number of items Object_type_ball: INTEGER is 3 -- type number of balls Object_type_bar: INTEGER is 4 -- type number of bars feature -- Item constants -- item types Item_type_nothing: INTEGER is -1 Item_type_random_item: INTEGER is 0 Item_type_bar_large: INTEGER is 1 Item_type_bar_small: INTEGER is 2 Item_type_bar_fast: INTEGER is 3 Item_type_bar_slow: INTEGER is 4 Item_type_lifeup: INTEGER is 5 Item_type_invert: INTEGER is 6 Item_type_freeze: INTEGER is 7 Item_type_points: INTEGER is 8 Item_type_loose_life: INTEGER is 9 Item_type_invulnerable: INTEGER is 10 Item_type_ball_fast: INTEGER is 11 Item_type_ball_slow: INTEGER is 12 Item_type_fly_away: INTEGER is 13 Item_type_angle_high: INTEGER is 14 Item_type_angle_low: INTEGER is 15 Item_type_loose_points: INTEGER is 16 Item_type_split_to_2: INTEGER is 17 Item_type_split_to_4: INTEGER is 18 Item_type_split_to_6: INTEGER is 19 Item_type_artillery_fire: INTEGER is 20 Item_type_ball_transparent: INTEGER is 21 Item_type_next_level: INTEGER is 22 Item_type_stick_on_bar: INTEGER is 23 Item_type_destroy_all: INTEGER is 24 Item_type_destroy_random: INTEGER is 25 Item_type_disappear: INTEGER is 26 Item_type_bad_item: INTEGER is 27 Item_type_good_item: INTEGER is 28 Item_type_russian_roulette: INTEGER is 29 Item_type_bar_transparent: INTEGER is 30 Item_type_ball_random_direction: INTEGER is 31 Item_type_bar_drive_left: INTEGER is 32 Item_type_bar_drive_right: INTEGER is 33 -- item durations Item_duration_bar_large: INTEGER is 10000 Item_duration_bar_small: INTEGER is 10000 Item_duration_bar_fast: INTEGER is 10000 Item_duration_bar_slow: INTEGER is 10000 Item_duration_lifeup: INTEGER is 0 Item_duration_invert: INTEGER is 10000 Item_duration_freeze: INTEGER is 5000 Item_duration_points: INTEGER is 0 Item_duration_loose_life: INTEGER is 0 Item_duration_invulnerable: INTEGER is 12000 Item_duration_ball_fast: INTEGER is 10000 Item_duration_ball_slow: INTEGER is 15000 Item_duration_fly_away: INTEGER is 7500 Item_duration_angle_high: INTEGER is 10000 Item_duration_angle_low: INTEGER is 10000 Item_duration_loose_points: INTEGER is 0 Item_duration_split_to_2: INTEGER is 0 Item_duration_split_to_4: INTEGER is 0 Item_duration_split_to_6: INTEGER is 0 Item_duration_artillery_fire: INTEGER is 0 Item_duration_ball_transparent: INTEGER is 10000 Item_duration_next_level: INTEGER is 0 Item_duration_stick_on_bar: INTEGER is 15000 Item_duration_destroy_all: INTEGER is 5000 Item_duration_destroy_random: INTEGER is 0 Item_duration_disappear: INTEGER is 10000 Item_duration_bad_item: INTEGER is 10000 Item_duration_good_item: INTEGER is 15000 Item_duration_russian_roulette: INTEGER is 0 Item_duration_bar_transparent: INTEGER is 15000 Item_duration_ball_random_direction: INTEGER is 0 Item_duration_bar_drive_left: INTEGER is 10000 Item_duration_bar_drive_right: INTEGER is 10000 -- item score multipliers Item_multiplier_bar_large: DOUBLE is 0.5 Item_multiplier_bar_small: DOUBLE is 2.0 Item_multiplier_bar_fast: DOUBLE is 1.5 Item_multiplier_bar_slow: DOUBLE is 3.0 Item_multiplier_lifeup: DOUBLE is 1.0 Item_multiplier_invert: DOUBLE is 3.0 Item_multiplier_freeze: DOUBLE is 10.0 Item_multiplier_points: DOUBLE is 1.0 Item_multiplier_loose_life: DOUBLE is 1.0 Item_multiplier_invulnerable: DOUBLE is 0.2 Item_multiplier_ball_fast: DOUBLE is 2.0 Item_multiplier_ball_slow: DOUBLE is 0.5 Item_multiplier_fly_away: DOUBLE is 7.5 Item_multiplier_angle_high: DOUBLE is 2.0 Item_multiplier_angle_low: DOUBLE is 2.0 Item_multiplier_loose_points: DOUBLE is 1.0 Item_multiplier_split_to_2: DOUBLE is 1.0 Item_multiplier_split_to_4: DOUBLE is 1.0 Item_multiplier_split_to_6: DOUBLE is 1.0 Item_multiplier_artillery_fire: DOUBLE is 1.0 Item_multiplier_ball_transparent: DOUBLE is 3.0 Item_multiplier_next_level: DOUBLE is 1.0 Item_multiplier_stick_on_bar: DOUBLE is 0.75 Item_multiplier_destroy_all: DOUBLE is 0.25 Item_multiplier_destroy_random: DOUBLE is 1.0 Item_multiplier_disappear: DOUBLE is 0.75 Item_multiplier_bad_item: DOUBLE is 0.2 Item_multiplier_good_item: DOUBLE is 1.0 Item_multiplier_russian_roulette: DOUBLE is 1.0 Item_multiplier_bar_transparent: DOUBLE is 3.0 Item_multiplier_ball_random_direction: DOUBLE is 1.0 Item_multiplier_bar_drive_left: DOUBLE is 3.0 Item_multiplier_bar_drive_right: DOUBLE is 3.0 Item_probability_array: ARRAY [INTEGER] is -- an array which represents the item probabilities -- to get which item should be created generate a random number between -- 0 and `Item_probability_array.item (Number_of_items)'. Create the item with the number -- of the first array element which is greater than the random number local top: INTEGER once create Result.make (1, Number_of_items) top := 60 Result.put (top, Item_type_bar_large) top := top + 60 Result.put (top, Item_type_bar_small) top := top + 40 Result.put (top, Item_type_bar_fast) top := top + 40 Result.put (top, Item_type_bar_slow) top := top + 25 Result.put (top, Item_type_lifeup) top := top + 40 Result.put (top, Item_type_invert) top := top + 30 Result.put (top, Item_type_freeze) top := top + 90 Result.put (top, Item_type_points) top := top + 25 Result.put (top, Item_type_loose_life) top := top + 25 Result.put (top, Item_type_invulnerable) top := top + 40 Result.put (top, Item_type_ball_fast) top := top + 40 Result.put (top, Item_type_ball_slow) top := top + 15 Result.put (top, Item_type_fly_away) top := top + 50 Result.put (top, Item_type_angle_high) top := top + 50 Result.put (top, Item_type_angle_low) top := top + 90 Result.put (top, Item_type_loose_points) top := top + 40 Result.put (top, Item_type_split_to_2) top := top + 25 Result.put (top, Item_type_split_to_4) top := top + 10 Result.put (top, Item_type_split_to_6) top := top + 25 Result.put (top, Item_type_artillery_fire) top := top + 25 Result.put (top, Item_type_ball_transparent) top := top + 5 Result.put (top, Item_type_next_level) top := top + 40 Result.put (top, Item_type_stick_on_bar) top := top + 20 Result.put (top, Item_type_destroy_all) top := top + 10 Result.put (top, Item_type_destroy_random) top := top + 30 Result.put (top, Item_type_disappear) top := top + 10 Result.put (top, Item_type_bad_item) top := top + 10 Result.put (top, Item_type_good_item) top := top + 20 Result.put (top, Item_type_russian_roulette) top := top + 25 Result.put (top, Item_type_bar_transparent) top := top + 50 Result.put (top, item_type_ball_random_direction) top := top + 50 Result.put (top, Item_type_bar_drive_left) top := top + 50 Result.put (top, Item_type_bar_drive_right) end Number_of_items: INTEGER is 33 Minimum_item_speed: DOUBLE is 50.0 -- minimum speed of an item in y direction Maximum_item_speed: DOUBLE is 300.0 -- maximum speed of an item in y direction Item_chance: DOUBLE is 0.25 -- chance of an item randomly appearing from a block Driving_factor: DOUBLE is 0.3333 -- if a bar is driving it moves with `Driving_factor' * speed in the corresponding direction feature -- Network Constants Masterserver_hostname: STRING is "eiffelmedia.origo.ethz.ch" Masterserver_path: STRING is "/highscore/getserverlist.php?gameidlogin=brick_breaker_ce" Resend_time: INTEGER is 500 Number_of_resends: INTEGER is 3 Server_port: INTEGER is 47777 Client_port: INTEGER is 47778 Ranking_resend_interval: INTEGER is 2500 -- interval between two ranking resends Bonus_score_for_remaining_block: INTEGER is 1000 -- bonus score for each block a player has less than the player with the most remaining blocks Item_report_duration: INTEGER is 3000 -- how long will an item report be displayed? Game_over_report_duration: INTEGER is 5000 -- how long will a game over report be displayed? end