Add missing translations

This commit is contained in:
Ahmed Al-Taiar
2024-11-10 16:21:53 -05:00
parent d692f135ac
commit 8cb1d3a18f
2 changed files with 119 additions and 14 deletions

View File

@@ -2,6 +2,8 @@ use phf::{phf_map, Map};
pub const TRUNCATE_LEVEL_DATA: bool = true;
pub const YOUTUBE_CHANNEL_BASE_URL: &str = "https://www.youtube.com/channel/";
pub const XOR_KEY: u8 = 0xB;
// pub const PASSWORD_SALT: &str = "mI29fmAnxgTs";
@@ -23,6 +25,11 @@ pub static KEY_VALUE_TYPES: Map<&'static str, ValueType> = phf_map! {
"used_songs" => ValueType::Array(',', ArrayInnerType::Number),
"capacity_string" => ValueType::Array(',', ArrayInnerType::Number),
"scores" => ValueType::Array(',', ArrayInnerType::Number),
"dpad01" => ValueType::Array(',', ArrayInnerType::Number),
"dpad02" => ValueType::Array(',', ArrayInnerType::Number),
"dpad03" => ValueType::Array(',', ArrayInnerType::Number),
"dpad04" => ValueType::Array(',', ArrayInnerType::Number),
"dpad05" => ValueType::Array(',', ArrayInnerType::Number),
"extra_artist_names" => ValueType::ChunkMap(','),
};
@@ -105,6 +112,25 @@ pub static GAMESAVE_KEYS: Map<&'static str, &'static str> = phf_map! {
"texQuality" => "texture_quality",
"customObjectDict" => "custom_objects",
"playerUserID" => "player_id",
"playerUDID" => "player_udid",
"playerName" => "player_name",
"playerBall" => "player_ball",
"playerBird" => "player_ufo",
"playerDart" => "player_wave",
"playerRobot" => "player_robot",
"playerColor2" => "player_colour_2",
"playerColor3" => "player_colour_3",
"playerShip" => "player_ship",
"playerSpider" => "player_spider",
"playerDeathEffect" => "player_death_effect",
"playerFrame" => "player_frame",
"playerJetpack" => "player_jetpack",
"playerShipStreak" => "player_ship_streak",
"playerStreak" => "player_streak",
"playerSwing" => "player_swing",
"practiceOpacity" => "practice_opacity",
"practicePosX" => "practice_pos_x",
"practicePosY" => "practice_pos_y",
"reportedAchievements" => "achievements",
"secretNumber" => "cod3breaker_solution",
"clickedGarage" => "clicked_icon_kit",
@@ -405,8 +431,8 @@ pub const ITEMS: Map<&'static str, &'static str> = phf_map! {
pub const ICON_FORMS: Map<&'static str, &'static str> = phf_map! {
"1" => "cube",
"2" => "color_1",
"3" => "color_2",
"2" => "colour_1",
"3" => "colour_2",
"4" => "ship",
"5" => "ball",
"6" => "ufo",
@@ -465,8 +491,8 @@ pub const GAME_VARIABLES: Map<&'static str, &'static str> = phf_map! {
"gv_0004" => "editor.free_move",
"gv_0005" => "editor.delete_filter",
"gv_0006" => "editor.delete_object_id",
"gv_0007" => "editor.rotate_enabled",
"gv_0008" => "editor.snap_enabled",
"gv_0007" => "editor.rotate",
"gv_0008" => "editor.snap",
"gv_0009" => "editor.ignore_damage",
"gv_0010" => "flip2_player_controls",
"gv_0011" => "always_limit_controls",
@@ -486,8 +512,11 @@ pub const GAME_VARIABLES: Map<&'static str, &'static str> = phf_map! {
"gv_0028" => "disable_thumbstick",
"gv_0029" => "showed_upload_popup",
"gv_0030" => "vsync",
"gv_0031" => "unused.call_gl_finish",
"gv_0032" => "unused.force_timer_enabled",
"gv_0033" => "change_song_location",
"gv_0034" => "game_center",
"gv_0035" => "small_grid_step",
"gv_0036" => "editor.preview_mode",
"gv_0037" => "editor.show_ground",
"gv_0038" => "editor.show_grid",
@@ -500,26 +529,29 @@ pub const GAME_VARIABLES: Map<&'static str, &'static str> = phf_map! {
"gv_0045" => "editor.debug_draw",
"gv_0046" => "editor.hide_ui_on_test",
"gv_0047" => "showed_profile_text",
"gv_0048" => "viewed_own_profile",
"gv_0049" => "editor.columns",
"gv_0050" => "editor.rows",
"gv_0051" => "showed_ng_message",
"gv_0052" => "fast_respawn",
"gv_0053" => "showed_free_games_popup",
"gv_0055" => "check_if_server_online",
"gv_0056" => "disable_high_object_alert",
"gv_0057" => "editor.hold_to_swipe",
"gv_0058" => "editor.duration_lines",
"gv_0059" => "editor.swipe_cycle_mode",
"gv_0060" => "default_mini_icon",
"gv_0061" => "switch_spider_teleport_color",
"gv_0062" => "switch_dash_fire_color",
"gv_0061" => "switch_spider_teleport_colour",
"gv_0062" => "switch_dash_fire_colour",
"gv_0063" => "showed_unverified_coins_message",
"gv_0064" => "editor.select_filter",
"gv_0065" => "enable_move_optimization",
"gv_0065" => "move_optimization",
"gv_0066" => "high_capacity_mode",
"gv_0067" => "high_start_pos_accuracy",
"gv_0068" => "quick_checkpoint_mode",
"gv_0069" => "comment_mode",
"gv_0070" => "showed_unlisted_level_message",
"gv_0071" => "hide_practice_buttons",
"gv_0072" => "disable_gravity_effect",
"gv_0073" => "new_completed_filter",
"gv_0074" => "show_restart_button",
@@ -540,36 +572,72 @@ pub const GAME_VARIABLES: Map<&'static str, &'static str> = phf_map! {
"gv_0093" => "increase_levels_per_page",
"gv_0094" => "more_comments",
"gv_0095" => "do_not",
"gv_0096" => "switch_wave_trail_color",
"gv_0097" => "editor.enable_link_controls",
"gv_0096" => "switch_wave_trail_colour",
"gv_0097" => "editor.link_controls",
"gv_0098" => "level_leaderboard_type",
"gv_0099" => "show_leaderboard_percent",
"gv_0100" => "practice_death_effect",
"gv_0101" => "force_smooth_fix",
"gv_0102" => "editor.editor_smooth_fix",
"gv_0103" => "editor.layer_locking",
"gv_0108" => "auto_enable_low_detail",
"gv_0104" => "record_order",
"gv_0105" => "startpos_playback",
"gv_0106" => "show_meltdown_promo",
"gv_0108" => "auto_low_detail",
"gv_0109" => "level_info_label",
"gv_0110" => "fast_editor_preview",
"gv_0112" => "editor.increase_scale_limit",
"gv_0113" => "flip_platformer_controls",
"gv_0115" => "show_fps",
"gv_0116" => "use_custom_fps",
"gv_0117" => "preview_particle",
"gv_0118" => "preview_animation",
"gv_0119" => "dont_save_levels",
"gv_0121" => "editor.hide_invisible",
"gv_0122" => "disable_menu_music",
"gv_0125" => "editor.unlock_practice_music",
"gv_0126" => "decimal_percentage",
"gv_0127" => "save_gauntlet_levels",
"gv_0128" => "lock_cursor_in_game",
"gv_0129" => "disable_portal_labels",
"gv_0130" => "enable_orb_labels",
"gv_0134" => "hide_attempts_practice",
"gv_0135" => "hide_attempts",
"gv_0130" => "orb_labels",
"gv_0131" => "editor.smart_template.use_nearby_as_reference",
"gv_0132" => "editor.smart_template.dont_delete",
"gv_0133" => "editor.group_id_filter",
"gv_0134" => "hide_attempts",
"gv_0135" => "hide_attempts_practice",
"gv_0136" => "extra_ldm",
"gv_0137" => "editor.hide_particle_icons",
"gv_0139" => "editor.colour_channel_filter",
"gv_0140" => "disable_orb_scale",
"gv_0141" => "disable_trigger_orb_scale",
"gv_0142" => "reduce_audio_quality",
"gv_0144" => "audio_visualizer",
"gv_0145" => "show_time",
"gv_0146" => "disable_checkpoints",
"gv_0147" => "editor.sfx_search_folder_name",
"gv_0148" => "editor.sfx_compact_mode",
"gv_0149" => "editor.show_clicks",
"gv_0150" => "editor.auto_pause",
"gv_0151" => "editor.start_optimization",
"gv_0152" => "editor.hide_path",
"gv_0153" => "explode_player_on_death",
"gv_0155" => "disable_shader_anti_aliasing",
"gv_0156" => "editor.disable_paste_state_groups",
"gv_0159" => "audio_fix_01"
"gv_0157" => "level_upload_guidelines_shown",
"gv_0158" => "editor.preview_shaders",
"gv_0159" => "audio_fix_01",
"gv_0163" => "quick_keys",
"gv_0164" => "level_leaderboard_mode",
"gv_0166" => "practice_mode_hitboxes",
"gv_0167" => "confirm_exit",
"gv_0168" => "fast_menu",
"gv_0169" => "editor.small_warp_buttons",
"gv_0170" => "borderless_fullscreen",
"gv_0171" => "disable_player_hitbox",
"gv_0172" => "disable_shake",
"gv_0173" => "editor.playtesting_ignore_damage",
"gv_0174" => "hide_playtest_text"
};
pub const GAME_EVENTS: Map<&'static str, &'static str> = phf_map! {

View File

@@ -70,6 +70,42 @@ fn parse_dict(
Some(stat_key.to_string())
}
}
key if parent_key.unwrap_or_default() == "game_values" => {
let game_value_key: &str = if GAME_VARIABLES.contains_key(key) {
GAME_VARIABLES[key]
} else {
key
};
if ["c0_", "c1_"].iter().any(|x| game_value_key.starts_with(x)) {
let parts: Vec<&str> =
game_value_key.split("_").collect::<Vec<&str>>();
match parts.len() {
2 => Some(format!(
"colour_{}_{}",
match game_value_key {
key if key.starts_with("c0_") => "1",
key if key.starts_with("c1_") => "2",
_ => "unknown",
},
parts[1]
)),
_ => Some(game_value_key.to_string()),
}
} else {
Some(game_value_key.to_string())
}
}
key if ["official_level_progress", "official_levels"]
.contains(&parent_key.unwrap_or_default()) =>
{
if OFFICIAL_LEVEL_NAMES.contains_key(key) {
Some(OFFICIAL_LEVEL_NAMES[key].to_string())
} else {
Some(key.to_string())
}
}
key if parent_key.unwrap_or_default() == "enabled_items" => {
let parts: Vec<&str> = key.split("_").collect::<Vec<&str>>();
@@ -200,6 +236,7 @@ fn read_text(
text
}
}
"youtube_channel" => format!("{}{}", YOUTUBE_CHANNEL_BASE_URL, text),
"difficulty" => DIFFICULTY[text.as_str()].to_string(),
"level_type" => LEVEL_TYPE[text.as_str()].to_string(),
"level_length" => LEVEL_LENGTH[text.as_str()].to_string(),