From 3360cb5c3e96b591451afa67a0f8a281db79e8c5 Mon Sep 17 00:00:00 2001 From: DeaDDooMER Date: Sat, 27 May 2023 01:19:21 +0300 Subject: [PATCH] i10n: use resourcestring and gettext for localization --- lang/editor.en_US.po | 2458 +++++++++++++++++++ lang/editor.ru_RU.po | 2254 +++++++++++++++++ src/editor/Editor.lpr | 9 +- src/editor/f_addresource.pas | 10 +- src/editor/f_addresource_sky.pas | 2 +- src/editor/f_addresource_sound.pas | 4 +- src/editor/f_addresource_texture.pas | 14 +- src/editor/f_main.pas | 1026 ++++---- src/editor/f_mapcheck.pas | 18 +- src/editor/f_mapoptimization.pas | 54 +- src/editor/f_options.lfm | 49 +- src/editor/f_options.pas | 45 +- src/editor/f_packmap.pas | 8 +- src/editor/f_savemap.pas | 4 +- src/editor/f_selectlang.lfm | 43 - src/editor/f_selectlang.pas | 37 - src/editor/g_language.pas | 3335 ++++++++------------------ src/editor/g_map.pas | 26 +- src/editor/g_options.pas | 1 + src/editor/spectrum.pas | 2 +- 20 files changed, 6348 insertions(+), 3051 deletions(-) create mode 100644 lang/editor.en_US.po create mode 100644 lang/editor.ru_RU.po delete mode 100644 src/editor/f_selectlang.lfm delete mode 100644 src/editor/f_selectlang.pas diff --git a/lang/editor.en_US.po b/lang/editor.en_US.po new file mode 100644 index 0000000..0713a81 --- /dev/null +++ b/lang/editor.en_US.po @@ -0,0 +1,2458 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: g_language:msgnotaccessible +msgid "N/A" +msgstr "" + +#: g_language:msgarrayboolfalse +msgid "No" +msgstr "" + +#: g_language:msgarraybooltrue +msgid "Yes" +msgstr "" + +#: g_language:msgarraydirleft +msgid "Left" +msgstr "" + +#: g_language:msgarraydirright +msgid "Right" +msgstr "" + +#: g_language:msgarraydirsame +msgid "Don't change" +msgstr "" + +#: g_language:msgarraydirreversed +msgid "Reversed" +msgstr "" + +#: g_language:msgarraydirbtnleft +msgid "Left" +msgstr "" + +#: g_language:msgarraydirbtnright +msgid "Right" +msgstr "" + +#: g_language:msgarraydirbtnup +msgid "Up" +msgstr "" + +#: g_language:msgarraydirbtndown +msgid "Down" +msgstr "" + +#: g_language:msgarraypanelwall +msgid "Wall" +msgstr "" + +#: g_language:msgarraypanelback +msgid "Background" +msgstr "" + +#: g_language:msgarraypanelfront +msgid "Foreground" +msgstr "" + +#: g_language:msgarraypaneldooropen +msgid "Open Door" +msgstr "" + +#: g_language:msgarraypaneldoorclose +msgid "Closed Door" +msgstr "" + +#: g_language:msgarraypanelstair +msgid "Step" +msgstr "" + +#: g_language:msgarraypanelwater +msgid "Water" +msgstr "" + +#: g_language:msgarraypanelacid1 +msgid "Acid 1" +msgstr "" + +#: g_language:msgarraypanelacid2 +msgid "Acid 2" +msgstr "" + +#: g_language:msgarraypanelliftup +msgid "Stream Up" +msgstr "" + +#: g_language:msgarraypanelliftdown +msgid "Stream Down" +msgstr "" + +#: g_language:msgarraypanelliftleft +msgid "Stream Left" +msgstr "" + +#: g_language:msgarraypanelliftright +msgid "Stream Right" +msgstr "" + +#: g_language:msgarraypanelblockmon +msgid "Monster Boundary" +msgstr "" + +#: g_language:msgarrayfxnone +msgid "None" +msgstr "" + +#: g_language:msgarrayfxteleport +msgid "Teleport" +msgstr "" + +#: g_language:msgarrayfxrespawn +msgid "Respawn" +msgstr "" + +#: g_language:msgarrayfxfire +msgid "Arch-Vile Fire" +msgstr "" + +#: g_language:msgarrayitemmedkit +msgid "Stimpack" +msgstr "" + +#: g_language:msgarrayitemlargemedkit +msgid "Medikit" +msgstr "" + +#: g_language:msgarrayitemblackmedkit +msgid "Berserk Pack" +msgstr "" + +#: g_language:msgarrayitemgreenarmor +msgid "Green Armor" +msgstr "" + +#: g_language:msgarrayitembluearmor +msgid "Blue Armor" +msgstr "" + +#: g_language:msgarrayitembluesphere +msgid "Soulsphere" +msgstr "" + +#: g_language:msgarrayitemmegasphere +msgid "Megasphere" +msgstr "" + +#: g_language:msgarrayitemhazsuit +msgid "Envirosuit" +msgstr "" + +#: g_language:msgarrayitemoxygen +msgid "Scuba" +msgstr "" + +#: g_language:msgarrayiteminvulnerability +msgid "Invulnerability" +msgstr "" + +#: g_language:msgarrayitemchainsaw +msgid "Chainsaw" +msgstr "" + +#: g_language:msgarrayitemshotgun +msgid "Shotgun" +msgstr "" + +#: g_language:msgarrayitemdbshotgun +msgid "Super Shotgun" +msgstr "" + +#: g_language:msgarrayitemchaingun +msgid "Chaingun" +msgstr "" + +#: g_language:msgarrayitemrocketlauncher +msgid "Rocket Launcher" +msgstr "" + +#: g_language:msgarrayitemplasmarifle +msgid "Plasma Rifle" +msgstr "" + +#: g_language:msgarrayitembfg +msgid "BFG9000" +msgstr "" + +#: g_language:msgarrayitemsuperminigun +msgid "Super Chaingun" +msgstr "" + +#: g_language:msgarrayitemflamethrower +msgid "Flamethrower" +msgstr "" + +#: g_language:msgarrayitemclip +msgid "Clip" +msgstr "" + +#: g_language:msgarrayitemammobox +msgid "Box of Bullets" +msgstr "" + +#: g_language:msgarrayitem4shells +msgid "4 Shells" +msgstr "" + +#: g_language:msgarrayitem25shells +msgid "Box of Shells" +msgstr "" + +#: g_language:msgarrayitem1rocket +msgid "Rocket" +msgstr "" + +#: g_language:msgarrayitemrocketbox +msgid "Box of Rockets" +msgstr "" + +#: g_language:msgarrayitemcell +msgid "Energy Cell" +msgstr "" + +#: g_language:msgarrayitemlargecell +msgid "Energy Cell Pack" +msgstr "" + +#: g_language:msgarrayitemfuelcan +msgid "Fuel Canister" +msgstr "" + +#: g_language:msgarrayitembackpack +msgid "Backpack" +msgstr "" + +#: g_language:msgarrayitemkeyred +msgid "Red Key" +msgstr "" + +#: g_language:msgarrayitemkeygreen +msgid "Green Key" +msgstr "" + +#: g_language:msgarrayitemkeyblue +msgid "Blue Key" +msgstr "" + +#: g_language:msgarrayitembottle +msgid "Health Globe" +msgstr "" + +#: g_language:msgarrayitemhelmet +msgid "Armor Shard" +msgstr "" + +#: g_language:msgarrayitemjetpack +msgid "Jetpack" +msgstr "" + +#: g_language:msgarrayiteminvis +msgid "Invisibility" +msgstr "" + +#: g_language:msgarrayshotpistol +msgid "Pistol shot" +msgstr "" + +#: g_language:msgarrayshotbullet +msgid "Chaingun shot" +msgstr "" + +#: g_language:msgarrayshotshotgun +msgid "Shotgun shot" +msgstr "" + +#: g_language:msgarrayshotssg +msgid "Super Shotgun shot" +msgstr "" + +#: g_language:msgarrayshotimp +msgid "Imp fireball" +msgstr "" + +#: g_language:msgarrayshotplasma +msgid "Blue plasma" +msgstr "" + +#: g_language:msgarrayshotspider +msgid "Arachnotron plasma" +msgstr "" + +#: g_language:msgarrayshotcaco +msgid "Cacodemon fireball" +msgstr "" + +#: g_language:msgarrayshotbaron +msgid "Hell Baron projectile" +msgstr "" + +#: g_language:msgarrayshotmancub +msgid "Mancubus gunshot" +msgstr "" + +#: g_language:msgarrayshotrev +msgid "Revenant projectile" +msgstr "" + +#: g_language:msgarrayshotrocket +msgid "Rocket" +msgstr "" + +#: g_language:msgarrayshotbfg +msgid "BFG ball" +msgstr "" + +#: g_language:msgarrayshotexpl +msgid "Explosion" +msgstr "" + +#: g_language:msgarrayshotbfgexpl +msgid "BFG explosion" +msgstr "" + +#: g_language:msgarrayshotflame +msgid "Flame" +msgstr "" + +#: g_language:msgarraymondemon +msgid "Pinky" +msgstr "" + +#: g_language:msgarraymonimp +msgid "Imp" +msgstr "" + +#: g_language:msgarraymonzombie +msgid "Zombie" +msgstr "" + +#: g_language:msgarraymonsergeant +msgid "Sergeant" +msgstr "" + +#: g_language:msgarraymoncyber +msgid "Cyberdemon" +msgstr "" + +#: g_language:msgarraymoncgun +msgid "Commando" +msgstr "" + +#: g_language:msgarraymonhellbaron +msgid "Hell Baron" +msgstr "" + +#: g_language:msgarraymonhellknight +msgid "Hell Knight" +msgstr "" + +#: g_language:msgarraymoncacodemon +msgid "Cacodemon" +msgstr "" + +#: g_language:msgarraymonlostsoul +msgid "Lost Soul" +msgstr "" + +#: g_language:msgarraymonpainelemental +msgid "Pain Elemental" +msgstr "" + +#: g_language:msgarraymonmastermind +msgid "Spider Mastermind" +msgstr "" + +#: g_language:msgarraymonarachnatron +msgid "Arachnotron" +msgstr "" + +#: g_language:msgarraymonmancubus +msgid "Mancubus" +msgstr "" + +#: g_language:msgarraymonrevenant +msgid "Revenant" +msgstr "" + +#: g_language:msgarraymonarchvile +msgid "Arch-Vile" +msgstr "" + +#: g_language:msgarraymonfish +msgid "Piranha" +msgstr "" + +#: g_language:msgarraymonbarrel +msgid "Barrel" +msgstr "" + +#: g_language:msgarraymonrobot +msgid "Robot" +msgstr "" + +#: g_language:msgarraymonprikolist +msgid "Prikolist" +msgstr "" + +#: g_language:msgarrayareaplayerone +msgid "Player 1" +msgstr "" + +#: g_language:msgarrayareaplayertwo +msgid "Player 2" +msgstr "" + +#: g_language:msgarrayareadm +msgid "DM Spawn Point" +msgstr "" + +#: g_language:msgarrayareaflagred +msgid "Red Flag" +msgstr "" + +#: g_language:msgarrayareaflagblue +msgid "Blue Flag" +msgstr "" + +#: g_language:msgarrayareaflagdom +msgid "Domination Flag" +msgstr "" + +#: g_language:msgarrayareateamred +msgid "Red Team" +msgstr "" + +#: g_language:msgarrayareateamblue +msgid "Blue Team" +msgstr "" + +#: g_language:msgarraytrexit +msgid "Exit" +msgstr "" + +#: g_language:msgarraytrteleport +msgid "Teleport" +msgstr "" + +#: g_language:msgarraytrdooropen +msgid "Open Door" +msgstr "" + +#: g_language:msgarraytrdoorclose +msgid "Close Door" +msgstr "" + +#: g_language:msgarraytrdoorswitch +msgid "Door" +msgstr "" + +#: g_language:msgarraytrdoor5sec +msgid "Door (5 sec)" +msgstr "" + +#: g_language:msgarraytrtrapclose +msgid "Close Trap" +msgstr "" + +#: g_language:msgarraytrtrap +msgid "Trap" +msgstr "" + +#: g_language:msgarraytrextend +msgid "Extender" +msgstr "" + +#: g_language:msgarraytrsecret +msgid "Secret" +msgstr "" + +#: g_language:msgarraytrliftup +msgid "Turn stream up/left" +msgstr "" + +#: g_language:msgarraytrliftdown +msgid "Turn stream down/right" +msgstr "" + +#: g_language:msgarraytrliftswitch +msgid "Revert stream" +msgstr "" + +#: g_language:msgarraytrtexture +msgid "Change Texture" +msgstr "" + +#: g_language:msgarraytron +msgid "Enable Trigger" +msgstr "" + +#: g_language:msgarraytroff +msgid "Disable Trigger" +msgstr "" + +#: g_language:msgarraytrswitch +msgid "Trigger Toggle" +msgstr "" + +#: g_language:msgarraytrsound +msgid "Play Sound" +msgstr "" + +#: g_language:msgarraytrspawnmonster +msgid "Spawn Monster" +msgstr "" + +#: g_language:msgarraytrspawnitem +msgid "Spawn Item" +msgstr "" + +#: g_language:msgarraytrmusic +msgid "Play Music" +msgstr "" + +#: g_language:msgarraytrpush +msgid "Push" +msgstr "" + +#: g_language:msgarraytrscore +msgid "Team Score" +msgstr "" + +#: g_language:msgarraytrmessage +msgid "Message" +msgstr "" + +#: g_language:msgarraytrdamage +msgid "Damage" +msgstr "" + +#: g_language:msgarraytrhealth +msgid "Healer" +msgstr "" + +#: g_language:msgarraytrshot +msgid "Turret" +msgstr "" + +#: g_language:msgarraytreffect +msgid "Effect" +msgstr "" + +#: g_language:msgpropid +msgid "ID" +msgstr "" + +#: g_language:msgpropx +msgid "X" +msgstr "" + +#: g_language:msgpropy +msgid "Y" +msgstr "" + +#: g_language:msgpropwidth +msgid "Width" +msgstr "" + +#: g_language:msgpropheight +msgid "Height" +msgstr "" + +#: g_language:msgproppaneltype +msgid "Panel Type" +msgstr "" + +#: g_language:msgproppaneltex +msgid "Texture" +msgstr "" + +#: g_language:msgproppanelalpha +msgid "Transparency" +msgstr "" + +#: g_language:msgproppanelblend +msgid "Blending" +msgstr "" + +#: g_language:msgpropdmonly +msgid "DM Only" +msgstr "" + +#: g_language:msgpropitemfalls +msgid "Falls" +msgstr "" + +#: g_language:msgpropdirection +msgid "Direction" +msgstr "" + +#: g_language:msgproptrtype +msgid "Trigger Type" +msgstr "" + +#: g_language:msgproptrenabled +msgid "Enabled" +msgstr "" + +#: g_language:msgproptrtexturepanel +msgid "Textured Panel" +msgstr "" + +#: g_language:msgproptractivation +msgid "Activation Type" +msgstr "" + +#: g_language:msgproptrkeys +msgid "Keys" +msgstr "" + +#: g_language:msgproptrd2d +msgid "D2D-like" +msgstr "" + +#: g_language:msgproptrsilent +msgid "Silent" +msgstr "" + +#: g_language:msgproptrcount +msgid "Count" +msgstr "" + +#: g_language:msgproptrinterval +msgid "Interval (in ticks)" +msgstr "" + +#: g_language:msgproptrhealth +msgid "Health" +msgstr "" + +#: g_language:msgproptrnextmap +msgid "Next Map" +msgstr "" + +#: g_language:msgproptrteleportto +msgid "Teleport to" +msgstr "" + +#: g_language:msgproptrteleportsilent +msgid "Silent" +msgstr "" + +#: g_language:msgproptrteleportdir +msgid "New Direction" +msgstr "" + +#: g_language:msgproptrdoorpanel +msgid "Door Panel" +msgstr "" + +#: g_language:msgproptrtrappanel +msgid "Trap Panel" +msgstr "" + +#: g_language:msgproptrexarea +msgid "Action Area" +msgstr "" + +#: g_language:msgproptrexdelay +msgid "Delay" +msgstr "" + +#: g_language:msgproptrexcount +msgid "Count" +msgstr "" + +#: g_language:msgproptrexmonster +msgid "Monster ID" +msgstr "" + +#: g_language:msgproptrexrandom +msgid "Random" +msgstr "" + +#: g_language:msgproptrliftpanel +msgid "Stream Panel" +msgstr "" + +#: g_language:msgproptrtextureonce +msgid "Once" +msgstr "" + +#: g_language:msgproptrtextureanimonce +msgid "Animate Once" +msgstr "" + +#: g_language:msgproptrsoundname +msgid "Sound (snd)" +msgstr "" + +#: g_language:msgproptrsoundvolume +msgid "Volume" +msgstr "" + +#: g_language:msgproptrsoundpan +msgid "Pan" +msgstr "" + +#: g_language:msgproptrsoundcount +msgid "Loops" +msgstr "" + +#: g_language:msgproptrsoundlocal +msgid "Local" +msgstr "" + +#: g_language:msgproptrsoundswitch +msgid "Switch" +msgstr "" + +#: g_language:msgproptrfxtype +msgid "Effect" +msgstr "" + +#: g_language:msgproptrspawnto +msgid "Spawn at" +msgstr "" + +#: g_language:msgproptrspawnmax +msgid "Maximum" +msgstr "" + +#: g_language:msgproptrspawndelay +msgid "Autospawn (in ticks)" +msgstr "" + +#: g_language:msgproptrmonstertype +msgid "Monster" +msgstr "" + +#: g_language:msgproptrmonsteractive +msgid "Active" +msgstr "" + +#: g_language:msgproptrmonsterbehaviour +msgid "Behaviour" +msgstr "" + +#: g_language:msgproptrmonsterbehaviour0 +msgid "Normal" +msgstr "" + +#: g_language:msgproptrmonsterbehaviour1 +msgid "Killer" +msgstr "" + +#: g_language:msgproptrmonsterbehaviour2 +msgid "Maniac" +msgstr "" + +#: g_language:msgproptrmonsterbehaviour3 +msgid "Insane" +msgstr "" + +#: g_language:msgproptrmonsterbehaviour4 +msgid "Cannibal" +msgstr "" + +#: g_language:msgproptrmonsterbehaviour5 +msgid "Good" +msgstr "" + +#: g_language:msgproptritemtype +msgid "Item" +msgstr "" + +#: g_language:msgproptrmusicname +msgid "Music" +msgstr "" + +#: g_language:msgproptrmusicact +msgid "Action (m)" +msgstr "" + +#: g_language:msgproptrmusicon +msgid "Play" +msgstr "" + +#: g_language:msgproptrmusicoff +msgid "Pause" +msgstr "" + +#: g_language:msgproptrpushangle +msgid "Angle" +msgstr "" + +#: g_language:msgproptrpushforce +msgid "Force" +msgstr "" + +#: g_language:msgproptrpushreset +msgid "Reset velocity" +msgstr "" + +#: g_language:msgproptrscoreact +msgid "Action (s)" +msgstr "" + +#: g_language:msgproptrscoreact0 +msgid "Add points" +msgstr "" + +#: g_language:msgproptrscoreact1 +msgid "Subtract points" +msgstr "" + +#: g_language:msgproptrscoreact2 +msgid "Team Wins" +msgstr "" + +#: g_language:msgproptrscoreact3 +msgid "Team Loses" +msgstr "" + +#: g_language:msgproptrscoreteam +msgid "Team" +msgstr "" + +#: g_language:msgproptrscoreteam0 +msgid "My" +msgstr "" + +#: g_language:msgproptrscoreteam1 +msgid "Enemy" +msgstr "" + +#: g_language:msgproptrscoreteam2 +msgid "Red" +msgstr "" + +#: g_language:msgproptrscoreteam3 +msgid "Blue" +msgstr "" + +#: g_language:msgproptrscorecon +msgid "Console message" +msgstr "" + +#: g_language:msgproptrscoremsg +msgid "Game message" +msgstr "" + +#: g_language:msgproptrdamagevalue +msgid "Damage" +msgstr "" + +#: g_language:msgproptrdamagekind +msgid "Damage type" +msgstr "" + +#: g_language:msgproptrdamagekind0 +msgid "HIT_SOME" +msgstr "" + +#: g_language:msgproptrdamagekind3 +msgid "HIT_TRAP" +msgstr "" + +#: g_language:msgproptrdamagekind4 +msgid "HIT_FALL" +msgstr "" + +#: g_language:msgproptrdamagekind5 +msgid "HIT_WATER" +msgstr "" + +#: g_language:msgproptrdamagekind6 +msgid "HIT_ACID" +msgstr "" + +#: g_language:msgproptrdamagekind7 +msgid "HIT_ELECTRO" +msgstr "" + +#: g_language:msgproptrdamagekind8 +msgid "HIT_FLAME" +msgstr "" + +#: g_language:msgproptrhealthmax +msgid "To maximum" +msgstr "" + +#: g_language:msgproptrshottype +msgid "Projectile" +msgstr "" + +#: g_language:msgproptrshotsound +msgid "Shot sound" +msgstr "" + +#: g_language:msgproptrshotangle +msgid "Angle" +msgstr "" + +#: g_language:msgproptrshotacc +msgid "Spread" +msgstr "" + +#: g_language:msgproptrshotto +msgid "Auto targeting" +msgstr "" + +#: g_language:msgproptrshotto0 +msgid "None" +msgstr "" + +#: g_language:msgproptrshotto1 +msgid "Monsters" +msgstr "" + +#: g_language:msgproptrshotto2 +msgid "Players" +msgstr "" + +#: g_language:msgproptrshotto3 +msgid "Red team" +msgstr "" + +#: g_language:msgproptrshotto4 +msgid "Blue team" +msgstr "" + +#: g_language:msgproptrshotto5 +msgid "Monsters, players" +msgstr "" + +#: g_language:msgproptrshotto6 +msgid "Players, monsters" +msgstr "" + +#: g_language:msgproptrshotaim +msgid "Auto-aiming mode" +msgstr "" + +#: g_language:msgproptrshotaim0 +msgid "Trigger area" +msgstr "" + +#: g_language:msgproptrshotaim1 +msgid "Entire map" +msgstr "" + +#: g_language:msgproptrshotaim2 +msgid "Trace trigger area" +msgstr "" + +#: g_language:msgproptrshotaim3 +msgid "Trace entire map" +msgstr "" + +#: g_language:msgproptrshotammo +msgid "Ammo limit" +msgstr "" + +#: g_language:msgproptrshotreload +msgid "Reload interval (in ticks)" +msgstr "" + +#: g_language:msgproptrshotsight +msgid "Sight interval (in ticks)" +msgstr "" + +#: g_language:msgproptrshotpanel +msgid "Indicator panel" +msgstr "" + +#: g_language:msgproptrmessagekind +msgid "Message kind" +msgstr "" + +#: g_language:msgproptrmessagekind0 +msgid "Console message" +msgstr "" + +#: g_language:msgproptrmessagekind1 +msgid "Event message" +msgstr "" + +#: g_language:msgproptrmessageto +msgid "Send to" +msgstr "" + +#: g_language:msgproptrmessageto0 +msgid "Me" +msgstr "" + +#: g_language:msgproptrmessageto1 +msgid "My team" +msgstr "" + +#: g_language:msgproptrmessageto2 +msgid "Enemy team" +msgstr "" + +#: g_language:msgproptrmessageto3 +msgid "Red team" +msgstr "" + +#: g_language:msgproptrmessageto4 +msgid "Blue team" +msgstr "" + +#: g_language:msgproptrmessageto5 +msgid "Everyone" +msgstr "" + +#: g_language:msgproptrmessagetext +msgid "Message text" +msgstr "" + +#: g_language:msgproptrmessagetime +msgid "Time (in ticks)" +msgstr "" + +#: g_language:msgproptreffecttype +msgid "Effect type" +msgstr "" + +#: g_language:msgproptreffectsubtype +msgid "Effect subtype" +msgstr "" + +#: g_language:msgproptreffectcolor +msgid "Effect color" +msgstr "" + +#: g_language:msgproptreffectcenter +msgid "Trigger center" +msgstr "" + +#: g_language:msgproptreffectvelx +msgid "Horizontal speed" +msgstr "" + +#: g_language:msgproptreffectvely +msgid "Vertical speed" +msgstr "" + +#: g_language:msgproptreffectspl +msgid "Speed variance left" +msgstr "" + +#: g_language:msgproptreffectspr +msgid "Speed variance right" +msgstr "" + +#: g_language:msgproptreffectspu +msgid "Speed variance up" +msgstr "" + +#: g_language:msgproptreffectspd +msgid "Speed variance down" +msgstr "" + +#: g_language:msgproptreffectparticle +msgid "Particle generator" +msgstr "" + +#: g_language:msgproptreffectanimation +msgid "Animation" +msgstr "" + +#: g_language:msgproptreffectsliquid +msgid "Water splash" +msgstr "" + +#: g_language:msgproptreffectlliquid +msgid "Light colored splash" +msgstr "" + +#: g_language:msgproptreffectdliquid +msgid "Dark colored splash" +msgstr "" + +#: g_language:msgproptreffectblood +msgid "Blood" +msgstr "" + +#: g_language:msgproptreffectspark +msgid "Sparks" +msgstr "" + +#: g_language:msgproptreffectbubble +msgid "Bubbles" +msgstr "" + +#: g_language:msgmsgerror +msgid "Error" +msgstr "" + +#: g_language:msgmsgwrongtexwidth +msgid "Panel Width must be a multiple of Texture Width (%d)" +msgstr "" + +#: g_language:msgmsgwrongtexheight +msgid "Panel Height must be a multiple of Texture Height (%d)" +msgstr "" + +#: g_language:msgmsgwrongalpha +msgid "Transparency must be in [0..255] interval" +msgstr "" + +#: g_language:msgmsgwrongsize +msgid "Width and Height must be greater than 0" +msgstr "" + +#: g_language:msgmsgwrongxy +msgid "X or Y coordinate hasn't been set" +msgstr "" + +#: g_language:msgmsgtexturealready +msgid "Texture \"%s\" already exists" +msgstr "" + +#: g_language:msgmsgresname64 +msgid "Resource \"%s\" name must not be longer than 64 chars" +msgstr "" + +#: g_language:msgmsgchooseitem +msgid "Select Item" +msgstr "" + +#: g_language:msgmsgchoosemonster +msgid "Select Monster" +msgstr "" + +#: g_language:msgmsgchoosearea +msgid "Select Area" +msgstr "" + +#: g_language:msgmsgchoosetexture +msgid "Select Texture" +msgstr "" + +#: g_language:msgmsgchooseres +msgid "Resource hasn't been selected" +msgstr "" + +#: g_language:msgmsgexit +msgid "Exit" +msgstr "" + +#: g_language:msgmsgexitpromt +msgid "Leaving so soon?" +msgstr "" + +#: g_language:msgmsgdeltexture +msgid "Delete the texture" +msgstr "" + +#: g_language:msgmsgdeltexturepromt +msgid "Delete the texture \"%s\" ?" +msgstr "" + +#: g_language:msgmsgdeltexturecant +msgid "Can't delete texture in use. Replace it on all panels with this texture." +msgstr "" + +#: g_language:msgmsgdelrecent +msgid "File does not longer exist" +msgstr "" + +#: g_language:msgmsgdelrecentpromt +msgid "Remove entry from recent list?" +msgstr "" + +#: g_language:msgmsgclearmap +msgid "New map" +msgstr "" + +#: g_language:msgmsgclearmappromt +msgid "Clear the entire map?" +msgstr "" + +#: g_language:msgmsgdeletemap +msgid "Delete the map" +msgstr "" + +#: g_language:msgmsgdeletemappromt +msgid "Delete the map \"%s\" from \"%s\" ?" +msgstr "" + +#: g_language:msgmsgmapdeleted +msgid "Map is deleted" +msgstr "" + +#: g_language:msgmsgmapdeletedpromt +msgid "Map \"%s\" is deleted" +msgstr "" + +#: g_language:msgmsgreopenmappromt +msgid "Reopen this map?" +msgstr "" + +#: g_language:msgmsgexecerror +msgid "Game start error" +msgstr "" + +#: g_language:msgmsgsounderror +msgid "Can't play sound" +msgstr "" + +#: g_language:msgmsgwaderror +msgid "Can't open WAD: %s" +msgstr "" + +#: g_language:msgmsgreserror +msgid "Can't read resource: %s:%s\\%s" +msgstr "" + +#: g_language:msgmsgpacked +msgid "Map \"%s\" with resources saved to \"%s\"" +msgstr "" + +#: g_language:msgmsgmapexists +msgid "Map \"%s\" already exists. Overwrite?" +msgstr "" + +#: g_language:msgmsgsavemap +msgid "Save the map" +msgstr "" + +#: g_language:msghintteleport +msgid "Choose destination of Teleport" +msgstr "" + +#: g_language:msghintspawn +msgid "Choose Spawn point" +msgstr "" + +#: g_language:msghintpaneldoor +msgid "Choose Door" +msgstr "" + +#: g_language:msghintpaneltexture +msgid "Choose textured Panel" +msgstr "" + +#: g_language:msghintpanelshot +msgid "Choose textured shot indicator Panel" +msgstr "" + +#: g_language:msghintpanellift +msgid "Choose Stream Panel" +msgstr "" + +#: g_language:msghintmonster +msgid "Choose Monster" +msgstr "" + +#: g_language:msghintextarea +msgid "Specify action Area" +msgstr "" + +#: g_language:msghintwidth +msgid "Width: %d" +msgstr "" + +#: g_language:msghintheight +msgid "Height: %d" +msgstr "" + +#: g_language:msgmenufile +msgid "File" +msgstr "" + +#: g_language:msgmenufilenew +msgid "New" +msgstr "" + +#: g_language:msgmenufileopen +msgid "Open..." +msgstr "" + +#: g_language:msgmenufilesave +msgid "Save" +msgstr "" + +#: g_language:msgmenufilesaveas +msgid "Save As..." +msgstr "" + +#: g_language:msgmenufileopenwad +msgid "Select Map..." +msgstr "" + +#: g_language:msgmenufilereopen +msgid "Revert to Saved" +msgstr "" + +#: g_language:msgmenufilesavemini +msgid "Save Minimap..." +msgstr "" + +#: g_language:msgmenufiledelete +msgid "Delete from WAD..." +msgstr "" + +#: g_language:msgmenufilepackmap +msgid "Pack to WAD..." +msgstr "" + +#: g_language:msgmenufileexit +msgid "Exit" +msgstr "" + +#: g_language:msgmenuedit +msgid "Edit" +msgstr "" + +#: g_language:msgmenueditundo +msgid "Undo" +msgstr "" + +#: g_language:msgmenueditcopy +msgid "Copy" +msgstr "" + +#: g_language:msgmenueditcut +msgid "Cut" +msgstr "" + +#: g_language:msgmenueditpaste +msgid "Paste" +msgstr "" + +#: g_language:msgmenueditselectall +msgid "Select All" +msgstr "" + +#: g_language:msgmenuedittofore +msgid "Bring to Front" +msgstr "" + +#: g_language:msgmenuedittoback +msgid "Send to Back" +msgstr "" + +#: g_language:msgmenutools +msgid "Tools" +msgstr "" + +#: g_language:msgmenutoolssnapgrid +msgid "Snap to Grid" +msgstr "" + +#: g_language:msgmenutoolsminimap +msgid "Show Minimap" +msgstr "" + +#: g_language:msgmenutoolsstepgrid +msgid "Switch Grid Granularity" +msgstr "" + +#: g_language:msgmenutoolsshowedges +msgid "Show Map Bounds" +msgstr "" + +#: g_language:msgmenutoolslayers +msgid "Layers" +msgstr "" + +#: g_language:msgmenuserv +msgid "Service" +msgstr "" + +#: g_language:msgmenuservtest +msgid "Analyse Map..." +msgstr "" + +#: g_language:msgmenuservopt +msgid "Optimize Map..." +msgstr "" + +#: g_language:msgmenuservpreview +msgid "Preview Mode" +msgstr "" + +#: g_language:msgmenuservlaunch +msgid "Run Test" +msgstr "" + +#: g_language:msgmenusets +msgid "Settings" +msgstr "" + +#: g_language:msgmenusetsmap +msgid "Map Properties..." +msgstr "" + +#: g_language:msgmenusetseditor +msgid "Preferences..." +msgstr "" + +#: g_language:msgmenusetslaunch +msgid "In-game test settings" +msgstr "" + +#: g_language:msgmenuhelp +msgid "Help" +msgstr "" + +#: g_language:msgmenuhelpabout +msgid "About" +msgstr "" + +#: g_language:msgmenulayerback +msgid "1. Background" +msgstr "" + +#: g_language:msgmenulayerwall +msgid "2. Walls" +msgstr "" + +#: g_language:msgmenulayerfore +msgid "3. Foreground" +msgstr "" + +#: g_language:msgmenulayerstair +msgid "4. Steps" +msgstr "" + +#: g_language:msgmenulayerwater +msgid "5. Liquids" +msgstr "" + +#: g_language:msgmenulayeritem +msgid "6. Items" +msgstr "" + +#: g_language:msgmenulayermonster +msgid "7. Monsters" +msgstr "" + +#: g_language:msgmenulayerarea +msgid "8. Areas" +msgstr "" + +#: g_language:msgmenulayertrigger +msgid "9. Triggers" +msgstr "" + +#: g_language:msgmenutbnew +msgid "New Map" +msgstr "" + +#: g_language:msgmenutbopen +msgid "Open Map" +msgstr "" + +#: g_language:msgmenutbsave +msgid "Save Map" +msgstr "" + +#: g_language:msgmenutbopenwad +msgid "Open another Map from same WAD" +msgstr "" + +#: g_language:msgmenutbminimap +msgid "Show Mini-map" +msgstr "" + +#: g_language:msgmenutblayers +msgid "Show/Hide Objects" +msgstr "" + +#: g_language:msgmenutbgrid +msgid "Grid On/Off" +msgstr "" + +#: g_language:msgmenutbgridstep +msgid "Switch Grid step" +msgstr "" + +#: g_language:msgmenutblaunch +msgid "Run Test" +msgstr "" + +#: g_language:msgmenulaunchsets +msgid "Settings..." +msgstr "" + +#: g_language:msgcapfxtype +msgid "Select Effect type" +msgstr "" + +#: g_language:msgcapmonstertype +msgid "Select Monster type" +msgstr "" + +#: g_language:msgcapitemtype +msgid "Select Item type" +msgstr "" + +#: g_language:msgcapabout +msgid "About Map Editor" +msgstr "" + +#: g_language:msgcapact +msgid "Activation type" +msgstr "" + +#: g_language:msgcapaddsky +msgid "Select Sky Texture" +msgstr "" + +#: g_language:msgcapaddsound +msgid "Select Sound/Music" +msgstr "" + +#: g_language:msgcapaddtexture +msgid "Select Texture" +msgstr "" + +#: g_language:msgcapkeys +msgid "Keys" +msgstr "" + +#: g_language:msgcaptest +msgid "Analyse Map" +msgstr "" + +#: g_language:msgcapopt +msgid "Optimize Map" +msgstr "" + +#: g_language:msgcapsets +msgid "Map Properties" +msgstr "" + +#: g_language:msgcaplaunch +msgid "In-game test Settings" +msgstr "" + +#: g_language:msgcapes +msgid "Editor Preferences" +msgstr "" + +#: g_language:msgcappack +msgid "Pack Map" +msgstr "" + +#: g_language:msgcapsave +msgid "Save Map" +msgstr "" + +#: g_language:msgcapmini +msgid "Save Minimap" +msgstr "" + +#: g_language:msgcapselect +msgid "Select Map" +msgstr "" + +#: g_language:msgcapopen +msgid "Open Map" +msgstr "" + +#: g_language:msgcapremove +msgid "Remove Map" +msgstr "" + +#: g_language:msgcaptexture +msgid "Texture: %dx%d" +msgstr "" + +#: g_language:msgcapanimation +msgid "Animation: %dx%d, %d frames" +msgstr "" + +#: g_language:msgcapstatselected +msgid "Selected objects: %d" +msgstr "" + +#: g_language:msgctrlpropkey +msgid "Property" +msgstr "" + +#: g_language:msgctrlpropvalue +msgid "Value" +msgstr "" + +#: g_language:msgctrlpanels +msgid "Panels" +msgstr "" + +#: g_language:msgctrlitems +msgid "Items" +msgstr "" + +#: g_language:msgctrlmonsters +msgid "Monsters" +msgstr "" + +#: g_language:msgctrlareas +msgid "Areas" +msgstr "" + +#: g_language:msgctrltriggers +msgid "Triggers" +msgstr "" + +#: g_language:msgctrllisttexture +msgid "Texture List" +msgstr "" + +#: g_language:msgctrllistitem +msgid "Item List" +msgstr "" + +#: g_language:msgctrllistmonster +msgid "Monster List" +msgstr "" + +#: g_language:msgctrllistarea +msgid "Area List" +msgstr "" + +#: g_language:msgctrllisttrigger +msgid "Trigger List" +msgstr "" + +#: g_language:msgctrllistactive +msgid "Activation Type" +msgstr "" + +#: g_language:msgctrllistkeys +msgid "Keys Needed" +msgstr "" + +#: g_language:msgctrlpreview +msgid "Texture Preview" +msgstr "" + +#: g_language:msgctrlitemdm +msgid "DM Only" +msgstr "" + +#: g_language:msgctrlitemfalls +msgid "Falls" +msgstr "" + +#: g_language:msgctrlleft +msgid "Left" +msgstr "" + +#: g_language:msgctrlright +msgid "Right" +msgstr "" + +#: g_language:msgctrlactplayerclose +msgid "Player Collides" +msgstr "" + +#: g_language:msgctrlactmonsterclose +msgid "Monster Collides" +msgstr "" + +#: g_language:msgctrlactplayerpress +msgid "Player Pressed" +msgstr "" + +#: g_language:msgctrlactmonsterpress +msgid "Monster Pressed" +msgstr "" + +#: g_language:msgctrlactshot +msgid "Shot" +msgstr "" + +#: g_language:msgctrlactnomonster +msgid "No Monsters" +msgstr "" + +#: g_language:msgctrlkeysred +msgid "Red Key" +msgstr "" + +#: g_language:msgctrlkeysgreen +msgid "Green Key" +msgstr "" + +#: g_language:msgctrlkeysblue +msgid "Blue Key" +msgstr "" + +#: g_language:msgctrlkeysteamred +msgid "Red Team" +msgstr "" + +#: g_language:msgctrlkeysteamblue +msgid "Blue Team" +msgstr "" + +#: g_language:msgctrloptgb +msgid "Optimization" +msgstr "" + +#: g_language:msgctrlopttexture +msgid "Texture Optimization" +msgstr "" + +#: g_language:msgctrloptpanel +msgid "Panel Optimization" +msgstr "" + +#: g_language:msgctrloptwall +msgid "Walls" +msgstr "" + +#: g_language:msgctrloptfore +msgid "Foreground" +msgstr "" + +#: g_language:msgctrloptback +msgid "Background" +msgstr "" + +#: g_language:msgctrloptstair +msgid "Steps" +msgstr "" + +#: g_language:msgctrloptwater +msgid "Water" +msgstr "" + +#: g_language:msgctrloptacid1 +msgid "Acid 1" +msgstr "" + +#: g_language:msgctrloptacid2 +msgid "Acid 2" +msgstr "" + +#: g_language:msgctrloptlift +msgid "Streams" +msgstr "" + +#: g_language:msgctrloptblockmon +msgid "Monster Boundary" +msgstr "" + +#: g_language:msgctrloptdesctexture +msgid "Deletes unused textures from texture list." +msgstr "" + +#: g_language:msgctrloptdescpanel +msgid "Merges nearby panels of same type. Increases game performance." +msgstr "" + +#: g_language:msgctrlsetsstats +msgid "Statistics:" +msgstr "" + +#: g_language:msgctrlsetssizes +msgid "Map Size:" +msgstr "" + +#: g_language:msgctrllaunchdm +msgid "Deathmatch" +msgstr "" + +#: g_language:msgctrllaunchtdm +msgid "Team Deathmatch" +msgstr "" + +#: g_language:msgctrllaunchctf +msgid "Capture the Flag" +msgstr "" + +#: g_language:msgctrllaunchcoop +msgid "Cooperative" +msgstr "" + +#: g_language:msgctrllaunch2p +msgid "Two Players" +msgstr "" + +#: g_language:msgctrllaunchff +msgid "Friendly Fire" +msgstr "" + +#: g_language:msgctrllaunchexit +msgid "Enable Exit" +msgstr "" + +#: g_language:msgctrllaunchweapons +msgid "Weapons Stay" +msgstr "" + +#: g_language:msgctrllaunchmonsters +msgid "Enable Monsters" +msgstr "" + +#: g_language:msgctrllaunchclose +msgid "Close the game after exiting the map" +msgstr "" + +#: g_language:msgctrllaunchopen +msgid "Select Doom 2D: Forever executable" +msgstr "" + +#: g_language:msgctrlesgrid +msgid "Show Grid" +msgstr "" + +#: g_language:msgctrlestexture +msgid "Show Panel Texture" +msgstr "" + +#: g_language:msgctrlespanelsize +msgid "Show Panel Size" +msgstr "" + +#: g_language:msgctrlescheckerboard +msgid "Use Checkerboard" +msgstr "" + +#: g_language:msgctrlpacktextures +msgid "Textures" +msgstr "" + +#: g_language:msgctrlpacksky +msgid "Sky" +msgstr "" + +#: g_language:msgctrlpackmusic +msgid "Music" +msgstr "" + +#: g_language:msgctrlpackadd +msgid "Don't overwrite WAD" +msgstr "" + +#: g_language:msgctrlpacknonstd +msgid "Non-standard Resources only" +msgstr "" + +#: g_language:msglabtexwidth +msgid "Texture Width:" +msgstr "" + +#: g_language:msglabtexheight +msgid "Texture Height:" +msgstr "" + +#: g_language:msglabspectrum +msgid "Show the Spectrum" +msgstr "" + +#: g_language:msglababoutver +msgid "Version 2.1.5" +msgstr "" + +#: g_language:msglababoutauthor +msgid "Author: rs.falcon" +msgstr "" + +#: g_language:msglababoutauthor2 +msgid "Additions: Pss" +msgstr "" + +#: g_language:msglababoutmail +msgid "rmw.falcon@mail.ru" +msgstr "" + +#: g_language:msglababoutmail2 +msgid "pssxx@mail.ru" +msgstr "" + +#: g_language:msglababoutsite +msgid "Doom 2D: Forever Web-site" +msgstr "" + +#: g_language:msglababouthttp +msgid "www.doom2d.org" +msgstr "" + +#: g_language:msglabaddwads +msgid "WAD Files:" +msgstr "" + +#: g_language:msglabaddsections +msgid "WAD Sections:" +msgstr "" + +#: g_language:msglabsetsname +msgid "Map Name:" +msgstr "" + +#: g_language:msglabsetsdesc +msgid "Map Description" +msgstr "" + +#: g_language:msglabsetsauthor +msgid "Author:" +msgstr "" + +#: g_language:msglabsetsback +msgid "Background/Sky:" +msgstr "" + +#: g_language:msglabsetsmusic +msgid "Music:" +msgstr "" + +#: g_language:msglabsetstextures +msgid "Textures:" +msgstr "" + +#: g_language:msglabsetspanels +msgid "Panels:" +msgstr "" + +#: g_language:msglabsetsitems +msgid "Items:" +msgstr "" + +#: g_language:msglabsetsmonsters +msgid "Monsters:" +msgstr "" + +#: g_language:msglabsetsareas +msgid "Areas:" +msgstr "" + +#: g_language:msglabsetstriggers +msgid "Triggers:" +msgstr "" + +#: g_language:msglabsetssizes +msgid "Current:" +msgstr "" + +#: g_language:msglabsetswidth +msgid "Width:" +msgstr "" + +#: g_language:msglabsetsheight +msgid "Height:" +msgstr "" + +#: g_language:msglabsetsmapmove +msgid "Direction to shift map objects:" +msgstr "" + +#: g_language:msglabsetssnapping +msgid "Preserve snapping" +msgstr "" + +#: g_language:msglablaunchtime +msgid "Time Limit:" +msgstr "" + +#: g_language:msglablaunchsecs +msgid "seconds" +msgstr "" + +#: g_language:msglablaunchscore +msgid "Score Limit:" +msgstr "" + +#: g_language:msglablaunchpath +msgid "Path to Doom2DF.exe:" +msgstr "" + +#: g_language:msglablaunchargs +msgid "Launch Arguments:" +msgstr "" + +#: g_language:msglabesgrid +msgid "Grid Step:" +msgstr "" + +#: g_language:msglabesgridcolor +msgid "Grid Color:" +msgstr "" + +#: g_language:msglabesgridsize +msgid "Grid Dot Size:" +msgstr "" + +#: g_language:msglabesback +msgid "Background Color:" +msgstr "" + +#: g_language:msglabespreview +msgid "Texture Preview Background Color:" +msgstr "" + +#: g_language:msglabesminimap +msgid "Mini-map Scale:" +msgstr "" + +#: g_language:msglabesrecent +msgid "Recent Maps List Contains:" +msgstr "" + +#: g_language:msglabeslanguage +msgid "Language:" +msgstr "" + +#: g_language:msglabescompress +msgid "Compress archive when save" +msgstr "" + +#: g_language:msglabesbackup +msgid "Make backup before save" +msgstr "" + +#: g_language:msglabpacksaveto +msgid "Save to:" +msgstr "" + +#: g_language:msglabpackmapname +msgid "Map Resource Name:" +msgstr "" + +#: g_language:msglabpacktextures +msgid "Texture Section:" +msgstr "" + +#: g_language:msglabpacksky +msgid "Sky Section:" +msgstr "" + +#: g_language:msglabpackmusic +msgid "Music Section:" +msgstr "" + +#: g_language:msglabminiscale +msgid "Scale:" +msgstr "" + +#: g_language:msgbtnapplyprops +msgid "Apply Properties" +msgstr "" + +#: g_language:msgbtnok +msgid "OK" +msgstr "" + +#: g_language:msgbtncancel +msgid "Cancel" +msgstr "" + +#: g_language:msgbtnadd +msgid "Add" +msgstr "" + +#: g_language:msgbtnclose +msgid "Close" +msgstr "" + +#: g_language:msgbtnaddclose +msgid "Add and Close" +msgstr "" + +#: g_language:msgbtntestagain +msgid "Check" +msgstr "" + +#: g_language:msgbtnstart +msgid "Run" +msgstr "" + +#: g_language:msgbtnpack +msgid "Pack" +msgstr "" + +#: g_language:msgbtnsave +msgid "Save" +msgstr "" + +#: g_language:msgbtnnosound +msgid "No sound" +msgstr "" + +#: g_language:msgbtntextureadd +msgid "Add texture to the list" +msgstr "" + +#: g_language:msgbtntexturedelete +msgid "Delete texture from the list" +msgstr "" + +#: g_language:msgbtntextureempty +msgid "Deselect texture" +msgstr "" + +#: g_language:msgloadwad +msgid "Reading WAD" +msgstr "" + +#: g_language:msgloadmap +msgid "Loading Map" +msgstr "" + +#: g_language:msgloadtextures +msgid "Reading Textures" +msgstr "" + +#: g_language:msgloadpanels +msgid "Reading Panels" +msgstr "" + +#: g_language:msgloaditems +msgid "Reading Items" +msgstr "" + +#: g_language:msgloadmonsters +msgid "Reading Monsters" +msgstr "" + +#: g_language:msgloadareas +msgid "Reading Areas" +msgstr "" + +#: g_language:msgloadtriggers +msgid "Reading Triggers" +msgstr "" + +#: g_language:msgtestareawall +msgid "Player collides with the wall and will be stuck." +msgstr "" + +#: g_language:msgtestareawallstr +msgid "Area #%d collides with Map (%d:%d)" +msgstr "" + +#: g_language:msgtestspawns1 +msgid "There are several spawn points for First Player on the map" +msgstr "" + +#: g_language:msgtestspawns2 +msgid "There are several spawn points for Second Player on the map" +msgstr "" + +#: g_language:msgtestspawns +msgid "There are several spawn points on the map. Random one will be used." +msgstr "" + +#: g_language:msgtestnodm +msgid "There are no DM spawn points on the map" +msgstr "" + +#: g_language:msgtestnodmex +msgid "There are no DM spawn points on the map. Only \"Single Player\" mode available." +msgstr "" + +#: g_language:msgtestmonsterwall +msgid "Monster collides with the wall and will be stuck." +msgstr "" + +#: g_language:msgtestmonsterwallstr +msgid "Monster #%d collides with a map (%d:%d)" +msgstr "" + +#: g_language:msgoptnotextures +msgid "Texture list is empty" +msgstr "" + +#: g_language:msgoptdeletedtextures +msgid "Deleted Textures:" +msgstr "" + +#: g_language:msgopttotaltextures +msgid "Textures Total:" +msgstr "" + +#: g_language:msgopttexdeleted +msgid "Textures Deleted:" +msgstr "" + +#: g_language:msgoptpanelsopt +msgid "Panels Optimized:" +msgstr "" + +#: g_language:msgoptwalls +msgid "Walls Optimization..." +msgstr "" + +#: g_language:msgoptfores +msgid "Foreground Optimization..." +msgstr "" + +#: g_language:msgoptbacks +msgid "Background Optimization..." +msgstr "" + +#: g_language:msgoptstairs +msgid "Steps Optimization..." +msgstr "" + +#: g_language:msgoptwater +msgid "Water Optimization..." +msgstr "" + +#: g_language:msgoptacid1 +msgid "Acid 1 Optimization..." +msgstr "" + +#: g_language:msgoptacid2 +msgid "Acid 2 Optimization..." +msgstr "" + +#: g_language:msgoptlifts +msgid "Streams Optimization..." +msgstr "" + +#: g_language:msgoptblockmon +msgid "Monster Boundaries Optimization..." +msgstr "" + +#: g_language:msgopttotalpanels +msgid "Panels Total:" +msgstr "" + +#: g_language:msgoptpanelsafter +msgid "Panels after Optimization:" +msgstr "" + +#: g_language:msgwadspecialmap +msgid "" +msgstr "" + +#: g_language:msgwadspecialtexs +msgid "" +msgstr "" + +#: g_language:msgfilefilterall +msgid "Doom 2D: Forever Maps (*.dfz, *.dfzip, *.zip, *.wad)|*.dfz;*.dfzip;*.zip;*.wad|Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*" +msgstr "" + +#: g_language:msgfilefilterwad +msgid "Doom 2D: Forever Maps (*.dfz)|*.dfz|Doom 2D: Forever Maps (*.dfzip)|*.dfzip|Doom 2D: Forever Maps (*.zip)|*.zip|Doom 2D: Forever Maps (*.wad)|*.wad|All Files (*.*)|*.*" +msgstr "" + +#: g_language:msgeditortitle +msgid "Doom 2D: Forever Map Editor" +msgstr "" + +#: imagingcanvases:sconstructorinvalidpointer +msgid "Invalid pointer (%p) to TImageData passed to TImagingCanvas constructor." +msgstr "" + +#: imagingcanvases:sconstructorinvalidimage +msgid "Invalid image data passed to TImagingCanvas constructor (%s)." +msgstr "" + +#: imagingcanvases:sconstructorunsupportedformat +msgid "Image passed to TImagingCanvas constructor is in unsupported format (%s)" +msgstr "" + +#: imaginggif:sgifdecodingerror +msgid "Error when decoding GIF LZW data" +msgstr "" + +#: imagingjpeg:sjpegerror +msgid "JPEG Error" +msgstr "" + +#: imagingnetworkgraphics:serrorloadingchunk +msgid "Error when reading %s chunk data. File may be corrupted." +msgstr "" + +#: imaging:sexceptmsg +msgid "Exception Message" +msgstr "" + +#: imaging:sallfilter +msgid "All Images" +msgstr "" + +#: imaging:sunknownformat +msgid "Unknown and unsupported format" +msgstr "" + +#: imaging:serrorfreeimage +msgid "Error while freeing image. %s" +msgstr "" + +#: imaging:serrorcloneimage +msgid "Error while cloning image. %s" +msgstr "" + +#: imaging:serrorflipimage +msgid "Error while flipping image. %s" +msgstr "" + +#: imaging:serrormirrorimage +msgid "Error while mirroring image. %s" +msgstr "" + +#: imaging:serrorresizeimage +msgid "Error while resizing image. %s" +msgstr "" + +#: imaging:serrorswapimage +msgid "Error while swapping channels of image. %s" +msgstr "" + +#: imaging:sfileformatcannotload +msgid "Image Format \"%s\" does not support loading images." +msgstr "" + +#: imaging:sfileformatcannotsave +msgid "Image Format \"%s\" does not support saving images." +msgstr "" + +#: imaging:serrornewimage +msgid "Error while creating image data with params: Width=%d Height=%d Format=%s." +msgstr "" + +#: imaging:serrorconvertimage +msgid "Error while converting image to format \"%s\". %s" +msgstr "" + +#: imaging:simageinfo +msgid "Image @%p info: Width = %dpx, Height = %dpx, Format = %s, Size = %.0n %s, Bits @%p, Palette @%p." +msgstr "" + +#: imaging:simageinfoinvalid +msgid "Access violation encountered when getting info on image at address %p." +msgstr "" + +#: imaging:sfilenotvalid +msgid "File \"%s\" is not valid image in \"%s\" format." +msgstr "" + +#: imaging:sstreamnotvalid +msgid "Stream %p does not contain valid image in \"%s\" format." +msgstr "" + +#: imaging:smemorynotvalid +msgid "Memory %p (%d Bytes) does not contain valid image in \"%s\" format." +msgstr "" + +#: imaging:serrorloadingfile +msgid "Error while loading images from file \"%s\" (file format: %s)." +msgstr "" + +#: imaging:serrorloadingstream +msgid "Error while loading images from stream %p (file format: %s)." +msgstr "" + +#: imaging:serrorloadingmemory +msgid "Error while loading images from memory %p (%d Bytes) (file format: %s)." +msgstr "" + +#: imaging:serrorsavingfile +msgid "Error while saving images to file \"%s\" (file format: %s)." +msgstr "" + +#: imaging:serrorsavingstream +msgid "Error while saving images to stream %p (file format: %s)." +msgstr "" + +#: imaging:serrorsavingmemory +msgid "Error while saving images to memory %p (%d Bytes) (file format: %s)." +msgstr "" + +#: imaging:serrorfindcolor +msgid "Error while finding color in palette @%p with %d entries." +msgstr "" + +#: imaging:serrorgrayscalepalette +msgid "Error while filling grayscale palette @%p with %d entries." +msgstr "" + +#: imaging:serrorcustompalette +msgid "Error while filling custom palette @%p with %d entries." +msgstr "" + +#: imaging:serrorswappalette +msgid "Error while swapping channels of palette @%p with %d entries." +msgstr "" + +#: imaging:serrorreducecolors +msgid "Error while reducing number of colors of image to %d. %s" +msgstr "" + +#: imaging:serrorgeneratemipmaps +msgid "Error while generating %d mipmap levels for image %s" +msgstr "" + +#: imaging:simagesnotvalid +msgid "One or more images are not valid." +msgstr "" + +#: imaging:serrorcopyrect +msgid "Error while copying rect from image %s to image %s." +msgstr "" + +#: imaging:serrormapimage +msgid "Error while mapping image %s to palette." +msgstr "" + +#: imaging:serrorfillrect +msgid "Error while filling rectangle X:%d Y:%d W:%d H:%d in image %s" +msgstr "" + +#: imaging:serrorsplitimage +msgid "Error while splitting image %s to %dx%d sized chunks." +msgstr "" + +#: imaging:serrormakepaletteforimages +msgid "Error while making %d color palette for %d images." +msgstr "" + +#: imaging:serrornewpalette +msgid "Error while creating new palette with %d entries" +msgstr "" + +#: imaging:serrorfreepalette +msgid "Error while freeing palette @%p" +msgstr "" + +#: imaging:serrorcopypalette +msgid "Error while copying %d entries from palette @%p to @%p" +msgstr "" + +#: imaging:serrorreplacecolor +msgid "Error while replacing colors in rectangle X:%d Y:%d W:%d H:%d of image %s" +msgstr "" + +#: imaging:serrorrotateimage +msgid "Error while rotating image %s by %.2n degrees" +msgstr "" + +#: imaging:serrorstretchrect +msgid "Error while stretching rect from image %s to image %s." +msgstr "" + +#: imaging:serroremptystream +msgid "Input stream has no data. Check Position property." +msgstr "" + +#: imaging:serrorinvalidinputimage +msgid "Invalid input image." +msgstr "" + +#: imaging:serrorbadimage +msgid "Bad image detected." +msgstr "" + diff --git a/lang/editor.ru_RU.po b/lang/editor.ru_RU.po new file mode 100644 index 0000000..5f69aef --- /dev/null +++ b/lang/editor.ru_RU.po @@ -0,0 +1,2254 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: g_language:msgnotaccessible +msgid "N/A" +msgstr "Н/Д" + +#: g_language:msgarrayboolfalse +msgid "No" +msgstr "Нет" + +#: g_language:msgarraybooltrue +msgid "Yes" +msgstr "Да" + +#: g_language:msgarraydirleft +msgid "Left" +msgstr "Влево" + +#: g_language:msgarraydirright +msgid "Right" +msgstr "Вправо" + +#: g_language:msgarraydirsame +msgid "Don''t change" +msgstr "Не менять" + +#: g_language:msgarraydirreversed +msgid "Reversed" +msgstr "Обратное" + +#: g_language:msgarraydirbtnleft +msgid "Left" +msgstr "Влево" + +#: g_language:msgarraydirbtnright +msgid "Right" +msgstr "Вправо" + +#: g_language:msgarraydirbtnup +msgid "Up" +msgstr "Вверх" + +#: g_language:msgarraydirbtndown +msgid "Down" +msgstr "Вниз" + +#: g_language:msgarraypanelwall +msgid "Wall" +msgstr "Стена" + +#: g_language:msgarraypanelback +msgid "Background" +msgstr "Фон" + +#: g_language:msgarraypanelfront +msgid "Foreground" +msgstr "Передний план" + +#: g_language:msgarraypaneldooropen +msgid "Open Door" +msgstr "Открытая дверь" + +#: g_language:msgarraypaneldoorclose +msgid "Closed Door" +msgstr "Закрытая дверь" + +#: g_language:msgarraypanelstair +msgid "Step" +msgstr "Ступень" + +#: g_language:msgarraypanelwater +msgid "Water" +msgstr "Вода" + +#: g_language:msgarraypanelacid1 +msgid "Acid 1" +msgstr "Кислота 1" + +#: g_language:msgarraypanelacid2 +msgid "Acid 2" +msgstr "Кислота 2" + +#: g_language:msgarraypanelliftup +msgid "Stream Up" +msgstr "Лифт вверх" + +#: g_language:msgarraypanelliftdown +msgid "Stream Down" +msgstr "Лифт вниз" + +#: g_language:msgarraypanelliftleft +msgid "Stream Left" +msgstr "Поток влево" + +#: g_language:msgarraypanelliftright +msgid "Stream Right" +msgstr "Поток вправо" + +#: g_language:msgarraypanelblockmon +msgid "Monster Boundary" +msgstr "Блокиратор монстров" + +#: g_language:msgarrayfxnone +msgid "None" +msgstr "Нет" + +#: g_language:msgarrayfxteleport +msgid "Teleport" +msgstr "Телепортация" + +#: g_language:msgarrayfxrespawn +msgid "Respawn" +msgstr "Респаун" + +#: g_language:msgarrayfxfire +msgid "Arch-Vile Fire" +msgstr "Огонь колдуна" + +#: g_language:msgarrayitemmedkit +msgid "Stimpack" +msgstr "Аптечка" + +#: g_language:msgarrayitemlargemedkit +msgid "Medikit" +msgstr "Большая аптечка" + +#: g_language:msgarrayitemblackmedkit +msgid "Berserk Pack" +msgstr "Чёрная аптечка" + +#: g_language:msgarrayitemgreenarmor +msgid "Green Armor" +msgstr "Зелёная броня" + +#: g_language:msgarrayitembluearmor +msgid "Blue Armor" +msgstr "Синяя броня" + +#: g_language:msgarrayitembluesphere +msgid "Soulsphere" +msgstr "Шарик 100%" + +#: g_language:msgarrayitemmegasphere +msgid "Megasphere" +msgstr "Мегасфера" + +#: g_language:msgarrayitemhazsuit +msgid "Envirosuit" +msgstr "Защитный костюм" + +#: g_language:msgarrayitemoxygen +msgid "Scuba" +msgstr "Акваланг" + +#: g_language:msgarrayiteminvulnerability +msgid "Invulnerability" +msgstr "Неуязвимость" + +#: g_language:msgarrayitemchainsaw +msgid "Chainsaw" +msgstr "Бензопила" + +#: g_language:msgarrayitemshotgun +msgid "Shotgun" +msgstr "Ружьё" + +#: g_language:msgarrayitemdbshotgun +msgid "Super Shotgun" +msgstr "Двустволка" + +#: g_language:msgarrayitemchaingun +msgid "Chaingun" +msgstr "Пулемёт" + +#: g_language:msgarrayitemrocketlauncher +msgid "Rocket Launcher" +msgstr "Ракетница" + +#: g_language:msgarrayitemplasmarifle +msgid "Plasma Rifle" +msgstr "Плазмаган" + +#: g_language:msgarrayitembfg +msgid "BFG9000" +msgstr "BFG9000" + +#: g_language:msgarrayitemsuperminigun +msgid "Super Chaingun" +msgstr "Суперпулемёт" + +#: g_language:msgarrayitemflamethrower +msgid "Flamethrower" +msgstr "Огнемёт" + +#: g_language:msgarrayitemclip +msgid "Clip" +msgstr "Патроны" + +#: g_language:msgarrayitemammobox +msgid "Box of Bullets" +msgstr "Ящик патронов" + +#: g_language:msgarrayitem4shells +msgid "4 Shells" +msgstr "4 гильзы" + +#: g_language:msgarrayitem25shells +msgid "Box of Shells" +msgstr "25 гильз" + +#: g_language:msgarrayitem1rocket +msgid "Rocket" +msgstr "1 ракета" + +#: g_language:msgarrayitemrocketbox +msgid "Box of Rockets" +msgstr "5 ракет" + +#: g_language:msgarrayitemcell +msgid "Energy Cell" +msgstr "Батарейка" + +#: g_language:msgarrayitemlargecell +msgid "Energy Cell Pack" +msgstr "Батарея" + +#: g_language:msgarrayitemfuelcan +msgid "Fuel Canister" +msgstr "Канистра" + +#: g_language:msgarrayitembackpack +msgid "Backpack" +msgstr "Рюкзак" + +#: g_language:msgarrayitemkeyred +msgid "Red Key" +msgstr "Красный ключ" + +#: g_language:msgarrayitemkeygreen +msgid "Green Key" +msgstr "Зелёный ключ" + +#: g_language:msgarrayitemkeyblue +msgid "Blue Key" +msgstr "Синий ключ" + +#: g_language:msgarrayitembottle +msgid "Health Globe" +msgstr "Живая вода" + +#: g_language:msgarrayitemhelmet +msgid "Armor Shard" +msgstr "Бронешлем" + +#: g_language:msgarrayitemjetpack +msgid "Jetpack" +msgstr "Реактивный ранец" + +#: g_language:msgarrayiteminvis +msgid "Invisibility" +msgstr "Невидимость" + +#: g_language:msgarrayshotpistol +msgid "Pistol shot" +msgstr "Выстрел пистолета" + +#: g_language:msgarrayshotbullet +msgid "Chaingun shot" +msgstr "Выстрел пулемёта" + +#: g_language:msgarrayshotshotgun +msgid "Shotgun shot" +msgstr "Выстрел ружья" + +#: g_language:msgarrayshotssg +msgid "Super Shotgun shot" +msgstr "Выстрел двустволки" + +#: g_language:msgarrayshotimp +msgid "Imp fireball" +msgstr "Шар беса" + +#: g_language:msgarrayshotplasma +msgid "Blue plasma" +msgstr "Синяя плазма" + +#: g_language:msgarrayshotspider +msgid "Arachnotron plasma" +msgstr "Плазма арахнотрона" + +#: g_language:msgarrayshotcaco +msgid "Cacodemon fireball" +msgstr "Шар какодемона" + +#: g_language:msgarrayshotbaron +msgid "Hell Baron projectile" +msgstr "Выстрел барона ада" + +#: g_language:msgarrayshotmancub +msgid "Mancubus gunshot" +msgstr "Снаряд манкубуса" + +#: g_language:msgarrayshotrev +msgid "Revenant projectile" +msgstr "Снаряд скелета" + +#: g_language:msgarrayshotrocket +msgid "Rocket" +msgstr "Ракета" + +#: g_language:msgarrayshotbfg +msgid "BFG ball" +msgstr "Шар BFG" + +#: g_language:msgarrayshotexpl +msgid "Explosion" +msgstr "Взрыв" + +#: g_language:msgarrayshotbfgexpl +msgid "BFG explosion" +msgstr "Взрыв BFG" + +#: g_language:msgarrayshotflame +msgid "Flame" +msgstr "Огонь" + +#: g_language:msgarraymondemon +msgid "Pinky" +msgstr "Демон" + +#: g_language:msgarraymonimp +msgid "Imp" +msgstr "Бес" + +#: g_language:msgarraymonzombie +msgid "Zombie" +msgstr "Зомби" + +#: g_language:msgarraymonsergeant +msgid "Sergeant" +msgstr "Сержант" + +#: g_language:msgarraymoncyber +msgid "Cyberdemon" +msgstr "Кибердемон" + +#: g_language:msgarraymoncgun +msgid "Commando" +msgstr "Пулемётчик" + +#: g_language:msgarraymonhellbaron +msgid "Hell Baron" +msgstr "Барон ада" + +#: g_language:msgarraymonhellknight +msgid "Hell Knight" +msgstr "Рыцарь ада" + +#: g_language:msgarraymoncacodemon +msgid "Cacodemon" +msgstr "Какодемон" + +#: g_language:msgarraymonlostsoul +msgid "Lost Soul" +msgstr "Огненный череп" + +#: g_language:msgarraymonpainelemental +msgid "Pain Elemental" +msgstr "Авиабаза" + +#: g_language:msgarraymonmastermind +msgid "Spider Mastermind" +msgstr "Большой паук" + +#: g_language:msgarraymonarachnatron +msgid "Arachnotron" +msgstr "Арахнотрон" + +#: g_language:msgarraymonmancubus +msgid "Mancubus" +msgstr "Манкубус" + +#: g_language:msgarraymonrevenant +msgid "Revenant" +msgstr "Скелет" + +#: g_language:msgarraymonarchvile +msgid "Arch-Vile" +msgstr "Колдун" + +#: g_language:msgarraymonfish +msgid "Piranha" +msgstr "Рыба" + +#: g_language:msgarraymonbarrel +msgid "Barrel" +msgstr "Бочка" + +#: g_language:msgarraymonrobot +msgid "Robot" +msgstr "Робот" + +#: g_language:msgarraymonprikolist +msgid "Prikolist" +msgstr "Приколист" + +#: g_language:msgarrayareaplayerone +msgid "Player 1" +msgstr "Первый игрок" + +#: g_language:msgarrayareaplayertwo +msgid "Player 2" +msgstr "Второй игрок" + +#: g_language:msgarrayareadm +msgid "DM Spawn Point" +msgstr "Точка DM" + +#: g_language:msgarrayareaflagred +msgid "Red Flag" +msgstr "Красный флаг" + +#: g_language:msgarrayareaflagblue +msgid "Blue Flag" +msgstr "Синий флаг" + +#: g_language:msgarrayareaflagdom +msgid "Domination Flag" +msgstr "DOM флаг" + +#: g_language:msgarrayareateamred +msgid "Red Team" +msgstr "Красная команда" + +#: g_language:msgarrayareateamblue +msgid "Blue Team" +msgstr "Синяя команда" + +#: g_language:msgarraytrexit +msgid "Exit" +msgstr "Выход" + +#: g_language:msgarraytrteleport +msgid "Teleport" +msgstr "Телепортация" + +#: g_language:msgarraytrdooropen +msgid "Open Door" +msgstr "Открыть дверь" + +#: g_language:msgarraytrdoorclose +msgid "Close Door" +msgstr "Закрыть дверь" + +#: g_language:msgarraytrdoorswitch +msgid "Door" +msgstr "Дверь" + +#: g_language:msgarraytrdoor5sec +msgid "Door (5 sec)" +msgstr "Дверь (5 секунд)" + +#: g_language:msgarraytrtrapclose +msgid "Close Trap" +msgstr "Закрыть ловушку" + +#: g_language:msgarraytrtrap +msgid "Trap" +msgstr "Ловушка" + +#: g_language:msgarraytrextend +msgid "Extender" +msgstr "Расширитель" + +#: g_language:msgarraytrsecret +msgid "Secret" +msgstr "Секрет" + +#: g_language:msgarraytrliftup +msgid "Turn stream up/left" +msgstr "Лифт вверх/поток влево" + +#: g_language:msgarraytrliftdown +msgid "Turn stream down/right" +msgstr "Лифт вниз/поток вправо" + +#: g_language:msgarraytrliftswitch +msgid "Revert stream" +msgstr "Лифт" + +#: g_language:msgarraytrtexture +msgid "Change Texture" +msgstr "Смена текстуры" + +#: g_language:msgarraytron +msgid "Enable Trigger" +msgstr "Включить триггер" + +#: g_language:msgarraytroff +msgid "Disable Trigger" +msgstr "Выключить триггер" + +#: g_language:msgarraytrswitch +msgid "Trigger Toggle" +msgstr "Переключить триггер" + +#: g_language:msgarraytrsound +msgid "Play Sound" +msgstr "Звук" + +#: g_language:msgarraytrspawnmonster +msgid "Spawn Monster" +msgstr "Создать монстра" + +#: g_language:msgarraytrspawnitem +msgid "Spawn Item" +msgstr "Создать предмет" + +#: g_language:msgarraytrmusic +msgid "Play Music" +msgstr "Музыка" + +#: g_language:msgarraytrpush +msgid "Push" +msgstr "Ускорение" + +#: g_language:msgarraytrscore +msgid "Team Score" +msgstr "Начисление очков" + +#: g_language:msgarraytrmessage +msgid "Message" +msgstr "Сообщение" + +#: g_language:msgarraytrdamage +msgid "Damage" +msgstr "Урон" + +#: g_language:msgarraytrhealth +msgid "Healer" +msgstr "Оздоровитель" + +#: g_language:msgarraytrshot +msgid "Turret" +msgstr "Турель" + +#: g_language:msgarraytreffect +msgid "Effect" +msgstr "Эффект" + +#: g_language:msgpropid +msgid "ID" +msgstr "ID" + +#: g_language:msgpropx +msgid "X" +msgstr "X" + +#: g_language:msgpropy +msgid "Y" +msgstr "Y" + +#: g_language:msgpropwidth +msgid "Width" +msgstr "Ширина" + +#: g_language:msgpropheight +msgid "Height" +msgstr "Высота" + +#: g_language:msgproppaneltype +msgid "Panel Type" +msgstr "Тип панели" + +#: g_language:msgproppaneltex +msgid "Texture" +msgstr "Текстура" + +#: g_language:msgproppanelalpha +msgid "Transparency" +msgstr "Прозрачность" + +#: g_language:msgproppanelblend +msgid "Blending" +msgstr "Смешивание" + +#: g_language:msgpropdmonly +msgid "DM Only" +msgstr "Только в DM" + +#: g_language:msgpropitemfalls +msgid "Falls" +msgstr "Падает" + +#: g_language:msgpropdirection +msgid "Direction" +msgstr "Направление" + +#: g_language:msgproptrtype +msgid "Trigger Type" +msgstr "Тип триггера" + +#: g_language:msgproptrenabled +msgid "Enabled" +msgstr "Включён" + +#: g_language:msgproptrtexturepanel +msgid "Textured Panel" +msgstr "Панель с текстурой" + +#: g_language:msgproptractivation +msgid "Activation Type" +msgstr "Тип активации" + +#: g_language:msgproptrkeys +msgid "Keys" +msgstr "Ключи" + +#: g_language:msgproptrd2d +msgid "D2D-like" +msgstr "Как в D2D" + +#: g_language:msgproptrsilent +msgid "Silent" +msgstr "Без звука" + +#: g_language:msgproptrcount +msgid "Count" +msgstr "Количество" + +#: g_language:msgproptrinterval +msgid "Interval (in ticks)" +msgstr "Интервал (в тиках)" + +#: g_language:msgproptrhealth +msgid "Health" +msgstr "Здоровье" + +#: g_language:msgproptrnextmap +msgid "Next Map" +msgstr "След. карта" + +#: g_language:msgproptrteleportto +msgid "Teleport to" +msgstr "Точка телепорта" + +#: g_language:msgproptrteleportsilent +msgid "Silent" +msgstr "Тихий телепорт" + +#: g_language:msgproptrteleportdir +msgid "New Direction" +msgstr "Направление после" + +#: g_language:msgproptrdoorpanel +msgid "Door Panel" +msgstr "Панель двери" + +#: g_language:msgproptrtrappanel +msgid "Trap Panel" +msgstr "Панель ловушки" + +#: g_language:msgproptrexarea +msgid "Action Area" +msgstr "Область воздействия" + +#: g_language:msgproptrexdelay +msgid "Delay" +msgstr "Задержка" + +#: g_language:msgproptrexcount +msgid "Count" +msgstr "Счётчик" + +#: g_language:msgproptrexmonster +msgid "Monster ID" +msgstr "ID монстра" + +#: g_language:msgproptrexrandom +msgid "Random" +msgstr "Случайный" + +#: g_language:msgproptrliftpanel +msgid "Stream Panel" +msgstr "Панель лифта" + +#: g_language:msgproptrtextureonce +msgid "Once" +msgstr "Один раз" + +#: g_language:msgproptrtextureanimonce +msgid "Animate Once" +msgstr "Аним. один раз" + +#: g_language:msgproptrsoundname +msgid "Sound (snd)" +msgstr "Звук (snd)" + +#: g_language:msgproptrsoundvolume +msgid "Volume" +msgstr "Громкость" + +#: g_language:msgproptrsoundpan +msgid "Pan" +msgstr "Стерео" + +#: g_language:msgproptrsoundcount +msgid "Loops" +msgstr "Играть раз" + +#: g_language:msgproptrsoundlocal +msgid "Local" +msgstr "Локальный" + +#: g_language:msgproptrsoundswitch +msgid "Switch" +msgstr "Переключение" + +#: g_language:msgproptrfxtype +msgid "Effect" +msgstr "Эффект" + +#: g_language:msgproptrspawnto +msgid "Spawn at" +msgstr "Точка появления" + +#: g_language:msgproptrspawnmax +msgid "Maximum" +msgstr "Максимум" + +#: g_language:msgproptrspawndelay +msgid "Autospawn (in ticks)" +msgstr "Автоспаун (в тиках)" + +#: g_language:msgproptrmonstertype +msgid "Monster" +msgstr "Тип монстра" + +#: g_language:msgproptrmonsteractive +msgid "Active" +msgstr "Активен" + +#: g_language:msgproptrmonsterbehaviour +msgid "Behaviour" +msgstr "Поведение" + +#: g_language:msgproptrmonsterbehaviour0 +msgid "Normal" +msgstr "Обычное" + +#: g_language:msgproptrmonsterbehaviour1 +msgid "Killer" +msgstr "Убийца" + +#: g_language:msgproptrmonsterbehaviour2 +msgid "Maniac" +msgstr "Маньяк" + +#: g_language:msgproptrmonsterbehaviour3 +msgid "Insane" +msgstr "Поехавший" + +#: g_language:msgproptrmonsterbehaviour4 +msgid "Cannibal" +msgstr "Каннибал" + +#: g_language:msgproptrmonsterbehaviour5 +msgid "Good" +msgstr "Добрый" + +#: g_language:msgproptritemtype +msgid "Item" +msgstr "Тип предмета" + +#: g_language:msgproptrmusicname +msgid "Music" +msgstr "Музыка" + +#: g_language:msgproptrmusicact +msgid "Action (m)" +msgstr "Действие (m)" + +#: g_language:msgproptrmusicon +msgid "Play" +msgstr "Включить" + +#: g_language:msgproptrmusicoff +msgid "Pause" +msgstr "Выключить" + +#: g_language:msgproptrpushangle +msgid "Angle" +msgstr "Угол" + +#: g_language:msgproptrpushforce +msgid "Force" +msgstr "Сила" + +#: g_language:msgproptrpushreset +msgid "Reset velocity" +msgstr "Сбрасывать скорость" + +#: g_language:msgproptrscoreact +msgid "Action (s)" +msgstr "Действие (s)" + +#: g_language:msgproptrscoreact0 +msgid "Add points" +msgstr "Прибавить очки" + +#: g_language:msgproptrscoreact1 +msgid "Subtract points" +msgstr "Отнять очки" + +#: g_language:msgproptrscoreact2 +msgid "Team Wins" +msgstr "Выигрыш" + +#: g_language:msgproptrscoreact3 +msgid "Team Loses" +msgstr "Проигрыш" + +#: g_language:msgproptrscoreteam +msgid "Team" +msgstr "Команда" + +#: g_language:msgproptrscoreteam0 +msgid "My" +msgstr "Своя" + +#: g_language:msgproptrscoreteam1 +msgid "Enemy" +msgstr "Соперника" + +#: g_language:msgproptrscoreteam2 +msgid "Red" +msgstr "Красная" + +#: g_language:msgproptrscoreteam3 +msgid "Blue" +msgstr "Синяя" + +#: g_language:msgproptrscorecon +msgid "Console message" +msgstr "Сообщение в консоль" + +#: g_language:msgproptrscoremsg +msgid "Game message" +msgstr "Сообщение в игру" + +#: g_language:msgproptrdamagevalue +msgid "Damage" +msgstr "Ущерб" + +#: g_language:msgproptrdamagekind +msgid "Damage type" +msgstr "Тип урона" + +#: g_language:msgproptrdamagekind0 +msgid "HIT_SOME" +msgstr "HIT_SOME" + +#: g_language:msgproptrdamagekind3 +msgid "HIT_TRAP" +msgstr "HIT_TRAP" + +#: g_language:msgproptrdamagekind4 +msgid "HIT_FALL" +msgstr "HIT_FALL" + +#: g_language:msgproptrdamagekind5 +msgid "HIT_WATER" +msgstr "HIT_WATER" + +#: g_language:msgproptrdamagekind6 +msgid "HIT_ACID" +msgstr "HIT_ACID" + +#: g_language:msgproptrdamagekind7 +msgid "HIT_ELECTRO" +msgstr "HIT_ELECTRO" + +#: g_language:msgproptrdamagekind8 +msgid "HIT_FLAME" +msgstr "HIT_FLAME" + +#: g_language:msgproptrhealthmax +msgid "To maximum" +msgstr "До максимума" + +#: g_language:msgproptrshottype +msgid "Projectile" +msgstr "Снаряд" + +#: g_language:msgproptrshotsound +msgid "Shot sound" +msgstr "Звук выстрела" + +#: g_language:msgproptrshotangle +msgid "Angle" +msgstr "Угол" + +#: g_language:msgproptrshotacc +msgid "Spread" +msgstr "Разброс" + +#: g_language:msgproptrshotto +msgid "Auto targeting" +msgstr "Автонаведение" + +#: g_language:msgproptrshotto0 +msgid "None" +msgstr "Нет" + +#: g_language:msgproptrshotto1 +msgid "Monsters" +msgstr "Монстры" + +#: g_language:msgproptrshotto2 +msgid "Players" +msgstr "Игроки" + +#: g_language:msgproptrshotto3 +msgid "Red team" +msgstr "Красная команда" + +#: g_language:msgproptrshotto4 +msgid "Blue team" +msgstr "Синяя команда" + +#: g_language:msgproptrshotto5 +msgid "Monsters, players" +msgstr "Монстры, игроки" + +#: g_language:msgproptrshotto6 +msgid "Players, monsters" +msgstr "Игроки, монстры" + +#: g_language:msgproptrshotaim +msgid "Auto-aiming mode" +msgstr "Режим автонаведения" + +#: g_language:msgproptrshotaim0 +msgid "Trigger area" +msgstr "Область триггера" + +#: g_language:msgproptrshotaim1 +msgid "Entire map" +msgstr "По всей карте" + +#: g_language:msgproptrshotaim2 +msgid "Trace trigger area" +msgstr "Область триггера с трассировкой" + +#: g_language:msgproptrshotaim3 +msgid "Trace entire map" +msgstr "Вся карта с трассировкой" + +#: g_language:msgproptrshotammo +msgid "Ammo limit" +msgstr "Кол-во патронов" + +#: g_language:msgproptrshotreload +msgid "Reload interval (in ticks)" +msgstr "Перезарядка (в тиках)" + +#: g_language:msgproptrshotsight +msgid "Sight interval (in ticks)" +msgstr "Реакция (в тиках)" + +#: g_language:msgproptrshotpanel +msgid "Indicator panel" +msgstr "Панель индикации" + +#: g_language:msgproptrmessagekind +msgid "Message kind" +msgstr "Тип сообщения" + +#: g_language:msgproptrmessagekind0 +msgid "Console message" +msgstr "Текст в консоли" + +#: g_language:msgproptrmessagekind1 +msgid "Event message" +msgstr "Крупный текст по центру" + +#: g_language:msgproptrmessageto +msgid "Send to" +msgstr "Получатель" + +#: g_language:msgproptrmessageto0 +msgid "Me" +msgstr "Я" + +#: g_language:msgproptrmessageto1 +msgid "My team" +msgstr "Моя команда" + +#: g_language:msgproptrmessageto2 +msgid "Enemy team" +msgstr "Вражеская команда" + +#: g_language:msgproptrmessageto3 +msgid "Red team" +msgstr "Красная команда" + +#: g_language:msgproptrmessageto4 +msgid "Blue team" +msgstr "Синяя команда" + +#: g_language:msgproptrmessageto5 +msgid "Everyone" +msgstr "Все игроки" + +#: g_language:msgproptrmessagetext +msgid "Message text" +msgstr "Текст сообщения" + +#: g_language:msgproptrmessagetime +msgid "Time (in ticks)" +msgstr "Время показа (в тиках)" + +#: g_language:msgproptreffecttype +msgid "Effect type" +msgstr "Тип эффекта" + +#: g_language:msgproptreffectsubtype +msgid "Effect subtype" +msgstr "Подтип эффекта" + +#: g_language:msgproptreffectcolor +msgid "Effect color" +msgstr "Цвет эффекта" + +#: g_language:msgproptreffectcenter +msgid "Trigger center" +msgstr "По центру" + +#: g_language:msgproptreffectvelx +msgid "Horizontal speed" +msgstr "Скорость по горизонтали" + +#: g_language:msgproptreffectvely +msgid "Vertical speed" +msgstr "Скорость по вертикали" + +#: g_language:msgproptreffectspl +msgid "Speed variance left" +msgstr "Отклонение влево" + +#: g_language:msgproptreffectspr +msgid "Speed variance right" +msgstr "Отклонение вправо" + +#: g_language:msgproptreffectspu +msgid "Speed variance up" +msgstr "Отклонение вверх" + +#: g_language:msgproptreffectspd +msgid "Speed variance down" +msgstr "Отклонение вниз" + +#: g_language:msgproptreffectparticle +msgid "Particle generator" +msgstr "Генератор частиц" + +#: g_language:msgproptreffectanimation +msgid "Animation" +msgstr "Анимация" + +#: g_language:msgproptreffectsliquid +msgid "Water splash" +msgstr "Брызги воды" + +#: g_language:msgproptreffectlliquid +msgid "Light colored splash" +msgstr "Цветные брызги (светлее)" + +#: g_language:msgproptreffectdliquid +msgid "Dark colored splash" +msgstr "Цветные брызги (темнее)" + +#: g_language:msgproptreffectblood +msgid "Blood" +msgstr "Кровь" + +#: g_language:msgproptreffectspark +msgid "Sparks" +msgstr "Искры" + +#: g_language:msgproptreffectbubble +msgid "Bubbles" +msgstr "Пузырьки" + +#: g_language:msgmsgerror +msgid "Error" +msgstr "Ошибка" + +#: g_language:msgmsgwrongtexwidth +msgid "Panel Width must be a multiple of Texture Width (%d)" +msgstr "Ширина панели должна быть кратна ширине текстуры (%d)" + +#: g_language:msgmsgwrongtexheight +msgid "Panel Height must be a multiple of Texture Height (%d)" +msgstr "Высота панели должна быть кратна высоте текстуры (%d)" + +#: g_language:msgmsgwrongalpha +msgid "Transparency must be in [0..255] interval" +msgstr "Прозрачность должна быть в интервале [0..255]" + +#: g_language:msgmsgwrongsize +msgid "Width and Height must be greater than 0" +msgstr "Ширина и высота должны быть больше 0" + +#: g_language:msgmsgwrongxy +msgid "X or Y coordinate hasn''t been set" +msgstr "Не задана X или Y координата" + +#: g_language:msgmsgtexturealready +msgid "Texture \"%s\" already exists" +msgstr "Текстура \"%s\" уже добавлена" + +#: g_language:msgmsgresname64 +msgid "Resource \"%s\" name must not be longer than 64 chars" +msgstr "Имя ресурса \"%s\" должно быть не длиннее 64 символов" + +#: g_language:msgmsgchooseitem +msgid "Select Item" +msgstr "Выберите предмет" + +#: g_language:msgmsgchoosemonster +msgid "Select Monster" +msgstr "Выберите монстра" + +#: g_language:msgmsgchoosearea +msgid "Select Area" +msgstr "Выберите область" + +#: g_language:msgmsgchoosetexture +msgid "Select Texture" +msgstr "Выберите текстуру" + +#: g_language:msgmsgchooseres +msgid "Resource hasn''t been selected" +msgstr "Не выбран ресурс" + +#: g_language:msgmsgexit +msgid "Exit" +msgstr "Выход" + +#: g_language:msgmsgexitpromt +msgid "Leaving so soon?" +msgstr "Уже уходите?" + +#: g_language:msgmsgdeltexture +msgid "Delete the texture" +msgstr "Удалить текстуру" + +#: g_language:msgmsgdeltexturepromt +msgid "Delete the texture \"%s\" ?" +msgstr "Удалить текстуру \"%s\" ?" + +#: g_language:msgmsgdeltexturecant +msgid "Can''t delete texture in use. Replace it on all panels with this texture." +msgstr "Нельзя удалить используемую текстуру. Замените её на каждой панели с ней." + +#: g_language:msgmsgdelrecent +msgid "File does not longer exist" +msgstr "Этого файла больше нет" + +#: g_language:msgmsgdelrecentpromt +msgid "Remove entry from recent list?" +msgstr "Убрать запись из истории?" + +#: g_language:msgmsgclearmap +msgid "New map" +msgstr "Новая карта" + +#: g_language:msgmsgclearmappromt +msgid "Clear the entire map?" +msgstr "Очистить всю карту?" + +#: g_language:msgmsgdeletemap +msgid "Delete the map" +msgstr "Удалить карту" + +#: g_language:msgmsgdeletemappromt +msgid "Delete the map \"%s\" from \"%s\" ?" +msgstr "Удалить карту \"%s\" из \"%s\" ?" + +#: g_language:msgmsgmapdeleted +msgid "Map is deleted" +msgstr "Карта удалена" + +#: g_language:msgmsgmapdeletedpromt +msgid "Map \"%s\" is deleted" +msgstr "Карта \"%s\" удалена" + +#: g_language:msgmsgreopenmappromt +msgid "Reopen this map?" +msgstr "Загрузить карту заново?" + +#: g_language:msgmsgexecerror +msgid "Game start error" +msgstr "Ошибка запуска игры" + +#: g_language:msgmsgsounderror +msgid "Can''t play sound" +msgstr "Не удалось проиграть звук" + +#: g_language:msgmsgwaderror +msgid "Can''t open WAD: %s" +msgstr "Ошибка при открытии WAD: %s" + +#: g_language:msgmsgreserror +msgid "Can''t read resource: %s:%s\\%s" +msgstr "Ошибка при чтении ресурса: %s:%s\\%s" + +#: g_language:msgmsgpacked +msgid "Map \"%s\" with resources saved to \"%s\"" +msgstr "Карта \"%s\" вместе с ресурсами сохранена в \"%s\"" + +#: g_language:msgmsgmapexists +msgid "Map \"%s\" already exists. Overwrite?" +msgstr "Карта \"%s\" уже существует. Заменить?" + +#: g_language:msgmsgsavemap +msgid "Save the map" +msgstr "Сохранить карту" + +#: g_language:msghintteleport +msgid "Choose destination of Teleport" +msgstr "Выберите точку телепорта" + +#: g_language:msghintspawn +msgid "Choose Spawn point" +msgstr "Выберите точку появления" + +#: g_language:msghintpaneldoor +msgid "Choose Door" +msgstr "Выберите панель двери" + +#: g_language:msghintpaneltexture +msgid "Choose textured Panel" +msgstr "Выберите панель с текстурой" + +#: g_language:msghintpanelshot +msgid "Choose textured shot indicator Panel" +msgstr "Выберите панель индикации выстрела с текстурой" + +#: g_language:msghintpanellift +msgid "Choose Stream Panel" +msgstr "Выберите панель лифта" + +#: g_language:msghintmonster +msgid "Choose Monster" +msgstr "Выберите монстра" + +#: g_language:msghintextarea +msgid "Specify action Area" +msgstr "Укажите область воздействия" + +#: g_language:msghintwidth +msgid "Width: %d" +msgstr "Ширина: %d" + +#: g_language:msghintheight +msgid "Height: %d" +msgstr "Высота: %d" + +#: g_language:msgmenufile +msgid "File" +msgstr "Файл" + +#: g_language:msgmenufilenew +msgid "New" +msgstr "Создать" + +#: g_language:msgmenufileopen +msgid "Open..." +msgstr "Открыть..." + +#: g_language:msgmenufilesave +msgid "Save" +msgstr "Сохранить" + +#: g_language:msgmenufilesaveas +msgid "Save As..." +msgstr "Сохранить как..." + +#: g_language:msgmenufileopenwad +msgid "Select Map..." +msgstr "Выбрать карту..." + +#: g_language:msgmenufilereopen +msgid "Revert to Saved" +msgstr "Открыть заново" + +#: g_language:msgmenufilesavemini +msgid "Save Minimap..." +msgstr "Сохранить мини-карту..." + +#: g_language:msgmenufiledelete +msgid "Delete from WAD..." +msgstr "Удалить из WAD..." + +#: g_language:msgmenufilepackmap +msgid "Pack to WAD..." +msgstr "Упаковать в WAD..." + +#: g_language:msgmenufileexit +msgid "Exit" +msgstr "Выход" + +#: g_language:msgmenuedit +msgid "Edit" +msgstr "Правка" + +#: g_language:msgmenueditundo +msgid "Undo" +msgstr "Отменить" + +#: g_language:msgmenueditcopy +msgid "Copy" +msgstr "Копировать" + +#: g_language:msgmenueditcut +msgid "Cut" +msgstr "Вырезать" + +#: g_language:msgmenueditpaste +msgid "Paste" +msgstr "Вставить" + +#: g_language:msgmenueditselectall +msgid "Select All" +msgstr "Выделить всё" + +#: g_language:msgmenuedittofore +msgid "Bring to Front" +msgstr "Передвинуть вперёд" + +#: g_language:msgmenuedittoback +msgid "Send to Back" +msgstr "Передвинуть назад" + +#: g_language:msgmenutools +msgid "Tools" +msgstr "Инструменты" + +#: g_language:msgmenutoolssnapgrid +msgid "Snap to Grid" +msgstr "Привязка к сетке" + +#: g_language:msgmenutoolsminimap +msgid "Show Minimap" +msgstr "Показать Мини-карту" + +#: g_language:msgmenutoolsstepgrid +msgid "Switch Grid Granularity" +msgstr "Переключить шаг сетки" + +#: g_language:msgmenutoolsshowedges +msgid "Show Map Bounds" +msgstr "Показывать границы карты" + +#: g_language:msgmenutoolslayers +msgid "Layers" +msgstr "Слои" + +#: g_language:msgmenuserv +msgid "Service" +msgstr "Сервис" + +#: g_language:msgmenuservtest +msgid "Analyse Map..." +msgstr "Проверка карты..." + +#: g_language:msgmenuservopt +msgid "Optimize Map..." +msgstr "Оптимизация карты..." + +#: g_language:msgmenuservpreview +msgid "Preview Mode" +msgstr "Предварительный просмотр" + +#: g_language:msgmenuservlaunch +msgid "Run Test" +msgstr "Тест карты в игре" + +#: g_language:msgmenusets +msgid "Settings" +msgstr "Настройка" + +#: g_language:msgmenusetsmap +msgid "Map Properties..." +msgstr "Свойства карты..." + +#: g_language:msgmenusetseditor +msgid "Preferences..." +msgstr "Настройки..." + +#: g_language:msgmenusetslaunch +msgid "In-game test settings" +msgstr "Настройки теста в игре" + +#: g_language:msgmenuhelp +msgid "Help" +msgstr "Справка" + +#: g_language:msgmenuhelpabout +msgid "About" +msgstr "О программе" + +#: g_language:msgmenulayerback +msgid "1. Background" +msgstr "1. Фон" + +#: g_language:msgmenulayerwall +msgid "2. Walls" +msgstr "2. Стены" + +#: g_language:msgmenulayerfore +msgid "3. Foreground" +msgstr "3. Передний план" + +#: g_language:msgmenulayerstair +msgid "4. Steps" +msgstr "4. Ступени" + +#: g_language:msgmenulayerwater +msgid "5. Liquids" +msgstr "5. Жидкости" + +#: g_language:msgmenulayeritem +msgid "6. Items" +msgstr "6. Предметы" + +#: g_language:msgmenulayermonster +msgid "7. Monsters" +msgstr "7. Монстры" + +#: g_language:msgmenulayerarea +msgid "8. Areas" +msgstr "8. Области" + +#: g_language:msgmenulayertrigger +msgid "9. Triggers" +msgstr "9. Триггеры" + +#: g_language:msgmenutbnew +msgid "New Map" +msgstr "Новая карта" + +#: g_language:msgmenutbopen +msgid "Open Map" +msgstr "Открыть карту" + +#: g_language:msgmenutbsave +msgid "Save Map" +msgstr "Сохранить карту" + +#: g_language:msgmenutbopenwad +msgid "Open another Map from same WAD" +msgstr "Открыть другую карту из этого же WAD''а" + +#: g_language:msgmenutbminimap +msgid "Show Mini-map" +msgstr "Показать мини-карту" + +#: g_language:msgmenutblayers +msgid "Show/Hide Objects" +msgstr "Отрисовка панелей/объектов" + +#: g_language:msgmenutbgrid +msgid "Grid On/Off" +msgstr "Включить/Отключить отображение сетки" + +#: g_language:msgmenutbgridstep +msgid "Switch Grid step" +msgstr "Изменить шаг сетки" + +#: g_language:msgmenutblaunch +msgid "Run Test" +msgstr "Тест карты в игре" + +#: g_language:msgmenulaunchsets +msgid "Settings..." +msgstr "Параметры..." + +#: g_language:msgcapfxtype +msgid "Select Effect type" +msgstr "Выберите тип эффекта" + +#: g_language:msgcapmonstertype +msgid "Select Monster type" +msgstr "Выберите тип монстра" + +#: g_language:msgcapitemtype +msgid "Select Item type" +msgstr "Выберите тип предмета" + +#: g_language:msgcapabout +msgid "About Map Editor" +msgstr "О программе" + +#: g_language:msgcapact +msgid "Activation type" +msgstr "Тип активации" + +#: g_language:msgcapaddsky +msgid "Select Sky Texture" +msgstr "Выберите текстуру неба" + +#: g_language:msgcapaddsound +msgid "Select Sound/Music" +msgstr "Выберите звук/музыку" + +#: g_language:msgcapaddtexture +msgid "Select Texture" +msgstr "Выберите текстуру" + +#: g_language:msgcapkeys +msgid "Keys" +msgstr "Ключи" + +#: g_language:msgcaptest +msgid "Analyse Map" +msgstr "Проверка карты" + +#: g_language:msgcapopt +msgid "Optimize Map" +msgstr "Оптимизация карты" + +#: g_language:msgcapsets +msgid "Map Properties" +msgstr "Свойства карты" + +#: g_language:msgcaplaunch +msgid "In-game test Settings" +msgstr "Настройки теста в игре" + +#: g_language:msgcapes +msgid "Editor Preferences" +msgstr "Настройки редактора" + +#: g_language:msgcappack +msgid "Pack Map" +msgstr "Упаковать карту" + +#: g_language:msgcapsave +msgid "Save Map" +msgstr "Сохранить карту" + +#: g_language:msgcapmini +msgid "Save Minimap" +msgstr "Сохранить мини-карту" + +#: g_language:msgcapselect +msgid "Select Map" +msgstr "Выберите карту" + +#: g_language:msgcapopen +msgid "Open Map" +msgstr "Открыть карту" + +#: g_language:msgcapremove +msgid "Remove Map" +msgstr "Удалить карту" + +#: g_language:msgcaptexture +msgid "Texture: %dx%d" +msgstr "Текстура: %dx%d" + +#: g_language:msgcapanimation +msgid "Animation: %dx%d, %d frames" +msgstr "Анимация: %dx%d, %d кадров" + +#: g_language:msgcapstatselected +msgid "Selected objects: %d" +msgstr "Выделено объектов: %d" + +#: g_language:msgctrlpropkey +msgid "Property" +msgstr "Свойство" + +#: g_language:msgctrlpropvalue +msgid "Value" +msgstr "Значение" + +#: g_language:msgctrlpanels +msgid "Panels" +msgstr "Панели" + +#: g_language:msgctrlitems +msgid "Items" +msgstr "Предметы" + +#: g_language:msgctrlmonsters +msgid "Monsters" +msgstr "Монстры" + +#: g_language:msgctrlareas +msgid "Areas" +msgstr "Области" + +#: g_language:msgctrltriggers +msgid "Triggers" +msgstr "Триггеры" + +#: g_language:msgctrllisttexture +msgid "Texture List" +msgstr "Список текстур" + +#: g_language:msgctrllistitem +msgid "Item List" +msgstr "Список предметов" + +#: g_language:msgctrllistmonster +msgid "Monster List" +msgstr "Список монстров" + +#: g_language:msgctrllistarea +msgid "Area List" +msgstr "Список областей" + +#: g_language:msgctrllisttrigger +msgid "Trigger List" +msgstr "Список триггеров" + +#: g_language:msgctrllistactive +msgid "Activation Type" +msgstr "Тип активации триггера" + +#: g_language:msgctrllistkeys +msgid "Keys Needed" +msgstr "Ключи для активации" + +#: g_language:msgctrlpreview +msgid "Texture Preview" +msgstr "Предварительный просмотр" + +#: g_language:msgctrlitemdm +msgid "DM Only" +msgstr "Только в DM" + +#: g_language:msgctrlitemfalls +msgid "Falls" +msgstr "Падает" + +#: g_language:msgctrlleft +msgid "Left" +msgstr "Влево" + +#: g_language:msgctrlright +msgid "Right" +msgstr "Вправо" + +#: g_language:msgctrlactplayerclose +msgid "Player Collides" +msgstr "Игрок близко" + +#: g_language:msgctrlactmonsterclose +msgid "Monster Collides" +msgstr "Монстр близко" + +#: g_language:msgctrlactplayerpress +msgid "Player Pressed" +msgstr "Игрок нажал" + +#: g_language:msgctrlactmonsterpress +msgid "Monster Pressed" +msgstr "Монстр нажал" + +#: g_language:msgctrlactshot +msgid "Shot" +msgstr "Выстрел" + +#: g_language:msgctrlactnomonster +msgid "No Monsters" +msgstr "Монстров нет" + +#: g_language:msgctrlkeysred +msgid "Red Key" +msgstr "Красный ключ" + +#: g_language:msgctrlkeysgreen +msgid "Green Key" +msgstr "Зелёный ключ" + +#: g_language:msgctrlkeysblue +msgid "Blue Key" +msgstr "Синий ключ" + +#: g_language:msgctrlkeysteamred +msgid "Red Team" +msgstr "Красная команда" + +#: g_language:msgctrlkeysteamblue +msgid "Blue Team" +msgstr "Синяя команда" + +#: g_language:msgctrloptgb +msgid "Optimization" +msgstr "Оптимизация" + +#: g_language:msgctrlopttexture +msgid "Texture Optimization" +msgstr "Оптимизация текстур" + +#: g_language:msgctrloptpanel +msgid "Panel Optimization" +msgstr "Оптимизация панелей" + +#: g_language:msgctrloptwall +msgid "Walls" +msgstr "Стены" + +#: g_language:msgctrloptfore +msgid "Foreground" +msgstr "Передний план" + +#: g_language:msgctrloptback +msgid "Background" +msgstr "Фон" + +#: g_language:msgctrloptstair +msgid "Steps" +msgstr "Ступени" + +#: g_language:msgctrloptwater +msgid "Water" +msgstr "Вода" + +#: g_language:msgctrloptacid1 +msgid "Acid 1" +msgstr "Кислота 1" + +#: g_language:msgctrloptacid2 +msgid "Acid 2" +msgstr "Кислота 2" + +#: g_language:msgctrloptlift +msgid "Streams" +msgstr "Лифты" + +#: g_language:msgctrloptblockmon +msgid "Monster Boundary" +msgstr "Блокиратор монстров" + +#: g_language:msgctrloptdesctexture +msgid "Deletes unused textures from texture list." +msgstr "Удаляет неиспользуемые текстуры из списка." + +#: g_language:msgctrloptdescpanel +msgid "Merges nearby panels of same type. Increases game performance." +msgstr "Объединяет одинаковые панели, расположенные вплотную друг к другу, увеличивая тем самым производительность игры." + +#: g_language:msgctrlsetsstats +msgid "Statistics:" +msgstr "Статистика:" + +#: g_language:msgctrlsetssizes +msgid "Map Size:" +msgstr "Размеры:" + +#: g_language:msgctrllaunchdm +msgid "Deathmatch" +msgstr "Deathmatch" + +#: g_language:msgctrllaunchtdm +msgid "Team Deathmatch" +msgstr "Team Deathmatch" + +#: g_language:msgctrllaunchctf +msgid "Capture the Flag" +msgstr "Capture the Flag" + +#: g_language:msgctrllaunchcoop +msgid "Cooperative" +msgstr "Cooperative" + +#: g_language:msgctrllaunch2p +msgid "Two Players" +msgstr "Два игрока" + +#: g_language:msgctrllaunchff +msgid "Friendly Fire" +msgstr "Урон своих" + +#: g_language:msgctrllaunchexit +msgid "Enable Exit" +msgstr "Включить выход" + +#: g_language:msgctrllaunchweapons +msgid "Weapons Stay" +msgstr "Оружие остаётся" + +#: g_language:msgctrllaunchmonsters +msgid "Enable Monsters" +msgstr "Монстры в DM" + +#: g_language:msgctrllaunchclose +msgid "Close the game after exiting the map" +msgstr "Закрыть игру после выхода из карты" + +#: g_language:msgctrllaunchopen +msgid "Select Doom 2D: Forever executable" +msgstr "Выберите файл игры Doom 2D: Forever" + +#: g_language:msgctrlesgrid +msgid "Show Grid" +msgstr "Показывать сетку" + +#: g_language:msgctrlestexture +msgid "Show Panel Texture" +msgstr "Показывать текстуру панели" + +#: g_language:msgctrlespanelsize +msgid "Show Panel Size" +msgstr "Показывать размеры панели " + +#: g_language:msgctrlescheckerboard +msgid "Use Checkerboard" +msgstr "Использовать шахматку" + +#: g_language:msgctrlpacktextures +msgid "Textures" +msgstr "Текстуры" + +#: g_language:msgctrlpacksky +msgid "Sky" +msgstr "Небо" + +#: g_language:msgctrlpackmusic +msgid "Music" +msgstr "Музыку" + +#: g_language:msgctrlpackadd +msgid "Don''t overwrite WAD" +msgstr "Не перезаписывать WAD" + +#: g_language:msgctrlpacknonstd +msgid "Non-standard Resources only" +msgstr "Только нестандартные ресурсы" + +#: g_language:msglabtexwidth +msgid "Texture Width:" +msgstr "Ширина текстуры:" + +#: g_language:msglabtexheight +msgid "Texture Height:" +msgstr "Высота текстуры:" + +#: g_language:msglabspectrum +msgid "Show the Spectrum" +msgstr "Показать спектр" + +#: g_language:msglababoutver +msgid "Version 2.1.5" +msgstr "Версия 2.1.5" + +#: g_language:msglababoutauthor +msgid "Author: rs.falcon" +msgstr "Автор: rs.falcon" + +#: g_language:msglababoutauthor2 +msgid "Additions: Pss" +msgstr "Дорабатывал: Pss" + +#: g_language:msglababoutmail +msgid "rmw.falcon@mail.ru" +msgstr "rmw.falcon@mail.ru" + +#: g_language:msglababoutmail2 +msgid "pssxx@mail.ru" +msgstr "pssxx@mail.ru" + +#: g_language:msglababoutsite +msgid "Doom 2D: Forever Web-site" +msgstr "Сайт Doom 2D: Forever" + +#: g_language:msglababouthttp +msgid "www.doom2d.org" +msgstr "www.doom2d.org" + +#: g_language:msglabaddwads +msgid "WAD Files:" +msgstr "Список WAD-файлов:" + +#: g_language:msglabaddsections +msgid "WAD Sections:" +msgstr "Список секций WAD-файла:" + +#: g_language:msglabsetsname +msgid "Map Name:" +msgstr "Название карты:" + +#: g_language:msglabsetsdesc +msgid "Map Description" +msgstr "Описание карты:" + +#: g_language:msglabsetsauthor +msgid "Author:" +msgstr "Автор:" + +#: g_language:msglabsetsback +msgid "Background/Sky:" +msgstr "Фон/Небо:" + +#: g_language:msglabsetsmusic +msgid "Music:" +msgstr "Музыка:" + +#: g_language:msglabsetstextures +msgid "Textures:" +msgstr "Текстур:" + +#: g_language:msglabsetspanels +msgid "Panels:" +msgstr "Панелей:" + +#: g_language:msglabsetsitems +msgid "Items:" +msgstr "Предметов:" + +#: g_language:msglabsetsmonsters +msgid "Monsters:" +msgstr "Монстров:" + +#: g_language:msglabsetsareas +msgid "Areas:" +msgstr "Областей:" + +#: g_language:msglabsetstriggers +msgid "Triggers:" +msgstr "Триггеров:" + +#: g_language:msglabsetssizes +msgid "Current:" +msgstr "Текущий:" + +#: g_language:msglabsetswidth +msgid "Width:" +msgstr "Ширина:" + +#: g_language:msglabsetsheight +msgid "Height:" +msgstr "Высота:" + +#: g_language:msglabsetsmapmove +msgid "Direction to shift map objects:" +msgstr "Направление смещения объектов карты:" + +#: g_language:msglabsetssnapping +msgid "Preserve snapping" +msgstr "Сохранять привязку" + +#: g_language:msglablaunchtime +msgid "Time Limit:" +msgstr "Лимит времени:" + +#: g_language:msglablaunchsecs +msgid "seconds" +msgstr "секунд" + +#: g_language:msglablaunchscore +msgid "Score Limit:" +msgstr "Лимит очков:" + +#: g_language:msglablaunchpath +msgid "Path to Doom2DF.exe:" +msgstr "Путь к Doom2DF.exe:" + +#: g_language:msglablaunchargs +msgid "Launch Arguments:" +msgstr "Параметры запуска:" + +#: g_language:msglabesgrid +msgid "Grid Step:" +msgstr "Шаг сетки:" + +#: g_language:msglabesgridcolor +msgid "Grid Color:" +msgstr "Цвет сетки:" + +#: g_language:msglabesgridsize +msgid "Grid Dot Size:" +msgstr "Размер точек сетки:" + +#: g_language:msglabesback +msgid "Background Color:" +msgstr "Цвет фона:" + +#: g_language:msglabespreview +msgid "Texture Preview Background Color:" +msgstr "Цвет фона поля предпросмотра текстуры:" + +#: g_language:msglabesminimap +msgid "Mini-map Scale:" +msgstr "Масштаб мини-карты:" + +#: g_language:msglabesrecent +msgid "Recent Maps List Contains:" +msgstr "Запоминать последних открытых карт:" + +#: g_language:msglabeslanguage +msgid "Language:" +msgstr "Язык:" + +#: g_language:msglabescompress +msgid "Compress archive when save" +msgstr "Сжимать архив при сохранении" + +#: g_language:msglabesbackup +msgid "Make backup before save" +msgstr "Резервная копия при сохранении" + +#: g_language:msglabpacksaveto +msgid "Save to:" +msgstr "Сохранить в:" + +#: g_language:msglabpackmapname +msgid "Map Resource Name:" +msgstr "Название ресурса карты:" + +#: g_language:msglabpacktextures +msgid "Texture Section:" +msgstr "Секция для текстур:" + +#: g_language:msglabpacksky +msgid "Sky Section:" +msgstr "Секция для неба:" + +#: g_language:msglabpackmusic +msgid "Music Section:" +msgstr "Секция для музыки:" + +#: g_language:msglabminiscale +msgid "Scale:" +msgstr "Масштаб:" + +#: g_language:msgbtnapplyprops +msgid "Apply Properties" +msgstr "Применить свойства" + +#: g_language:msgbtnok +msgid "OK" +msgstr "OK" + +#: g_language:msgbtncancel +msgid "Cancel" +msgstr "Отмена" + +#: g_language:msgbtnadd +msgid "Add" +msgstr "Добавить" + +#: g_language:msgbtnclose +msgid "Close" +msgstr "Закрыть" + +#: g_language:msgbtnaddclose +msgid "Add and Close" +msgstr "Добавить и закрыть" + +#: g_language:msgbtntestagain +msgid "Check" +msgstr "Проверить" + +#: g_language:msgbtnstart +msgid "Run" +msgstr "Начать" + +#: g_language:msgbtnpack +msgid "Pack" +msgstr "Упаковать" + +#: g_language:msgbtnsave +msgid "Save" +msgstr "Сохранить" + +#: g_language:msgbtnnosound +msgid "No sound" +msgstr "Нет звука" + +#: g_language:msgbtntextureadd +msgid "Add texture to the list" +msgstr "Добавить текстуру в список" + +#: g_language:msgbtntexturedelete +msgid "Delete texture from the list" +msgstr "Удалить текстуру из списка" + +#: g_language:msgbtntextureempty +msgid "Deselect texture" +msgstr "Снять выбор с текстуры" + +#: g_language:msgloadwad +msgid "Reading WAD" +msgstr "Чтение WAD" + +#: g_language:msgloadmap +msgid "Loading Map" +msgstr "Чтение карты" + +#: g_language:msgloadtextures +msgid "Reading Textures" +msgstr "Чтение текстур" + +#: g_language:msgloadpanels +msgid "Reading Panels" +msgstr "Чтение панелей" + +#: g_language:msgloaditems +msgid "Reading Items" +msgstr "Чтение предметов" + +#: g_language:msgloadmonsters +msgid "Reading Monsters" +msgstr "Чтение монстров" + +#: g_language:msgloadareas +msgid "Reading Areas" +msgstr "Чтение областей" + +#: g_language:msgloadtriggers +msgid "Reading Triggers" +msgstr "Чтение триггеров" + +#: g_language:msgtestareawall +msgid "Player collides with the wall and will be stuck." +msgstr "Если в этой области появится игрок, то он застрянет в стене и не сможет двигаться." + +#: g_language:msgtestareawallstr +msgid "Area #%d collides with Map (%d:%d)" +msgstr "Область #%d пересекается с картой (%d:%d)" + +#: g_language:msgtestspawns1 +msgid "There are several spawn points for First Player on the map" +msgstr "Несколько точек появления первого игрока" + +#: g_language:msgtestspawns2 +msgid "There are several spawn points for Second Player on the map" +msgstr "Несколько точек появления второго игрока" + +#: g_language:msgtestspawns +msgid "There are several spawn points on the map. Random one will be used." +msgstr "Несколько точек появления игрока, будет использована случайная." + +#: g_language:msgtestnodm +msgid "There are no DM spawn points on the map" +msgstr "На карте нет точек DM" + +#: g_language:msgtestnodmex +msgid "There are no DM spawn points on the map. Only \"Single Player\" mode available." +msgstr "На карте нет точек DM, поиграть получится только в режиме \"Single Player\"." + +#: g_language:msgtestmonsterwall +msgid "Monster collides with the wall and will be stuck." +msgstr "Монстр пересекается с картой. Он застрянет в стене и не сможет двигаться" + +#: g_language:msgtestmonsterwallstr +msgid "Monster #%d collides with a map (%d:%d)" +msgstr "Монстр #%d пересекается с картой (%d:%d)" + +#: g_language:msgoptnotextures +msgid "Texture list is empty" +msgstr "Список текстур пуст" + +#: g_language:msgoptdeletedtextures +msgid "Deleted Textures:" +msgstr "Удалённые текстуры:" + +#: g_language:msgopttotaltextures +msgid "Textures Total:" +msgstr "Всего текстур:" + +#: g_language:msgopttexdeleted +msgid "Textures Deleted:" +msgstr "Удалено текстур:" + +#: g_language:msgoptpanelsopt +msgid "Panels Optimized:" +msgstr "Оптимизировано панелей:" + +#: g_language:msgoptwalls +msgid "Walls Optimization..." +msgstr "Оптимизация стен..." + +#: g_language:msgoptfores +msgid "Foreground Optimization..." +msgstr "Оптимизация переднего плана..." + +#: g_language:msgoptbacks +msgid "Background Optimization..." +msgstr "Оптимизация фона..." + +#: g_language:msgoptstairs +msgid "Steps Optimization..." +msgstr "Оптимизация ступеней..." + +#: g_language:msgoptwater +msgid "Water Optimization..." +msgstr "Оптимизация воды..." + +#: g_language:msgoptacid1 +msgid "Acid 1 Optimization..." +msgstr "Оптимизация кислоты 1..." + +#: g_language:msgoptacid2 +msgid "Acid 2 Optimization..." +msgstr "Оптимизация кислоты 2..." + +#: g_language:msgoptlifts +msgid "Streams Optimization..." +msgstr "Оптимизация лифтов..." + +#: g_language:msgoptblockmon +msgid "Monster Boundaries Optimization..." +msgstr "Оптимизация блокираторов монстров.... " + +#: g_language:msgopttotalpanels +msgid "Panels Total:" +msgstr "Всего панелей:" + +#: g_language:msgoptpanelsafter +msgid "Panels after Optimization:" +msgstr "Панелей после оптимизации:" + +#: g_language:msgwadspecialmap +msgid "" +msgstr "" + +#: g_language:msgwadspecialtexs +msgid "" +msgstr "<СПЕЦТЕКСТУРЫ>" + +#: g_language:msgfilefilterall +msgid "Doom 2D: Forever Maps (*.dfz, *.dfzip, *.zip, *.wad)|*.dfz;*.dfzip;*.zip;*.wad|Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*" +msgstr "Карты Doom 2D: Forever (*.dfz, *.dfzip, *.zip, *.wad)|*.dfz;*.dfzip;*.zip;*.wad|Старые карты Doom 2D: Forever 0.30 (*.ini)|*.ini|Все файлы (*.*)|*.*" + +#: g_language:msgfilefilterwad +msgid "Doom 2D: Forever Maps (*.dfz)|*.dfz|Doom 2D: Forever Maps (*.dfzip)|*.dfzip|Doom 2D: Forever Maps (*.zip)|*.zip|Doom 2D: Forever Maps (*.wad)|*.wad|All Files (*.*)|*.*" +msgstr "Карты Doom 2D: Forever (*.dfz)|*.dfz|Карты Doom 2D: Forever (*.dfzip)|*.dfzip|Карты Doom 2D: Forever (*.zip)|*.zip|Карты Doom 2D: Forever (*.wad)|*.wad|Все файлы (*.*)|*.*" + +#: g_language:msgeditortitle +msgid "Doom 2D: Forever Map Editor" +msgstr "Редактор карт Doom 2D: Forever" + diff --git a/src/editor/Editor.lpr b/src/editor/Editor.lpr index 1246516..1ca2d20 100644 --- a/src/editor/Editor.lpr +++ b/src/editor/Editor.lpr @@ -55,8 +55,7 @@ uses Imaging, ImagingUtility, g_options in 'g_options.pas', - g_language in 'g_language.pas', - f_selectlang in 'f_selectlang.pas' {SelectLanguageForm}; + g_language in 'g_language.pas'; {$IFDEF WINDOWS} {$R *.res} @@ -182,6 +181,7 @@ uses LogFileName := DFPath + DirectorySeparator + 'Editor.log'; MapsDir := DocPath + DirectorySeparator + 'Maps'; WadsDir := BundlePath + DirectorySeparator + 'Contents' + DirectorySeparator + 'Resources' + DirectorySeparator + 'wads'; + LangDIr := BundlePath + DirectorySeparator + 'Contents' + DirectorySeparator + 'Resources' + DirectorySeparator + 'data' + DirectorySeparator + 'lang'; GameWad := BundlePath + DirectorySeparator + 'Contents' + DirectorySeparator + 'Resources' + DirectorySeparator + 'data' + DirectorySeparator + 'game.wad'; EditorWad := BundlePath + DirectorySeparator + 'Contents' + DirectorySeparator + 'Resources' + DirectorySeparator + 'data' + DirectorySeparator + 'editor.wad'; {$ELSE} @@ -195,6 +195,7 @@ uses LogFileName := EditorDir + DirectorySeparator + 'Editor.log'; MapsDir := EditorDir + DirectorySeparator + 'maps'; WadsDir := EditorDir + DirectorySeparator + 'wads'; + LangDir := EditorDir + DirectorySeparator + 'data' + DirectorySeparator + 'lang'; GameWad := EditorDir + DirectorySeparator + 'data' + DirectorySeparator + 'game.wad'; EditorWad := EditorDir + DirectorySeparator + 'data' + DirectorySeparator + 'editor.wad'; {$ENDIF} @@ -219,6 +220,7 @@ uses e_WriteLog(' LogFileName = ' + LogFileName, MSG_NOTIFY); e_WriteLog(' MapsDir = ' + MapsDir, MSG_NOTIFY); e_WriteLog(' WadsDir = ' + WadsDir, MSG_NOTIFY); + e_WriteLog(' LangDir = ' + LangDir, MSG_NOTIFY); e_WriteLog(' GameWad = ' + GameWad, MSG_NOTIFY); e_WriteLog(' EditorWad = ' + EditorWad, MSG_NOTIFY); end; @@ -253,7 +255,8 @@ begin Application.CreateForm(TSaveMiniMapForm, SaveMiniMapForm); Application.CreateForm(TPackMapForm, PackMapForm); Application.CreateForm(TChooseTypeForm, ChooseTypeForm); - Application.CreateForm(TSelectLanguageForm, SelectLanguageForm); + + g_Language_Set(gLanguage); CheckParamFiles; diff --git a/src/editor/f_addresource.pas b/src/editor/f_addresource.pas index f738384..103d9b0 100644 --- a/src/editor/f_addresource.pas +++ b/src/editor/f_addresource.pas @@ -80,15 +80,15 @@ begin // WAD карты: if OpenedMap <> '' then - cbWADList.Items.Add(_lc[I_WAD_SPECIAL_MAP]); + cbWADList.Items.Add(MsgWadSpecialMap); end; procedure TAddResourceForm.bOKClick(Sender: TObject); begin if FResourceName = '' then begin - Application.MessageBox(PChar(_lc[I_MSG_CHOOSE_RES]), - PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR); + Application.MessageBox(PChar(MsgMsgChooseRes), + PChar(MsgMsgError), MB_OK + MB_ICONERROR); Exit; end; @@ -107,7 +107,7 @@ procedure TAddResourceForm.cbWADListChange(Sender: TObject); i: Integer; FileName, Section, sn, rn: String; begin - if cbWADList.Text <> _lc[I_WAD_SPECIAL_MAP] then + if cbWADList.Text <> MsgWadSpecialMap then FileName := WadsDir + DirectorySeparator + cbWADList.Text (* Resource wad *) else g_ProcessResourceStr(OpenedMap, FileName, sn, rn); (* Map wad *) @@ -137,7 +137,7 @@ procedure TAddResourceForm.cbSectionsListChange(Sender: TObject); i: Integer; FileName, Section, SectionName, sn, rn: String; begin - if cbWADList.Text <> _lc[I_WAD_SPECIAL_MAP] then + if cbWADList.Text <> MsgWadSpecialMap then FileName := WadsDir + DirectorySeparator + cbWADList.Text (* Resource wad *) else g_ProcessResourceStr(OpenedMap, FileName, sn, rn); (* Map wad *) diff --git a/src/editor/f_addresource_sky.pas b/src/editor/f_addresource_sky.pas index e4a0f44..bb4fa10 100644 --- a/src/editor/f_addresource_sky.pas +++ b/src/editor/f_addresource_sky.pas @@ -148,7 +148,7 @@ begin g_ProcessResourceStr(FSetResource, FileName, SectionName, ResourceName); if FileName = '' then - FileName := _lc[I_WAD_SPECIAL_MAP]; + FileName := MsgWadSpecialMap; if SectionName = '' then SectionName := '..'; diff --git a/src/editor/f_addresource_sound.pas b/src/editor/f_addresource_sound.pas index 15ea34d..914f0be 100644 --- a/src/editor/f_addresource_sound.pas +++ b/src/editor/f_addresource_sound.pas @@ -182,7 +182,7 @@ begin if res <> FMOD_OK then begin Application.MessageBox(FMOD_ErrorString(res), - PChar(_lc[I_MSG_SOUND_ERROR]), + PChar(MsgMsgSoundError), MB_OK or MB_ICONHAND); Exit; end; @@ -299,7 +299,7 @@ begin g_ProcessResourceStr(FSetResource, FileName, SectionName, ResourceName); if FileName = '' then - FileName := _lc[I_WAD_SPECIAL_MAP]; + FileName := MsgWadSpecialMap; if SectionName = '' then SectionName := '..'; diff --git a/src/editor/f_addresource_texture.pas b/src/editor/f_addresource_texture.pas index cdd0621..927017e 100644 --- a/src/editor/f_addresource_texture.pas +++ b/src/editor/f_addresource_texture.pas @@ -189,7 +189,7 @@ begin Inherited; lStats.Caption := ''; - cbWADList.Items.Add(_lc[I_WAD_SPECIAL_TEXS]); + cbWADList.Items.Add(MsgWadSpecialTexs); eTextureName.Text := ''; iPreview.Canvas.FillRect(iPreview.Canvas.ClipRect); @@ -212,11 +212,11 @@ begin Exit; if FResourceName = '' then Exit; - if cbWADList.Text = _lc[I_WAD_SPECIAL_TEXS] then + if cbWADList.Text = MsgWadSpecialTexs then Exit; g_ProcessResourceStr(FFullResourceName, @wad, nil, nil); - if wad = _lc[I_WAD_SPECIAL_TEXS] then + if wad = MsgWadSpecialTexs then Exit; Anim := IsAnim(FFullResourceName); @@ -229,9 +229,9 @@ begin Exit; if Anim then - lStats.Caption := Format(_lc[I_CAP_ANIMATION], [Texture.Width, Texture.Height, NumFrames]) + lStats.Caption := Format(MsgCapAnimation, [Texture.Width, Texture.Height, NumFrames]) else - lStats.Caption := Format(_lc[I_CAP_TEXTURE], [Texture.Width, Texture.Height]); + lStats.Caption := Format(MsgCapTexture, [Texture.Width, Texture.Height]); iPreview.Canvas.FillRect(iPreview.Canvas.ClipRect); iPreview.Canvas.CopyRect(Texture.Canvas.ClipRect, Texture.Canvas, Texture.Canvas.ClipRect); @@ -275,7 +275,7 @@ end; procedure TAddTextureForm.cbWADListChange(Sender: TObject); begin - if cbWADList.Text = _lc[I_WAD_SPECIAL_TEXS] then + if cbWADList.Text = MsgWadSpecialTexs then begin cbSectionsList.Clear(); cbSectionsList.Items.Add('..'); @@ -287,7 +287,7 @@ end; procedure TAddTextureForm.cbSectionsListChange(Sender: TObject); begin - if cbWADList.Text = _lc[I_WAD_SPECIAL_TEXS] then + if cbWADList.Text = MsgWadSpecialTexs then begin lbResourcesList.Clear(); lbResourcesList.Items.Add(TEXTURE_NAME_WATER); diff --git a/src/editor/f_main.pas b/src/editor/f_main.pas index 790a646..86ec6b4 100644 --- a/src/editor/f_main.pas +++ b/src/editor/f_main.pas @@ -358,7 +358,7 @@ uses MAPREADER, f_selectmap, f_savemap, WADEDITOR, MAPDEF, g_map, f_saveminimap, f_addresource, CONFIG, f_packmap, f_addresource_sound, f_choosetype, - g_language, f_selectlang, ClipBrd, g_resources, g_options; + g_language, ClipBrd, g_resources, g_options; const UNDO_DELETE_PANEL = 1; @@ -767,7 +767,7 @@ begin Exit; with MainForm.vleObjectProperty do - with ItemProps[InsertRow(_lc[I_PROP_ID], IntToStr(SelectedObjects[_id].ID), True)] do + with ItemProps[InsertRow(MsgPropId, IntToStr(SelectedObjects[_id].ID), True)] do begin EditStyle := esSimple; ReadOnly := True; @@ -779,31 +779,31 @@ begin with MainForm.vleObjectProperty, gPanels[SelectedObjects[_id].ID] do begin - with ItemProps[InsertRow(_lc[I_PROP_X], IntToStr(X), True)] do + with ItemProps[InsertRow(MsgPropX, IntToStr(X), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_Y], IntToStr(Y), True)] do + with ItemProps[InsertRow(MsgPropY, IntToStr(Y), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_WIDTH], IntToStr(Width), True)] do + with ItemProps[InsertRow(MsgPropWidth, IntToStr(Width), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_HEIGHT], IntToStr(Height), True)] do + with ItemProps[InsertRow(MsgPropHeight, IntToStr(Height), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_PANEL_TYPE], GetPanelName(PanelType), True)] do + with ItemProps[InsertRow(MsgPropPanelType, GetPanelName(PanelType), True)] do begin EditStyle := esEllipsis; ReadOnly := True; @@ -811,7 +811,7 @@ begin if IsTexturedPanel(PanelType) then begin // Может быть текстура - with ItemProps[InsertRow(_lc[I_PROP_PANEL_TEX], TextureName, True)] do + with ItemProps[InsertRow(MsgPropPanelTex, TextureName, True)] do begin EditStyle := esEllipsis; ReadOnly := True; @@ -819,13 +819,13 @@ begin if TextureName <> '' then begin // Есть текстура - with ItemProps[InsertRow(_lc[I_PROP_PANEL_ALPHA], IntToStr(Alpha), True)] do + with ItemProps[InsertRow(MsgPropPanelAlpha, IntToStr(Alpha), True)] do begin EditStyle := esSimple; MaxLength := 3; end; - with ItemProps[InsertRow(_lc[I_PROP_PANEL_BLEND], BoolNames[Blending], True)] do + with ItemProps[InsertRow(MsgPropPanelBlend, BoolNames[Blending], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -840,25 +840,25 @@ begin with MainForm.vleObjectProperty, gItems[SelectedObjects[_id].ID] do begin - with ItemProps[InsertRow(_lc[I_PROP_X], IntToStr(X), True)] do + with ItemProps[InsertRow(MsgPropX, IntToStr(X), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_Y], IntToStr(Y), True)] do + with ItemProps[InsertRow(MsgPropY, IntToStr(Y), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_DM_ONLY], BoolNames[OnlyDM], True)] do + with ItemProps[InsertRow(MsgPropDmOnly, BoolNames[OnlyDM], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_ITEM_FALLS], BoolNames[Fall], True)] do + with ItemProps[InsertRow(MsgPropItemFalls, BoolNames[Fall], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -871,19 +871,19 @@ begin with MainForm.vleObjectProperty, gMonsters[SelectedObjects[_id].ID] do begin - with ItemProps[InsertRow(_lc[I_PROP_X], IntToStr(X), True)] do + with ItemProps[InsertRow(MsgPropX, IntToStr(X), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_Y], IntToStr(Y), True)] do + with ItemProps[InsertRow(MsgPropY, IntToStr(Y), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_DIRECTION], DirNames[Direction], True)] do + with ItemProps[InsertRow(MsgPropDirection, DirNames[Direction], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -896,19 +896,19 @@ begin with MainForm.vleObjectProperty, gAreas[SelectedObjects[_id].ID] do begin - with ItemProps[InsertRow(_lc[I_PROP_X], IntToStr(X), True)] do + with ItemProps[InsertRow(MsgPropX, IntToStr(X), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_Y], IntToStr(Y), True)] do + with ItemProps[InsertRow(MsgPropY, IntToStr(Y), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_DIRECTION], DirNames[Direction], True)] do + with ItemProps[InsertRow(MsgPropDirection, DirNames[Direction], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -921,55 +921,55 @@ begin with MainForm.vleObjectProperty, gTriggers[SelectedObjects[_id].ID] do begin - with ItemProps[InsertRow(_lc[I_PROP_TR_TYPE], GetTriggerName(TriggerType), True)] do + with ItemProps[InsertRow(MsgPropTrType, GetTriggerName(TriggerType), True)] do begin EditStyle := esSimple; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_X], IntToStr(X), True)] do + with ItemProps[InsertRow(MsgPropX, IntToStr(X), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_Y], IntToStr(Y), True)] do + with ItemProps[InsertRow(MsgPropY, IntToStr(Y), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_WIDTH], IntToStr(Width), True)] do + with ItemProps[InsertRow(MsgPropWidth, IntToStr(Width), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_HEIGHT], IntToStr(Height), True)] do + with ItemProps[InsertRow(MsgPropHeight, IntToStr(Height), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_ENABLED], BoolNames[Enabled], True)] do + with ItemProps[InsertRow(MsgPropTrEnabled, BoolNames[Enabled], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_TEXTURE_PANEL], IntToStr(TexturePanel), True)] do + with ItemProps[InsertRow(MsgPropTrTexturePanel, IntToStr(TexturePanel), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_ACTIVATION], ActivateToStr(ActivateType), True)] do + with ItemProps[InsertRow(MsgPropTrActivation, ActivateToStr(ActivateType), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_KEYS], KeyToStr(Key), True)] do + with ItemProps[InsertRow(MsgPropTrKeys, KeyToStr(Key), True)] do begin EditStyle := esEllipsis; ReadOnly := True; @@ -979,7 +979,7 @@ begin TRIGGER_EXIT: begin str := win2utf(Data.MapName); - with ItemProps[InsertRow(_lc[I_PROP_TR_NEXT_MAP], str, True)] do + with ItemProps[InsertRow(MsgPropTrNextMap, str, True)] do begin EditStyle := esEllipsis; ReadOnly := True; @@ -988,25 +988,25 @@ begin TRIGGER_TELEPORT: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_TELEPORT_TO], Format('(%d:%d)', [Data.TargetPoint.X, Data.TargetPoint.Y]), True)] do + with ItemProps[InsertRow(MsgPropTrTeleportTo, Format('(%d:%d)', [Data.TargetPoint.X, Data.TargetPoint.Y]), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_D2D], BoolNames[Data.d2d_teleport], True)] do + with ItemProps[InsertRow(MsgPropTrD2d, BoolNames[Data.d2d_teleport], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_TELEPORT_SILENT], BoolNames[Data.silent_teleport], True)] do + with ItemProps[InsertRow(MsgPropTrTeleportSilent, BoolNames[Data.silent_teleport], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_TELEPORT_DIR], DirNamesAdv[Data.TlpDir], True)] do + with ItemProps[InsertRow(MsgPropTrTeleportDir, DirNamesAdv[Data.TlpDir], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1016,19 +1016,19 @@ begin TRIGGER_OPENDOOR, TRIGGER_CLOSEDOOR, TRIGGER_DOOR, TRIGGER_DOOR5: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_DOOR_PANEL], IntToStr(Data.PanelID), True)] do + with ItemProps[InsertRow(MsgPropTrDoorPanel, IntToStr(Data.PanelID), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SILENT], BoolNames[Data.NoSound], True)] do + with ItemProps[InsertRow(MsgPropTrSilent, BoolNames[Data.NoSound], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_D2D], BoolNames[Data.d2d_doors], True)] do + with ItemProps[InsertRow(MsgPropTrD2d, BoolNames[Data.d2d_doors], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1037,19 +1037,19 @@ begin TRIGGER_CLOSETRAP, TRIGGER_TRAP: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_TRAP_PANEL], IntToStr(Data.PanelID), True)] do + with ItemProps[InsertRow(MsgPropTrTrapPanel, IntToStr(Data.PanelID), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SILENT], BoolNames[Data.NoSound], True)] do + with ItemProps[InsertRow(MsgPropTrSilent, BoolNames[Data.NoSound], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_D2D], BoolNames[Data.d2d_doors], True)] do + with ItemProps[InsertRow(MsgPropTrD2d, BoolNames[Data.d2d_doors], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1059,33 +1059,33 @@ begin TRIGGER_PRESS, TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_EX_AREA], + with ItemProps[InsertRow(MsgPropTrExArea, Format('(%d:%d %d:%d)', [Data.tX, Data.tY, Data.tWidth, Data.tHeight]), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EX_DELAY], IntToStr(Data.Wait), True)] do + with ItemProps[InsertRow(MsgPropTrExDelay, IntToStr(Data.Wait), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EX_COUNT], IntToStr(Data.Count), True)] do + with ItemProps[InsertRow(MsgPropTrExCount, IntToStr(Data.Count), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EX_MONSTER], IntToStr(Data.MonsterID-1), True)] do + with ItemProps[InsertRow(MsgPropTrExMonster, IntToStr(Data.MonsterID-1), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; if TriggerType = TRIGGER_PRESS then - with ItemProps[InsertRow(_lc[I_PROP_TR_EX_RANDOM], BoolNames[Data.ExtRandom], True)] do + with ItemProps[InsertRow(MsgPropTrExRandom, BoolNames[Data.ExtRandom], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1097,19 +1097,19 @@ begin TRIGGER_LIFTUP, TRIGGER_LIFTDOWN, TRIGGER_LIFT: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_LIFT_PANEL], IntToStr(Data.PanelID), True)] do + with ItemProps[InsertRow(MsgPropTrLiftPanel, IntToStr(Data.PanelID), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SILENT], BoolNames[Data.NoSound], True)] do + with ItemProps[InsertRow(MsgPropTrSilent, BoolNames[Data.NoSound], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_D2D], BoolNames[Data.d2d_doors], True)] do + with ItemProps[InsertRow(MsgPropTrD2d, BoolNames[Data.d2d_doors], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1118,13 +1118,13 @@ begin TRIGGER_TEXTURE: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_TEXTURE_ONCE], BoolNames[Data.ActivateOnce], True)] do + with ItemProps[InsertRow(MsgPropTrTextureOnce, BoolNames[Data.ActivateOnce], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_TEXTURE_ANIM_ONCE], BoolNames[Data.AnimOnce], True)] do + with ItemProps[InsertRow(MsgPropTrTextureAnimOnce, BoolNames[Data.AnimOnce], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1134,37 +1134,37 @@ begin TRIGGER_SOUND: begin str := win2utf(Data.SoundName); - with ItemProps[InsertRow(_lc[I_PROP_TR_SOUND_NAME], str, True)] do + with ItemProps[InsertRow(MsgPropTrSoundName, str, True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SOUND_VOLUME], IntToStr(Data.Volume), True)] do + with ItemProps[InsertRow(MsgPropTrSoundVolume, IntToStr(Data.Volume), True)] do begin EditStyle := esSimple; MaxLength := 3; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SOUND_PAN], IntToStr(Data.Pan), True)] do + with ItemProps[InsertRow(MsgPropTrSoundPan, IntToStr(Data.Pan), True)] do begin EditStyle := esSimple; MaxLength := 3; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SOUND_COUNT], IntToStr(Data.PlayCount), True)] do + with ItemProps[InsertRow(MsgPropTrSoundCount, IntToStr(Data.PlayCount), True)] do begin EditStyle := esSimple; MaxLength := 3; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SOUND_LOCAL], BoolNames[Data.Local], True)] do + with ItemProps[InsertRow(MsgPropTrSoundLocal, BoolNames[Data.Local], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SOUND_SWITCH], BoolNames[Data.SoundSwitch], True)] do + with ItemProps[InsertRow(MsgPropTrSoundSwitch, BoolNames[Data.SoundSwitch], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1173,70 +1173,70 @@ begin TRIGGER_SPAWNMONSTER: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_MONSTER_TYPE], MonsterToStr(Data.MonType), True)] do + with ItemProps[InsertRow(MsgPropTrMonsterType, MonsterToStr(Data.MonType), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SPAWN_TO], + with ItemProps[InsertRow(MsgPropTrSpawnTo, Format('(%d:%d)', [Data.MonPos.X, Data.MonPos.Y]), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_DIRECTION], DirNames[TDirection(Data.MonDir)], True)] do + with ItemProps[InsertRow(MsgPropDirection, DirNames[TDirection(Data.MonDir)], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_HEALTH], IntToStr(Data.MonHealth), True)] do + with ItemProps[InsertRow(MsgPropTrHealth, IntToStr(Data.MonHealth), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_MONSTER_ACTIVE], BoolNames[Data.MonActive], True)] do + with ItemProps[InsertRow(MsgPropTrMonsterActive, BoolNames[Data.MonActive], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_COUNT], IntToStr(Data.MonCount), True)] do + with ItemProps[InsertRow(MsgPropTrCount, IntToStr(Data.MonCount), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_FX_TYPE], EffectToStr(Data.MonEffect), True)] do + with ItemProps[InsertRow(MsgPropTrFxType, EffectToStr(Data.MonEffect), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SPAWN_MAX], IntToStr(Data.MonMax), True)] do + with ItemProps[InsertRow(MsgPropTrSpawnMax, IntToStr(Data.MonMax), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SPAWN_DELAY], IntToStr(Data.MonDelay), True)] do + with ItemProps[InsertRow(MsgPropTrSpawnDelay, IntToStr(Data.MonDelay), True)] do begin EditStyle := esSimple; MaxLength := 5; end; case Data.MonBehav of - 1: str := _lc[I_PROP_TR_MONSTER_BEHAVIOUR_1]; - 2: str := _lc[I_PROP_TR_MONSTER_BEHAVIOUR_2]; - 3: str := _lc[I_PROP_TR_MONSTER_BEHAVIOUR_3]; - 4: str := _lc[I_PROP_TR_MONSTER_BEHAVIOUR_4]; - 5: str := _lc[I_PROP_TR_MONSTER_BEHAVIOUR_5]; - else str := _lc[I_PROP_TR_MONSTER_BEHAVIOUR_0]; + 1: str := MsgPropTrMonsterBehaviour1; + 2: str := MsgPropTrMonsterBehaviour2; + 3: str := MsgPropTrMonsterBehaviour3; + 4: str := MsgPropTrMonsterBehaviour4; + 5: str := MsgPropTrMonsterBehaviour5; + else str := MsgPropTrMonsterBehaviour0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_MONSTER_BEHAVIOUR], str, True)] do + with ItemProps[InsertRow(MsgPropTrMonsterBehaviour, str, True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1245,50 +1245,50 @@ begin TRIGGER_SPAWNITEM: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_ITEM_TYPE], ItemToStr(Data.ItemType), True)] do + with ItemProps[InsertRow(MsgPropTrItemType, ItemToStr(Data.ItemType), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SPAWN_TO], + with ItemProps[InsertRow(MsgPropTrSpawnTo, Format('(%d:%d)', [Data.ItemPos.X, Data.ItemPos.Y]), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_DM_ONLY], BoolNames[Data.ItemOnlyDM], True)] do + with ItemProps[InsertRow(MsgPropDmOnly, BoolNames[Data.ItemOnlyDM], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_ITEM_FALLS], BoolNames[Data.ItemFalls], True)] do + with ItemProps[InsertRow(MsgPropItemFalls, BoolNames[Data.ItemFalls], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_COUNT], IntToStr(Data.ItemCount), True)] do + with ItemProps[InsertRow(MsgPropTrCount, IntToStr(Data.ItemCount), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_FX_TYPE], EffectToStr(Data.ItemEffect), True)] do + with ItemProps[InsertRow(MsgPropTrFxType, EffectToStr(Data.ItemEffect), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SPAWN_MAX], IntToStr(Data.ItemMax), True)] do + with ItemProps[InsertRow(MsgPropTrSpawnMax, IntToStr(Data.ItemMax), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SPAWN_DELAY], IntToStr(Data.ItemDelay), True)] do + with ItemProps[InsertRow(MsgPropTrSpawnDelay, IntToStr(Data.ItemDelay), True)] do begin EditStyle := esSimple; MaxLength := 5; @@ -1298,18 +1298,18 @@ begin TRIGGER_MUSIC: begin str := win2utf(Data.MusicName); - with ItemProps[InsertRow(_lc[I_PROP_TR_MUSIC_NAME], str, True)] do + with ItemProps[InsertRow(MsgPropTrMusicName, str, True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; if Data.MusicAction = 1 then - str := _lc[I_PROP_TR_MUSIC_ON] + str := MsgPropTrMusicOn else - str := _lc[I_PROP_TR_MUSIC_OFF]; + str := MsgPropTrMusicOff; - with ItemProps[InsertRow(_lc[I_PROP_TR_MUSIC_ACT], str, True)] do + with ItemProps[InsertRow(MsgPropTrMusicAct, str, True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1318,17 +1318,17 @@ begin TRIGGER_PUSH: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_PUSH_ANGLE], IntToStr(Data.PushAngle), True)] do + with ItemProps[InsertRow(MsgPropTrPushAngle, IntToStr(Data.PushAngle), True)] do begin EditStyle := esSimple; MaxLength := 4; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_PUSH_FORCE], IntToStr(Data.PushForce), True)] do + with ItemProps[InsertRow(MsgPropTrPushForce, IntToStr(Data.PushForce), True)] do begin EditStyle := esSimple; MaxLength := 4; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_PUSH_RESET], BoolNames[Data.ResetVel], True)] do + with ItemProps[InsertRow(MsgPropTrPushReset, BoolNames[Data.ResetVel], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1338,38 +1338,38 @@ begin TRIGGER_SCORE: begin case Data.ScoreAction of - 1: str := _lc[I_PROP_TR_SCORE_ACT_1]; - 2: str := _lc[I_PROP_TR_SCORE_ACT_2]; - 3: str := _lc[I_PROP_TR_SCORE_ACT_3]; - else str := _lc[I_PROP_TR_SCORE_ACT_0]; + 1: str := MsgPropTrScoreAct1; + 2: str := MsgPropTrScoreAct2; + 3: str := MsgPropTrScoreAct3; + else str := MsgPropTrScoreAct0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SCORE_ACT], str, True)] do + with ItemProps[InsertRow(MsgPropTrScoreAct, str, True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_COUNT], IntToStr(Data.ScoreCount), True)] do + with ItemProps[InsertRow(MsgPropTrCount, IntToStr(Data.ScoreCount), True)] do begin EditStyle := esSimple; MaxLength := 3; end; case Data.ScoreTeam of - 1: str := _lc[I_PROP_TR_SCORE_TEAM_1]; - 2: str := _lc[I_PROP_TR_SCORE_TEAM_2]; - 3: str := _lc[I_PROP_TR_SCORE_TEAM_3]; - else str := _lc[I_PROP_TR_SCORE_TEAM_0]; + 1: str := MsgPropTrScoreTeam1; + 2: str := MsgPropTrScoreTeam2; + 3: str := MsgPropTrScoreTeam3; + else str := MsgPropTrScoreTeam0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SCORE_TEAM], str, True)] do + with ItemProps[InsertRow(MsgPropTrScoreTeam, str, True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SCORE_CON], BoolNames[Data.ScoreCon], True)] do + with ItemProps[InsertRow(MsgPropTrScoreCon, BoolNames[Data.ScoreCon], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SCORE_MSG], BoolNames[Data.ScoreMsg], True)] do + with ItemProps[InsertRow(MsgPropTrScoreMsg, BoolNames[Data.ScoreMsg], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1379,34 +1379,34 @@ begin TRIGGER_MESSAGE: begin case Data.MessageKind of - 1: str := _lc[I_PROP_TR_MESSAGE_KIND_1]; - else str := _lc[I_PROP_TR_MESSAGE_KIND_0]; + 1: str := MsgPropTrMessageKind1; + else str := MsgPropTrMessageKind0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_MESSAGE_KIND], str, True)] do + with ItemProps[InsertRow(MsgPropTrMessageKind, str, True)] do begin EditStyle := esPickList; ReadOnly := True; end; case Data.MessageSendTo of - 1: str := _lc[I_PROP_TR_MESSAGE_TO_1]; - 2: str := _lc[I_PROP_TR_MESSAGE_TO_2]; - 3: str := _lc[I_PROP_TR_MESSAGE_TO_3]; - 4: str := _lc[I_PROP_TR_MESSAGE_TO_4]; - 5: str := _lc[I_PROP_TR_MESSAGE_TO_5]; - else str := _lc[I_PROP_TR_MESSAGE_TO_0]; + 1: str := MsgPropTrMessageTo1; + 2: str := MsgPropTrMessageTo2; + 3: str := MsgPropTrMessageTo3; + 4: str := MsgPropTrMessageTo4; + 5: str := MsgPropTrMessageTo5; + else str := MsgPropTrMessageTo0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_MESSAGE_TO], str, True)] do + with ItemProps[InsertRow(MsgPropTrMessageTo, str, True)] do begin EditStyle := esPickList; ReadOnly := True; end; str := win2utf(Data.MessageText); - with ItemProps[InsertRow(_lc[I_PROP_TR_MESSAGE_TEXT], str, True)] do + with ItemProps[InsertRow(MsgPropTrMessageText, str, True)] do begin EditStyle := esSimple; MaxLength := 100; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_MESSAGE_TIME], IntToStr(Data.MessageTime), True)] do + with ItemProps[InsertRow(MsgPropTrMessageTime, IntToStr(Data.MessageTime), True)] do begin EditStyle := esSimple; MaxLength := 5; @@ -1415,26 +1415,26 @@ begin TRIGGER_DAMAGE: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_DAMAGE_VALUE], IntToStr(Data.DamageValue), True)] do + with ItemProps[InsertRow(MsgPropTrDamageValue, IntToStr(Data.DamageValue), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_INTERVAL], IntToStr(Data.DamageInterval), True)] do + with ItemProps[InsertRow(MsgPropTrInterval, IntToStr(Data.DamageInterval), True)] do begin EditStyle := esSimple; MaxLength := 5; end; case Data.DamageKind of - 3: str := _lc[I_PROP_TR_DAMAGE_KIND_3]; - 4: str := _lc[I_PROP_TR_DAMAGE_KIND_4]; - 5: str := _lc[I_PROP_TR_DAMAGE_KIND_5]; - 6: str := _lc[I_PROP_TR_DAMAGE_KIND_6]; - 7: str := _lc[I_PROP_TR_DAMAGE_KIND_7]; - 8: str := _lc[I_PROP_TR_DAMAGE_KIND_8]; - else str := _lc[I_PROP_TR_DAMAGE_KIND_0]; + 3: str := MsgPropTrDamageKind3; + 4: str := MsgPropTrDamageKind4; + 5: str := MsgPropTrDamageKind5; + 6: str := MsgPropTrDamageKind6; + 7: str := MsgPropTrDamageKind7; + 8: str := MsgPropTrDamageKind8; + else str := MsgPropTrDamageKind0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_DAMAGE_KIND], str, True)] do + with ItemProps[InsertRow(MsgPropTrDamageKind, str, True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1443,22 +1443,22 @@ begin TRIGGER_HEALTH: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_HEALTH], IntToStr(Data.HealValue), True)] do + with ItemProps[InsertRow(MsgPropTrHealth, IntToStr(Data.HealValue), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_INTERVAL], IntToStr(Data.HealInterval), True)] do + with ItemProps[InsertRow(MsgPropTrInterval, IntToStr(Data.HealInterval), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_HEALTH_MAX], BoolNames[Data.HealMax], True)] do + with ItemProps[InsertRow(MsgPropTrHealthMax, BoolNames[Data.HealMax], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SILENT], BoolNames[Data.HealSilent], True)] do + with ItemProps[InsertRow(MsgPropTrSilent, BoolNames[Data.HealSilent], True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -1467,89 +1467,89 @@ begin TRIGGER_SHOT: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_TYPE], ShotToStr(Data.ShotType), True)] do + with ItemProps[InsertRow(MsgPropTrShotType, ShotToStr(Data.ShotType), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_SOUND], BoolNames[Data.ShotSound], True)] do + with ItemProps[InsertRow(MsgPropTrShotSound, BoolNames[Data.ShotSound], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_PANEL], IntToStr(Data.ShotPanelID), True)] do + with ItemProps[InsertRow(MsgPropTrShotPanel, IntToStr(Data.ShotPanelID), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; case Data.ShotTarget of - 1: str := _lc[I_PROP_TR_SHOT_TO_1]; - 2: str := _lc[I_PROP_TR_SHOT_TO_2]; - 3: str := _lc[I_PROP_TR_SHOT_TO_3]; - 4: str := _lc[I_PROP_TR_SHOT_TO_4]; - 5: str := _lc[I_PROP_TR_SHOT_TO_5]; - 6: str := _lc[I_PROP_TR_SHOT_TO_6]; - else str := _lc[I_PROP_TR_SHOT_TO_0]; + 1: str := MsgPropTrShotTo1; + 2: str := MsgPropTrShotTo2; + 3: str := MsgPropTrShotTo3; + 4: str := MsgPropTrShotTo4; + 5: str := MsgPropTrShotTo5; + 6: str := MsgPropTrShotTo6; + else str := MsgPropTrShotTo0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_TO], str, True)] do + with ItemProps[InsertRow(MsgPropTrShotTo, str, True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_SIGHT], IntToStr(Data.ShotIntSight), True)] do + with ItemProps[InsertRow(MsgPropTrShotSight, IntToStr(Data.ShotIntSight), True)] do begin EditStyle := esSimple; MaxLength := 3; end; case Data.ShotAim of - 1: str := _lc[I_PROP_TR_SHOT_AIM_1]; - 2: str := _lc[I_PROP_TR_SHOT_AIM_2]; - 3: str := _lc[I_PROP_TR_SHOT_AIM_3]; - else str := _lc[I_PROP_TR_SHOT_AIM_0]; + 1: str := MsgPropTrShotAim1; + 2: str := MsgPropTrShotAim2; + 3: str := MsgPropTrShotAim3; + else str := MsgPropTrShotAim0; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_AIM], str, True)] do + with ItemProps[InsertRow(MsgPropTrShotAim, str, True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SPAWN_TO], + with ItemProps[InsertRow(MsgPropTrSpawnTo, Format('(%d:%d)', [Data.ShotPos.X, Data.ShotPos.Y]), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_ANGLE], IntToStr(Data.ShotAngle), True)] do + with ItemProps[InsertRow(MsgPropTrShotAngle, IntToStr(Data.ShotAngle), True)] do begin EditStyle := esSimple; MaxLength := 4; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EX_DELAY], IntToStr(Data.ShotWait), True)] do + with ItemProps[InsertRow(MsgPropTrExDelay, IntToStr(Data.ShotWait), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_ACC], IntToStr(Data.ShotAccuracy), True)] do + with ItemProps[InsertRow(MsgPropTrShotAcc, IntToStr(Data.ShotAccuracy), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_AMMO], IntToStr(Data.ShotAmmo), True)] do + with ItemProps[InsertRow(MsgPropTrShotAmmo, IntToStr(Data.ShotAmmo), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_RELOAD], IntToStr(Data.ShotIntReload), True)] do + with ItemProps[InsertRow(MsgPropTrShotReload, IntToStr(Data.ShotIntReload), True)] do begin EditStyle := esSimple; MaxLength := 4; @@ -1558,17 +1558,17 @@ begin TRIGGER_EFFECT: begin - with ItemProps[InsertRow(_lc[I_PROP_TR_COUNT], IntToStr(Data.FXCount), True)] do + with ItemProps[InsertRow(MsgPropTrCount, IntToStr(Data.FXCount), True)] do begin EditStyle := esSimple; MaxLength := 3; end; if Data.FXType = 0 then - str := _lc[I_PROP_TR_EFFECT_PARTICLE] + str := MsgPropTrEffectParticle else - str := _lc[I_PROP_TR_EFFECT_ANIMATION]; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_TYPE], str, True)] do + str := MsgPropTrEffectAnimation; + with ItemProps[InsertRow(MsgPropTrEffectType, str, True)] do begin EditStyle := esEllipsis; ReadOnly := True; @@ -1578,17 +1578,17 @@ begin if Data.FXType = 0 then case Data.FXSubType of TRIGGER_EFFECT_SLIQUID: - str := _lc[I_PROP_TR_EFFECT_SLIQUID]; + str := MsgPropTrEffectSliquid; TRIGGER_EFFECT_LLIQUID: - str := _lc[I_PROP_TR_EFFECT_LLIQUID]; + str := MsgPropTrEffectLliquid; TRIGGER_EFFECT_DLIQUID: - str := _lc[I_PROP_TR_EFFECT_DLIQUID]; + str := MsgPropTrEffectDliquid; TRIGGER_EFFECT_BLOOD: - str := _lc[I_PROP_TR_EFFECT_BLOOD]; + str := MsgPropTrEffectBlood; TRIGGER_EFFECT_SPARK: - str := _lc[I_PROP_TR_EFFECT_SPARK]; + str := MsgPropTrEffectSpark; TRIGGER_EFFECT_BUBBLE: - str := _lc[I_PROP_TR_EFFECT_BUBBLE]; + str := MsgPropTrEffectBubble; end; if Data.FXType = 1 then begin @@ -1596,61 +1596,61 @@ begin Data.FXSubType := EFFECT_TELEPORT; str := EffectToStr(Data.FXSubType); end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_SUBTYPE], str, True)] do + with ItemProps[InsertRow(MsgPropTrEffectSubtype, str, True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_COLOR], IntToStr(Data.FXColorR or (Data.FXColorG shl 8) or (Data.FXColorB shl 16)), True)] do + with ItemProps[InsertRow(MsgPropTrEffectColor, IntToStr(Data.FXColorR or (Data.FXColorG shl 8) or (Data.FXColorB shl 16)), True)] do begin EditStyle := esEllipsis; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_CENTER], BoolNames[Data.FXPos = 0], True)] do + with ItemProps[InsertRow(MsgPropTrEffectCenter, BoolNames[Data.FXPos = 0], True)] do begin EditStyle := esPickList; ReadOnly := True; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EX_DELAY], IntToStr(Data.FXWait), True)] do + with ItemProps[InsertRow(MsgPropTrExDelay, IntToStr(Data.FXWait), True)] do begin EditStyle := esSimple; MaxLength := 5; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_VELX], IntToStr(Data.FXVelX), True)] do + with ItemProps[InsertRow(MsgPropTrEffectVelx, IntToStr(Data.FXVelX), True)] do begin EditStyle := esSimple; MaxLength := 4; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_VELY], IntToStr(Data.FXVelY), True)] do + with ItemProps[InsertRow(MsgPropTrEffectVely, IntToStr(Data.FXVelY), True)] do begin EditStyle := esSimple; MaxLength := 4; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_SPL], IntToStr(Data.FXSpreadL), True)] do + with ItemProps[InsertRow(MsgPropTrEffectSpl, IntToStr(Data.FXSpreadL), True)] do begin EditStyle := esSimple; MaxLength := 3; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_SPR], IntToStr(Data.FXSpreadR), True)] do + with ItemProps[InsertRow(MsgPropTrEffectSpr, IntToStr(Data.FXSpreadR), True)] do begin EditStyle := esSimple; MaxLength := 3; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_SPU], IntToStr(Data.FXSpreadU), True)] do + with ItemProps[InsertRow(MsgPropTrEffectSpu, IntToStr(Data.FXSpreadU), True)] do begin EditStyle := esSimple; MaxLength := 3; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_EFFECT_SPD], IntToStr(Data.FXSpreadD), True)] do + with ItemProps[InsertRow(MsgPropTrEffectSpd, IntToStr(Data.FXSpreadD), True)] do begin EditStyle := esSimple; MaxLength := 3; @@ -1858,7 +1858,7 @@ end; procedure ErrorMessageBox(str: String); begin - Application.MessageBox(PChar(str), PChar(_lc[I_MSG_ERROR]), + Application.MessageBox(PChar(str), PChar(MsgMsgError), MB_ICONINFORMATION or MB_OK or MB_DEFBUTTON1); end; @@ -1874,41 +1874,41 @@ begin with gPanels[SelectedObjects[_id].ID] do begin if TextureWidth <> 0 then - if StrToIntDef(MainForm.vleObjectProperty.Values[_lc[I_PROP_WIDTH]], 1) mod TextureWidth <> 0 then + if StrToIntDef(MainForm.vleObjectProperty.Values[MsgPropWidth], 1) mod TextureWidth <> 0 then begin - ErrorMessageBox(Format(_lc[I_MSG_WRONG_TEXWIDTH], + ErrorMessageBox(Format(MsgMsgWrongTexwidth, [TextureWidth])); Exit; end; if TextureHeight <> 0 then - if StrToIntDef(Trim(MainForm.vleObjectProperty.Values[_lc[I_PROP_HEIGHT]]), 1) mod TextureHeight <> 0 then + if StrToIntDef(Trim(MainForm.vleObjectProperty.Values[MsgPropHeight]), 1) mod TextureHeight <> 0 then begin - ErrorMessageBox(Format(_lc[I_MSG_WRONG_TEXHEIGHT], + ErrorMessageBox(Format(MsgMsgWrongTexheight, [TextureHeight])); Exit; end; if IsTexturedPanel(PanelType) and (TextureName <> '') then - if not (StrToIntDef(MainForm.vleObjectProperty.Values[_lc[I_PROP_PANEL_ALPHA]], -1) in [0..255]) then + if not (StrToIntDef(MainForm.vleObjectProperty.Values[MsgPropPanelAlpha], -1) in [0..255]) then begin - ErrorMessageBox(_lc[I_MSG_WRONG_ALPHA]); + ErrorMessageBox(MsgMsgWrongAlpha); Exit; end; end; if SelectedObjects[_id].ObjectType in [OBJECT_PANEL, OBJECT_TRIGGER] then - if (StrToIntDef(MainForm.vleObjectProperty.Values[_lc[I_PROP_WIDTH]], 0) <= 0) or - (StrToIntDef(MainForm.vleObjectProperty.Values[_lc[I_PROP_HEIGHT]], 0) <= 0) then + if (StrToIntDef(MainForm.vleObjectProperty.Values[MsgPropWidth], 0) <= 0) or + (StrToIntDef(MainForm.vleObjectProperty.Values[MsgPropHeight], 0) <= 0) then begin - ErrorMessageBox(_lc[I_MSG_WRONG_SIZE]); + ErrorMessageBox(MsgMsgWrongSize); Exit; end; - if (Trim(MainForm.vleObjectProperty.Values[_lc[I_PROP_X]]) = '') or - (Trim(MainForm.vleObjectProperty.Values[_lc[I_PROP_Y]]) = '') then + if (Trim(MainForm.vleObjectProperty.Values[MsgPropX]) = '') or + (Trim(MainForm.vleObjectProperty.Values[MsgPropY]) = '') then begin - ErrorMessageBox(_lc[I_MSG_WRONG_XY]); + ErrorMessageBox(MsgMsgWrongXy); Exit; end; @@ -1944,16 +1944,16 @@ begin SectionName := aSection; if aWAD = '' then - aWAD := _lc[I_WAD_SPECIAL_MAP]; + aWAD := MsgWadSpecialMap; - if aWAD = _lc[I_WAD_SPECIAL_MAP] then + if aWAD = MsgWadSpecialMap then begin // Файл карты g_ProcessResourceStr(OpenedMap, @fn, nil, nil); FileName := fn; ResourceName := ':'+SectionName+'\'+aTex; end else - if aWAD = _lc[I_WAD_SPECIAL_TEXS] then + if aWAD = MsgWadSpecialTexs then begin // Спец. текстуры FileName := ''; ResourceName := aTex; @@ -1971,7 +1971,7 @@ begin if ResourceName = MainForm.lbTextureList.Items[a] then begin if not silent then - ErrorMessageBox(Format(_lc[I_MSG_TEXTURE_ALREADY], + ErrorMessageBox(Format(MsgMsgTextureAlready, [ResourceName])); ok := False; end; @@ -1980,7 +1980,7 @@ begin if Length(ResourceName) > 64 then begin if not silent then - ErrorMessageBox(Format(_lc[I_MSG_RES_NAME_64], + ErrorMessageBox(Format(MsgMsgResName64, [ResourceName])); ok := False; end; @@ -1988,7 +1988,7 @@ begin if ok then begin a := -1; - if aWAD = _lc[I_WAD_SPECIAL_TEXS] then + if aWAD = MsgWadSpecialTexs then begin a := MainForm.lbTextureList.Items.Add(ResourceName); if not silent then @@ -2045,7 +2045,7 @@ var MapName: String; idx: Integer; begin - SelectMapForm.Caption := _lc[I_CAP_OPEN]; + SelectMapForm.Caption := MsgCapOpen; SelectMapForm.GetMaps(FileName); if (FileName = OpenedWAD) and @@ -2591,7 +2591,7 @@ begin OpenMap(fn, g_ExtractFilePathName(FPath)) else Application.MessageBox('', 'File not available anymore', MB_OK); -// if Application.MessageBox(PChar(_lc[I_MSG_DEL_RECENT_PROMT]), PChar(_lc[I_MSG_DEL_RECENT]), MB_ICONQUESTION or MB_YESNO) = idYes then +// if Application.MessageBox(PChar(MsgMsgDelRecentPromt), PChar(MsgMsgDelRecent), MB_ICONQUESTION or MB_YESNO) = idYes then // begin // RecentFiles.Delete(n); // RefreshRecentMenu(); @@ -2901,7 +2901,7 @@ begin tbShowMap.Down := ShowMap; tbGridOn.Down := DotEnable; pcObjects.ActivePageIndex := 0; - Application.Title := _lc[I_EDITOR_TITLE]; + Application.Title := MsgEditorTitle; Application.OnIdle := OnIdle; end; @@ -3028,7 +3028,7 @@ begin e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_TELEPORT], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintTeleport), gEditorFont); end; // Подсказка при выборе точки появления: @@ -3039,7 +3039,7 @@ begin 0, 0, 255); e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_SPAWN], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintSpawn), gEditorFont); end; // Подсказка при выборе панели двери: @@ -3047,7 +3047,7 @@ begin begin e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_PANEL_DOOR], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintPanelDoor), gEditorFont); end; // Подсказка при выборе панели с текстурой: @@ -3055,7 +3055,7 @@ begin begin e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+196, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+196, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_PANEL_TEXTURE], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintPanelTexture), gEditorFont); end; // Подсказка при выборе панели индикации выстрела: @@ -3063,7 +3063,7 @@ begin begin e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+316, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+316, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_PANEL_SHOT], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintPanelShot), gEditorFont); end; // Подсказка при выборе панели лифта: @@ -3071,7 +3071,7 @@ begin begin e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+180, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_PANEL_LIFT], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintPanelLift), gEditorFont); end; // Подсказка при выборе монстра: @@ -3079,7 +3079,7 @@ begin begin e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+120, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+120, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_MONSTER], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintMonster), gEditorFont); end; // Подсказка при выборе области воздействия: @@ -3087,7 +3087,7 @@ begin begin e_DrawFillQuad(MousePos.X, MousePos.Y, MousePos.X+204, MousePos.Y+18, 192, 192, 192, 127); e_DrawQuad(MousePos.X, MousePos.Y, MousePos.X+204, MousePos.Y+18, 255, 255, 255); - PrintBlack(MousePos.X+2, MousePos.Y+2, _glc[I_HINT_EXT_AREA], gEditorFont); + PrintBlack(MousePos.X+2, MousePos.Y+2, utf8to1251(MsgHintExtArea), gEditorFont); end; // Рисуем текстуры, если чертим панель: @@ -3119,9 +3119,9 @@ begin if MouseAction in [MOUSEACTION_DRAWPANEL, MOUSEACTION_DRAWTRIGGER] then begin // Чертим новый - PrintBlack(MousePos.X+2, MousePos.Y+2, Format(_glc[I_HINT_WIDTH], + PrintBlack(MousePos.X+2, MousePos.Y+2, Format(utf8to1251(MsgHintWidth), [Abs(MousePos.X-MouseLDownPos.X)]), gEditorFont); - PrintBlack(MousePos.X+2, MousePos.Y+16, Format(_glc[I_HINT_HEIGHT], + PrintBlack(MousePos.X+2, MousePos.Y+16, Format(utf8to1251(MsgHintHeight), [Abs(MousePos.Y-MouseLDownPos.Y)]), gEditorFont); end else // Растягиваем существующий @@ -3138,9 +3138,9 @@ begin Height := gTriggers[SelectedObjects[GetFirstSelected].ID].Height; end; - PrintBlack(MousePos.X+2, MousePos.Y+2, Format(_glc[I_HINT_WIDTH], [Width]), + PrintBlack(MousePos.X+2, MousePos.Y+2, Format(utf8to1251(MsgHintWidth), [Width]), gEditorFont); - PrintBlack(MousePos.X+2, MousePos.Y+16, Format(_glc[I_HINT_HEIGHT], [Height]), + PrintBlack(MousePos.X+2, MousePos.Y+16, Format(utf8to1251(MsgHintHeight), [Height]), gEditorFont); end; end; @@ -3427,7 +3427,7 @@ begin case pcObjects.ActivePageIndex of 1: if lbItemList.ItemIndex = -1 then - ErrorMessageBox(_lc[I_MSG_CHOOSE_ITEM]) + ErrorMessageBox(MsgMsgChooseItem) else begin item.ItemType := lbItemList.ItemIndex + ITEM_MEDKIT_SMALL; @@ -3448,7 +3448,7 @@ begin end; 2: if lbMonsterList.ItemIndex = -1 then - ErrorMessageBox(_lc[I_MSG_CHOOSE_MONSTER]) + ErrorMessageBox(MsgMsgChooseMonster) else begin monster.MonsterType := lbMonsterList.ItemIndex + MONSTER_DEMON; @@ -3469,7 +3469,7 @@ begin end; 3: if lbAreasList.ItemIndex = -1 then - ErrorMessageBox(_lc[I_MSG_CHOOSE_AREA]) + ErrorMessageBox(MsgMsgChooseArea) else if (lbAreasList.ItemIndex + 1) <> AREA_DOMFLAG then begin @@ -3830,7 +3830,7 @@ begin // Фон или передний план без текстуры - ошибка: if (lbPanelType.ItemIndex in [1, 2]) and (lbTextureList.ItemIndex = -1) then - ErrorMessageBox(_lc[I_MSG_CHOOSE_TEXTURE]) + ErrorMessageBox(MsgMsgChooseTexture) else // Назначаем параметры панели: begin case lbPanelType.ItemIndex of @@ -4205,7 +4205,7 @@ begin if SelectedObjectCount() = 0 then StatusBar.Panels[0].Text := '' else - StatusBar.Panels[0].Text := Format(_lc[I_CAP_STAT_SELECTED], [SelectedObjectCount()]); + StatusBar.Panels[0].Text := Format(MsgCapStatSelected, [SelectedObjectCount()]); end; procedure TMainForm.RenderPanelMouseMove(Sender: TObject; @@ -4384,8 +4384,8 @@ end; procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin - CanClose := Application.MessageBox(PChar(_lc[I_MSG_EXIT_PROMT]), - PChar(_lc[I_MSG_EXIT]), + CanClose := Application.MessageBox(PChar(MsgMsgExitPromt), + PChar(MsgMsgExit), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = idYes; end; @@ -4425,6 +4425,7 @@ begin config.WriteInt('Editor', 'DotStep', DotStep); config.WriteStr('Editor', 'LastOpenDir', OpenDialog.InitialDir); config.WriteStr('Editor', 'LastSaveDir', SaveDialog.InitialDir); + config.WriteStr('Editor', 'Language', gLanguage); config.WriteBool('Editor', 'EdgeShow', drEdge[3] < 255); config.WriteInt('Editor', 'EdgeColor', gColorEdge); config.WriteInt('Editor', 'EdgeAlpha', gAlphaEdge); @@ -4477,7 +4478,7 @@ begin if MapTestProcess.Running = false then begin if MapTestProcess.ExitCode <> 0 then - Application.MessageBox(PChar(_lc[I_MSG_EXEC_ERROR]), 'FIXME', MB_OK or MB_ICONERROR); + Application.MessageBox(PChar(MsgMsgExecError), 'FIXME', MB_OK or MB_ICONERROR); SysUtils.DeleteFile(MapTestFile); MapTestFile := ''; FreeAndNil(MapTestProcess); @@ -4739,7 +4740,7 @@ begin SelectFlag := SELECTFLAG_NONE; Exit; end; - vleObjectProperty.FindRow(_lc[I_PROP_TR_TEXTURE_PANEL], i); + vleObjectProperty.FindRow(MsgPropTrTexturePanel, i); if i > 0 then SelectFlag := SELECTFLAG_TEXTURE; end; @@ -4755,33 +4756,33 @@ begin i := -1; // Выбор области воздействия, в зависимости от типа триггера - vleObjectProperty.FindRow(_lc[I_PROP_TR_EX_AREA], i); + vleObjectProperty.FindRow(MsgPropTrExArea, i); if i > 0 then begin DrawPressRect := True; Exit; end; - vleObjectProperty.FindRow(_lc[I_PROP_TR_DOOR_PANEL], i); + vleObjectProperty.FindRow(MsgPropTrDoorPanel, i); if i <= 0 then - vleObjectProperty.FindRow(_lc[I_PROP_TR_TRAP_PANEL], i); + vleObjectProperty.FindRow(MsgPropTrTrapPanel, i); if i > 0 then begin SelectFlag := SELECTFLAG_DOOR; Exit; end; - vleObjectProperty.FindRow(_lc[I_PROP_TR_LIFT_PANEL], i); + vleObjectProperty.FindRow(MsgPropTrLiftPanel, i); if i > 0 then begin SelectFlag := SELECTFLAG_LIFT; Exit; end; - vleObjectProperty.FindRow(_lc[I_PROP_TR_TELEPORT_TO], i); + vleObjectProperty.FindRow(MsgPropTrTeleportTo, i); if i > 0 then begin SelectFlag := SELECTFLAG_TELEPORT; Exit; end; - vleObjectProperty.FindRow(_lc[I_PROP_TR_SPAWN_TO], i); + vleObjectProperty.FindRow(MsgPropTrSpawnTo, i); if i > 0 then begin SelectFlag := SELECTFLAG_SPAWNPOINT; @@ -4789,11 +4790,11 @@ begin end; // Выбор основного параметра, в зависимости от типа триггера - vleObjectProperty.FindRow(_lc[I_PROP_TR_NEXT_MAP], i); + vleObjectProperty.FindRow(MsgPropTrNextMap, i); if i > 0 then begin g_ProcessResourceStr(OpenedMap, @FileName, nil, nil); - SelectMapForm.Caption := _lc[I_CAP_SELECT]; + SelectMapForm.Caption := MsgCapSelect; SelectMapForm.GetMaps(FileName); if SelectMapForm.ShowModal() = mrOK then @@ -4803,9 +4804,9 @@ begin end; Exit; end; - vleObjectProperty.FindRow(_lc[I_PROP_TR_SOUND_NAME], i); + vleObjectProperty.FindRow(MsgPropTrSoundName, i); if i <= 0 then - vleObjectProperty.FindRow(_lc[I_PROP_TR_MUSIC_NAME], i); + vleObjectProperty.FindRow(MsgPropTrMusicName, i); if i > 0 then begin AddSoundForm.OKFunction := nil; @@ -4819,9 +4820,9 @@ begin end; Exit; end; - vleObjectProperty.FindRow(_lc[I_PROP_TR_PUSH_ANGLE], i); + vleObjectProperty.FindRow(MsgPropTrPushAngle, i); if i <= 0 then - vleObjectProperty.FindRow(_lc[I_PROP_TR_MESSAGE_TEXT], i); + vleObjectProperty.FindRow(MsgPropTrMessageText, i); if i > 0 then begin vleObjectProperty.Row := i; @@ -4868,8 +4869,8 @@ begin lTextureHeight.Caption := IntToStr(TextureHeight); end else begin - lTextureWidth.Caption := _lc[I_NOT_ACCESSIBLE]; - lTextureHeight.Caption := _lc[I_NOT_ACCESSIBLE]; + lTextureWidth.Caption := MsgNotAccessible; + lTextureHeight.Caption := MsgNotAccessible; end; end else @@ -4922,8 +4923,8 @@ begin if OpenedMap = '' then Exit; - if Application.MessageBox(PChar(_lc[I_MSG_REOPEN_MAP_PROMT]), - PChar(_lc[I_MENU_FILE_REOPEN]), MB_ICONQUESTION or MB_YESNO) <> idYes then + if Application.MessageBox(PChar(MsgMsgReopenMapPromt), + PChar(MsgMenuFileReopen), MB_ICONQUESTION or MB_YESNO) <> idYes then Exit; g_ProcessResourceStr(OpenedMap, @FileName, nil, @Resource); @@ -4935,106 +4936,106 @@ procedure TMainForm.vleObjectPropertyGetPickList(Sender: TObject; begin if vleObjectProperty.ItemProps[KeyName].EditStyle = esPickList then begin - if KeyName = _lc[I_PROP_DIRECTION] then + if KeyName = MsgPropDirection then begin Values.Add(DirNames[D_LEFT]); Values.Add(DirNames[D_RIGHT]); end - else if KeyName = _lc[I_PROP_TR_TELEPORT_DIR] then + else if KeyName = MsgPropTrTeleportDir then begin Values.Add(DirNamesAdv[0]); Values.Add(DirNamesAdv[1]); Values.Add(DirNamesAdv[2]); Values.Add(DirNamesAdv[3]); end - else if KeyName = _lc[I_PROP_TR_MUSIC_ACT] then + else if KeyName = MsgPropTrMusicAct then begin - Values.Add(_lc[I_PROP_TR_MUSIC_ON]); - Values.Add(_lc[I_PROP_TR_MUSIC_OFF]); + Values.Add(MsgPropTrMusicOn); + Values.Add(MsgPropTrMusicOff); end - else if KeyName = _lc[I_PROP_TR_MONSTER_BEHAVIOUR] then + else if KeyName = MsgPropTrMonsterBehaviour then begin - Values.Add(_lc[I_PROP_TR_MONSTER_BEHAVIOUR_0]); - Values.Add(_lc[I_PROP_TR_MONSTER_BEHAVIOUR_1]); - Values.Add(_lc[I_PROP_TR_MONSTER_BEHAVIOUR_2]); - Values.Add(_lc[I_PROP_TR_MONSTER_BEHAVIOUR_3]); - Values.Add(_lc[I_PROP_TR_MONSTER_BEHAVIOUR_4]); - Values.Add(_lc[I_PROP_TR_MONSTER_BEHAVIOUR_5]); + Values.Add(MsgPropTrMonsterBehaviour0); + Values.Add(MsgPropTrMonsterBehaviour1); + Values.Add(MsgPropTrMonsterBehaviour2); + Values.Add(MsgPropTrMonsterBehaviour3); + Values.Add(MsgPropTrMonsterBehaviour4); + Values.Add(MsgPropTrMonsterBehaviour5); end - else if KeyName = _lc[I_PROP_TR_SCORE_ACT] then + else if KeyName = MsgPropTrScoreAct then begin - Values.Add(_lc[I_PROP_TR_SCORE_ACT_0]); - Values.Add(_lc[I_PROP_TR_SCORE_ACT_1]); - Values.Add(_lc[I_PROP_TR_SCORE_ACT_2]); - Values.Add(_lc[I_PROP_TR_SCORE_ACT_3]); + Values.Add(MsgPropTrScoreAct0); + Values.Add(MsgPropTrScoreAct1); + Values.Add(MsgPropTrScoreAct2); + Values.Add(MsgPropTrScoreAct3); end - else if KeyName = _lc[I_PROP_TR_SCORE_TEAM] then + else if KeyName = MsgPropTrScoreTeam then begin - Values.Add(_lc[I_PROP_TR_SCORE_TEAM_0]); - Values.Add(_lc[I_PROP_TR_SCORE_TEAM_1]); - Values.Add(_lc[I_PROP_TR_SCORE_TEAM_2]); - Values.Add(_lc[I_PROP_TR_SCORE_TEAM_3]); + Values.Add(MsgPropTrScoreTeam0); + Values.Add(MsgPropTrScoreTeam1); + Values.Add(MsgPropTrScoreTeam2); + Values.Add(MsgPropTrScoreTeam3); end - else if KeyName = _lc[I_PROP_TR_MESSAGE_KIND] then + else if KeyName = MsgPropTrMessageKind then begin - Values.Add(_lc[I_PROP_TR_MESSAGE_KIND_0]); - Values.Add(_lc[I_PROP_TR_MESSAGE_KIND_1]); + Values.Add(MsgPropTrMessageKind0); + Values.Add(MsgPropTrMessageKind1); end - else if KeyName = _lc[I_PROP_TR_MESSAGE_TO] then + else if KeyName = MsgPropTrMessageTo then begin - Values.Add(_lc[I_PROP_TR_MESSAGE_TO_0]); - Values.Add(_lc[I_PROP_TR_MESSAGE_TO_1]); - Values.Add(_lc[I_PROP_TR_MESSAGE_TO_2]); - Values.Add(_lc[I_PROP_TR_MESSAGE_TO_3]); - Values.Add(_lc[I_PROP_TR_MESSAGE_TO_4]); - Values.Add(_lc[I_PROP_TR_MESSAGE_TO_5]); + Values.Add(MsgPropTrMessageTo0); + Values.Add(MsgPropTrMessageTo1); + Values.Add(MsgPropTrMessageTo2); + Values.Add(MsgPropTrMessageTo3); + Values.Add(MsgPropTrMessageTo4); + Values.Add(MsgPropTrMessageTo5); end - else if KeyName = _lc[I_PROP_TR_SHOT_TO] then + else if KeyName = MsgPropTrShotTo then begin - Values.Add(_lc[I_PROP_TR_SHOT_TO_0]); - Values.Add(_lc[I_PROP_TR_SHOT_TO_1]); - Values.Add(_lc[I_PROP_TR_SHOT_TO_2]); - Values.Add(_lc[I_PROP_TR_SHOT_TO_3]); - Values.Add(_lc[I_PROP_TR_SHOT_TO_4]); - Values.Add(_lc[I_PROP_TR_SHOT_TO_5]); - Values.Add(_lc[I_PROP_TR_SHOT_TO_6]); + Values.Add(MsgPropTrShotTo0); + Values.Add(MsgPropTrShotTo1); + Values.Add(MsgPropTrShotTo2); + Values.Add(MsgPropTrShotTo3); + Values.Add(MsgPropTrShotTo4); + Values.Add(MsgPropTrShotTo5); + Values.Add(MsgPropTrShotTo6); end - else if KeyName = _lc[I_PROP_TR_SHOT_AIM] then + else if KeyName = MsgPropTrShotAim then begin - Values.Add(_lc[I_PROP_TR_SHOT_AIM_0]); - Values.Add(_lc[I_PROP_TR_SHOT_AIM_1]); - Values.Add(_lc[I_PROP_TR_SHOT_AIM_2]); - Values.Add(_lc[I_PROP_TR_SHOT_AIM_3]); + Values.Add(MsgPropTrShotAim0); + Values.Add(MsgPropTrShotAim1); + Values.Add(MsgPropTrShotAim2); + Values.Add(MsgPropTrShotAim3); end - else if KeyName = _lc[I_PROP_TR_DAMAGE_KIND] then + else if KeyName = MsgPropTrDamageKind then begin - Values.Add(_lc[I_PROP_TR_DAMAGE_KIND_0]); - Values.Add(_lc[I_PROP_TR_DAMAGE_KIND_3]); - Values.Add(_lc[I_PROP_TR_DAMAGE_KIND_4]); - Values.Add(_lc[I_PROP_TR_DAMAGE_KIND_5]); - Values.Add(_lc[I_PROP_TR_DAMAGE_KIND_6]); - Values.Add(_lc[I_PROP_TR_DAMAGE_KIND_7]); - Values.Add(_lc[I_PROP_TR_DAMAGE_KIND_8]); + Values.Add(MsgPropTrDamageKind0); + Values.Add(MsgPropTrDamageKind3); + Values.Add(MsgPropTrDamageKind4); + Values.Add(MsgPropTrDamageKind5); + Values.Add(MsgPropTrDamageKind6); + Values.Add(MsgPropTrDamageKind7); + Values.Add(MsgPropTrDamageKind8); end - else if (KeyName = _lc[I_PROP_PANEL_BLEND]) or - (KeyName = _lc[I_PROP_DM_ONLY]) or - (KeyName = _lc[I_PROP_ITEM_FALLS]) or - (KeyName = _lc[I_PROP_TR_ENABLED]) or - (KeyName = _lc[I_PROP_TR_D2D]) or - (KeyName = _lc[I_PROP_TR_SILENT]) or - (KeyName = _lc[I_PROP_TR_TELEPORT_SILENT]) or - (KeyName = _lc[I_PROP_TR_EX_RANDOM]) or - (KeyName = _lc[I_PROP_TR_TEXTURE_ONCE]) or - (KeyName = _lc[I_PROP_TR_TEXTURE_ANIM_ONCE]) or - (KeyName = _lc[I_PROP_TR_SOUND_LOCAL]) or - (KeyName = _lc[I_PROP_TR_SOUND_SWITCH]) or - (KeyName = _lc[I_PROP_TR_MONSTER_ACTIVE]) or - (KeyName = _lc[I_PROP_TR_PUSH_RESET]) or - (KeyName = _lc[I_PROP_TR_SCORE_CON]) or - (KeyName = _lc[I_PROP_TR_SCORE_MSG]) or - (KeyName = _lc[I_PROP_TR_HEALTH_MAX]) or - (KeyName = _lc[I_PROP_TR_SHOT_SOUND]) or - (KeyName = _lc[I_PROP_TR_EFFECT_CENTER]) then + else if (KeyName = MsgPropPanelBlend) or + (KeyName = MsgPropDmOnly) or + (KeyName = MsgPropItemFalls) or + (KeyName = MsgPropTrEnabled) or + (KeyName = MsgPropTrD2d) or + (KeyName = MsgPropTrSilent) or + (KeyName = MsgPropTrTeleportSilent) or + (KeyName = MsgPropTrExRandom) or + (KeyName = MsgPropTrTextureOnce) or + (KeyName = MsgPropTrTextureAnimOnce) or + (KeyName = MsgPropTrSoundLocal) or + (KeyName = MsgPropTrSoundSwitch) or + (KeyName = MsgPropTrMonsterActive) or + (KeyName = MsgPropTrPushReset) or + (KeyName = MsgPropTrScoreCon) or + (KeyName = MsgPropTrScoreMsg) or + (KeyName = MsgPropTrHealthMax) or + (KeyName = MsgPropTrShotSound) or + (KeyName = MsgPropTrEffectCenter) then begin Values.Add(BoolNames[True]); Values.Add(BoolNames[False]); @@ -5076,12 +5077,12 @@ begin begin with gPanels[SelectedObjects[_id].ID] do begin - X := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_X]])); - Y := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_Y]])); - Width := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_WIDTH]])); - Height := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_HEIGHT]])); + X := StrToInt(Trim(vleObjectProperty.Values[MsgPropX])); + Y := StrToInt(Trim(vleObjectProperty.Values[MsgPropY])); + Width := StrToInt(Trim(vleObjectProperty.Values[MsgPropWidth])); + Height := StrToInt(Trim(vleObjectProperty.Values[MsgPropHeight])); - PanelType := GetPanelType(vleObjectProperty.Values[_lc[I_PROP_PANEL_TYPE]]); + PanelType := GetPanelType(vleObjectProperty.Values[MsgPropPanelType]); // Сброс ссылки на триггеры смены текстуры: if not WordBool(PanelType and (PANEL_WALL or PANEL_FORE or PANEL_BACK)) then @@ -5117,8 +5118,8 @@ begin begin // Может быть текстура if TextureName <> '' then begin // Была текстура - Alpha := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_PANEL_ALPHA]])); - Blending := NameToBool(vleObjectProperty.Values[_lc[I_PROP_PANEL_BLEND]]); + Alpha := StrToInt(Trim(vleObjectProperty.Values[MsgPropPanelAlpha])); + Blending := NameToBool(vleObjectProperty.Values[MsgPropPanelBlend]); end else // Не было begin @@ -5127,7 +5128,7 @@ begin end; // Новая текстура: - TextureName := vleObjectProperty.Values[_lc[I_PROP_PANEL_TEX]]; + TextureName := vleObjectProperty.Values[MsgPropPanelTex]; if TextureName <> '' then begin // Есть текстура @@ -5142,14 +5143,14 @@ begin if TextureWidth <> 0 then if gPanels[SelectedObjects[_id].ID].Width mod TextureWidth <> 0 then begin - ErrorMessageBox(Format(_lc[I_MSG_WRONG_TEXWIDTH], + ErrorMessageBox(Format(MsgMsgWrongTexwidth, [TextureWidth])); Res := False; end; if Res and (TextureHeight <> 0) then if gPanels[SelectedObjects[_id].ID].Height mod TextureHeight <> 0 then begin - ErrorMessageBox(Format(_lc[I_MSG_WRONG_TEXHEIGHT], + ErrorMessageBox(Format(MsgMsgWrongTexheight, [TextureHeight])); Res := False; end; @@ -5209,10 +5210,10 @@ begin begin with gItems[SelectedObjects[_id].ID] do begin - X := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_X]])); - Y := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_Y]])); - OnlyDM := NameToBool(vleObjectProperty.Values[_lc[I_PROP_DM_ONLY]]); - Fall := NameToBool(vleObjectProperty.Values[_lc[I_PROP_ITEM_FALLS]]); + X := StrToInt(Trim(vleObjectProperty.Values[MsgPropX])); + Y := StrToInt(Trim(vleObjectProperty.Values[MsgPropY])); + OnlyDM := NameToBool(vleObjectProperty.Values[MsgPropDmOnly]); + Fall := NameToBool(vleObjectProperty.Values[MsgPropItemFalls]); end; end; @@ -5220,9 +5221,9 @@ begin begin with gMonsters[SelectedObjects[_id].ID] do begin - X := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_X]])); - Y := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_Y]])); - Direction := NameToDir(vleObjectProperty.Values[_lc[I_PROP_DIRECTION]]); + X := StrToInt(Trim(vleObjectProperty.Values[MsgPropX])); + Y := StrToInt(Trim(vleObjectProperty.Values[MsgPropY])); + Direction := NameToDir(vleObjectProperty.Values[MsgPropDirection]); end; end; @@ -5230,9 +5231,9 @@ begin begin with gAreas[SelectedObjects[_id].ID] do begin - X := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_X]])); - Y := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_Y]])); - Direction := NameToDir(vleObjectProperty.Values[_lc[I_PROP_DIRECTION]]); + X := StrToInt(Trim(vleObjectProperty.Values[MsgPropX])); + Y := StrToInt(Trim(vleObjectProperty.Values[MsgPropY])); + Direction := NameToDir(vleObjectProperty.Values[MsgPropDirection]); end; end; @@ -5240,18 +5241,18 @@ begin begin with gTriggers[SelectedObjects[_id].ID] do begin - X := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_X]])); - Y := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_Y]])); - Width := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_WIDTH]])); - Height := StrToInt(Trim(vleObjectProperty.Values[_lc[I_PROP_HEIGHT]])); - Enabled := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_ENABLED]]); - ActivateType := StrToActivate(vleObjectProperty.Values[_lc[I_PROP_TR_ACTIVATION]]); - Key := StrToKey(vleObjectProperty.Values[_lc[I_PROP_TR_KEYS]]); + X := StrToInt(Trim(vleObjectProperty.Values[MsgPropX])); + Y := StrToInt(Trim(vleObjectProperty.Values[MsgPropY])); + Width := StrToInt(Trim(vleObjectProperty.Values[MsgPropWidth])); + Height := StrToInt(Trim(vleObjectProperty.Values[MsgPropHeight])); + Enabled := NameToBool(vleObjectProperty.Values[MsgPropTrEnabled]); + ActivateType := StrToActivate(vleObjectProperty.Values[MsgPropTrActivation]); + Key := StrToKey(vleObjectProperty.Values[MsgPropTrKeys]); case TriggerType of TRIGGER_EXIT: begin - s := utf2win(vleObjectProperty.Values[_lc[I_PROP_TR_NEXT_MAP]]); + s := utf2win(vleObjectProperty.Values[MsgPropTrNextMap]); FillByte(Data.MapName[0], 16, 0); if s <> '' then Move(s[1], Data.MapName[0], Min(Length(s), 16)); @@ -5259,97 +5260,97 @@ begin TRIGGER_TEXTURE: begin - Data.ActivateOnce := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_TEXTURE_ONCE]]); - Data.AnimOnce := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_TEXTURE_ANIM_ONCE]]); + Data.ActivateOnce := NameToBool(vleObjectProperty.Values[MsgPropTrTextureOnce]); + Data.AnimOnce := NameToBool(vleObjectProperty.Values[MsgPropTrTextureAnimOnce]); end; TRIGGER_PRESS, TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF: begin - Data.Wait := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EX_DELAY]], 0), 65535); - Data.Count := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EX_COUNT]], 0), 65535); + Data.Wait := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrExDelay], 0), 65535); + Data.Count := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrExCount], 0), 65535); if Data.Count < 1 then Data.Count := 1; if TriggerType = TRIGGER_PRESS then - Data.ExtRandom := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_EX_RANDOM]]); + Data.ExtRandom := NameToBool(vleObjectProperty.Values[MsgPropTrExRandom]); end; TRIGGER_OPENDOOR, TRIGGER_CLOSEDOOR, TRIGGER_DOOR, TRIGGER_DOOR5, TRIGGER_CLOSETRAP, TRIGGER_TRAP, TRIGGER_LIFTUP, TRIGGER_LIFTDOWN, TRIGGER_LIFT: begin - Data.NoSound := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_SILENT]]); - Data.d2d_doors := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_D2D]]); + Data.NoSound := NameToBool(vleObjectProperty.Values[MsgPropTrSilent]); + Data.d2d_doors := NameToBool(vleObjectProperty.Values[MsgPropTrD2d]); end; TRIGGER_TELEPORT: begin - Data.d2d_teleport := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_D2D]]); - Data.silent_teleport := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_TELEPORT_SILENT]]); - Data.TlpDir := NameToDirAdv(vleObjectProperty.Values[_lc[I_PROP_TR_TELEPORT_DIR]]); + Data.d2d_teleport := NameToBool(vleObjectProperty.Values[MsgPropTrD2d]); + Data.silent_teleport := NameToBool(vleObjectProperty.Values[MsgPropTrTeleportSilent]); + Data.TlpDir := NameToDirAdv(vleObjectProperty.Values[MsgPropTrTeleportDir]); end; TRIGGER_SOUND: begin - s := utf2win(vleObjectProperty.Values[_lc[I_PROP_TR_SOUND_NAME]]); + s := utf2win(vleObjectProperty.Values[MsgPropTrSoundName]); FillByte(Data.SoundName[0], 64, 0); if s <> '' then Move(s[1], Data.SoundName[0], Min(Length(s), 64)); - Data.Volume := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SOUND_VOLUME]], 0), 255); - Data.Pan := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SOUND_PAN]], 0), 255); - Data.PlayCount := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SOUND_COUNT]], 0), 255); - Data.Local := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_SOUND_LOCAL]]); - Data.SoundSwitch := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_SOUND_SWITCH]]); + Data.Volume := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrSoundVolume], 0), 255); + Data.Pan := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrSoundPan], 0), 255); + Data.PlayCount := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrSoundCount], 0), 255); + Data.Local := NameToBool(vleObjectProperty.Values[MsgPropTrSoundLocal]); + Data.SoundSwitch := NameToBool(vleObjectProperty.Values[MsgPropTrSoundSwitch]); end; TRIGGER_SPAWNMONSTER: begin - Data.MonType := StrToMonster(vleObjectProperty.Values[_lc[I_PROP_TR_MONSTER_TYPE]]); - Data.MonDir := Byte(NameToDir(vleObjectProperty.Values[_lc[I_PROP_DIRECTION]])); - Data.MonHealth := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_HEALTH]], 0), 1000000); + Data.MonType := StrToMonster(vleObjectProperty.Values[MsgPropTrMonsterType]); + Data.MonDir := Byte(NameToDir(vleObjectProperty.Values[MsgPropDirection])); + Data.MonHealth := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrHealth], 0), 1000000); if Data.MonHealth < 0 then Data.MonHealth := 0; - Data.MonActive := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_MONSTER_ACTIVE]]); - Data.MonCount := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_COUNT]], 0), 64); + Data.MonActive := NameToBool(vleObjectProperty.Values[MsgPropTrMonsterActive]); + Data.MonCount := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrCount], 0), 64); if Data.MonCount < 1 then Data.MonCount := 1; - Data.MonEffect := StrToEffect(vleObjectProperty.Values[_lc[I_PROP_TR_FX_TYPE]]); - Data.MonMax := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SPAWN_MAX]], 0), 65535); - Data.MonDelay := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SPAWN_DELAY]], 0), 65535); + Data.MonEffect := StrToEffect(vleObjectProperty.Values[MsgPropTrFxType]); + Data.MonMax := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrSpawnMax], 0), 65535); + Data.MonDelay := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrSpawnDelay], 0), 65535); Data.MonBehav := 0; - if vleObjectProperty.Values[_lc[I_PROP_TR_MONSTER_BEHAVIOUR]] = _lc[I_PROP_TR_MONSTER_BEHAVIOUR_1] then + if vleObjectProperty.Values[MsgPropTrMonsterBehaviour] = MsgPropTrMonsterBehaviour1 then Data.MonBehav := 1; - if vleObjectProperty.Values[_lc[I_PROP_TR_MONSTER_BEHAVIOUR]] = _lc[I_PROP_TR_MONSTER_BEHAVIOUR_2] then + if vleObjectProperty.Values[MsgPropTrMonsterBehaviour] = MsgPropTrMonsterBehaviour2 then Data.MonBehav := 2; - if vleObjectProperty.Values[_lc[I_PROP_TR_MONSTER_BEHAVIOUR]] = _lc[I_PROP_TR_MONSTER_BEHAVIOUR_3] then + if vleObjectProperty.Values[MsgPropTrMonsterBehaviour] = MsgPropTrMonsterBehaviour3 then Data.MonBehav := 3; - if vleObjectProperty.Values[_lc[I_PROP_TR_MONSTER_BEHAVIOUR]] = _lc[I_PROP_TR_MONSTER_BEHAVIOUR_4] then + if vleObjectProperty.Values[MsgPropTrMonsterBehaviour] = MsgPropTrMonsterBehaviour4 then Data.MonBehav := 4; - if vleObjectProperty.Values[_lc[I_PROP_TR_MONSTER_BEHAVIOUR]] = _lc[I_PROP_TR_MONSTER_BEHAVIOUR_5] then + if vleObjectProperty.Values[MsgPropTrMonsterBehaviour] = MsgPropTrMonsterBehaviour5 then Data.MonBehav := 5; end; TRIGGER_SPAWNITEM: begin - Data.ItemType := StrToItem(vleObjectProperty.Values[_lc[I_PROP_TR_ITEM_TYPE]]); - Data.ItemOnlyDM := NameToBool(vleObjectProperty.Values[_lc[I_PROP_DM_ONLY]]); - Data.ItemFalls := NameToBool(vleObjectProperty.Values[_lc[I_PROP_ITEM_FALLS]]); - Data.ItemCount := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_COUNT]], 0), 64); + Data.ItemType := StrToItem(vleObjectProperty.Values[MsgPropTrItemType]); + Data.ItemOnlyDM := NameToBool(vleObjectProperty.Values[MsgPropDmOnly]); + Data.ItemFalls := NameToBool(vleObjectProperty.Values[MsgPropItemFalls]); + Data.ItemCount := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrCount], 0), 64); if Data.ItemCount < 1 then Data.ItemCount := 1; - Data.ItemEffect := StrToEffect(vleObjectProperty.Values[_lc[I_PROP_TR_FX_TYPE]]); - Data.ItemMax := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SPAWN_MAX]], 0), 65535); - Data.ItemDelay := Min(StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SPAWN_DELAY]], 0), 65535); + Data.ItemEffect := StrToEffect(vleObjectProperty.Values[MsgPropTrFxType]); + Data.ItemMax := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrSpawnMax], 0), 65535); + Data.ItemDelay := Min(StrToIntDef(vleObjectProperty.Values[MsgPropTrSpawnDelay], 0), 65535); end; TRIGGER_MUSIC: begin - s := utf2win(vleObjectProperty.Values[_lc[I_PROP_TR_MUSIC_NAME]]); + s := utf2win(vleObjectProperty.Values[MsgPropTrMusicName]); FillByte(Data.MusicName[0], 64, 0); if s <> '' then Move(s[1], Data.MusicName[0], Min(Length(s), 64)); - if vleObjectProperty.Values[_lc[I_PROP_TR_MUSIC_ACT]] = _lc[I_PROP_TR_MUSIC_ON] then + if vleObjectProperty.Values[MsgPropTrMusicAct] = MsgPropTrMusicOn then Data.MusicAction := 1 else Data.MusicAction := 0; @@ -5358,79 +5359,79 @@ begin TRIGGER_PUSH: begin Data.PushAngle := Min( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_PUSH_ANGLE]], 0), 360); + StrToIntDef(vleObjectProperty.Values[MsgPropTrPushAngle], 0), 360); Data.PushForce := Min( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_PUSH_FORCE]], 0), 255); - Data.ResetVel := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_PUSH_RESET]]); + StrToIntDef(vleObjectProperty.Values[MsgPropTrPushForce], 0), 255); + Data.ResetVel := NameToBool(vleObjectProperty.Values[MsgPropTrPushReset]); end; TRIGGER_SCORE: begin Data.ScoreAction := 0; - if vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_ACT]] = _lc[I_PROP_TR_SCORE_ACT_1] then + if vleObjectProperty.Values[MsgPropTrScoreAct] = MsgPropTrScoreAct1 then Data.ScoreAction := 1 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_ACT]] = _lc[I_PROP_TR_SCORE_ACT_2] then + else if vleObjectProperty.Values[MsgPropTrScoreAct] = MsgPropTrScoreAct2 then Data.ScoreAction := 2 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_ACT]] = _lc[I_PROP_TR_SCORE_ACT_3] then + else if vleObjectProperty.Values[MsgPropTrScoreAct] = MsgPropTrScoreAct3 then Data.ScoreAction := 3; Data.ScoreCount := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_COUNT]], 0), 0), 255); + StrToIntDef(vleObjectProperty.Values[MsgPropTrCount], 0), 0), 255); Data.ScoreTeam := 0; - if vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_TEAM]] = _lc[I_PROP_TR_SCORE_TEAM_1] then + if vleObjectProperty.Values[MsgPropTrScoreTeam] = MsgPropTrScoreTeam1 then Data.ScoreTeam := 1 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_TEAM]] = _lc[I_PROP_TR_SCORE_TEAM_2] then + else if vleObjectProperty.Values[MsgPropTrScoreTeam] = MsgPropTrScoreTeam2 then Data.ScoreTeam := 2 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_TEAM]] = _lc[I_PROP_TR_SCORE_TEAM_3] then + else if vleObjectProperty.Values[MsgPropTrScoreTeam] = MsgPropTrScoreTeam3 then Data.ScoreTeam := 3; - Data.ScoreCon := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_CON]]); - Data.ScoreMsg := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_SCORE_MSG]]); + Data.ScoreCon := NameToBool(vleObjectProperty.Values[MsgPropTrScoreCon]); + Data.ScoreMsg := NameToBool(vleObjectProperty.Values[MsgPropTrScoreMsg]); end; TRIGGER_MESSAGE: begin Data.MessageKind := 0; - if vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_KIND]] = _lc[I_PROP_TR_MESSAGE_KIND_1] then + if vleObjectProperty.Values[MsgPropTrMessageKind] = MsgPropTrMessageKind1 then Data.MessageKind := 1; Data.MessageSendTo := 0; - if vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_TO]] = _lc[I_PROP_TR_MESSAGE_TO_1] then + if vleObjectProperty.Values[MsgPropTrMessageTo] = MsgPropTrMessageTo1 then Data.MessageSendTo := 1 - else if vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_TO]] = _lc[I_PROP_TR_MESSAGE_TO_2] then + else if vleObjectProperty.Values[MsgPropTrMessageTo] = MsgPropTrMessageTo2 then Data.MessageSendTo := 2 - else if vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_TO]] = _lc[I_PROP_TR_MESSAGE_TO_3] then + else if vleObjectProperty.Values[MsgPropTrMessageTo] = MsgPropTrMessageTo3 then Data.MessageSendTo := 3 - else if vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_TO]] = _lc[I_PROP_TR_MESSAGE_TO_4] then + else if vleObjectProperty.Values[MsgPropTrMessageTo] = MsgPropTrMessageTo4 then Data.MessageSendTo := 4 - else if vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_TO]] = _lc[I_PROP_TR_MESSAGE_TO_5] then + else if vleObjectProperty.Values[MsgPropTrMessageTo] = MsgPropTrMessageTo5 then Data.MessageSendTo := 5; - s := utf2win(vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_TEXT]]); + s := utf2win(vleObjectProperty.Values[MsgPropTrMessageText]); FillByte(Data.MessageText[0], 100, 0); if s <> '' then Move(s[1], Data.MessageText[0], Min(Length(s), 100)); Data.MessageTime := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_MESSAGE_TIME]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrMessageTime], 0), 0), 65535); end; TRIGGER_DAMAGE: begin Data.DamageValue := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_DAMAGE_VALUE]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrDamageValue], 0), 0), 65535); Data.DamageInterval := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_INTERVAL]], 0), 0), 65535); - s := vleObjectProperty.Values[_lc[I_PROP_TR_DAMAGE_KIND]]; - if s = _lc[I_PROP_TR_DAMAGE_KIND_3] then + StrToIntDef(vleObjectProperty.Values[MsgPropTrInterval], 0), 0), 65535); + s := vleObjectProperty.Values[MsgPropTrDamageKind]; + if s = MsgPropTrDamageKind3 then Data.DamageKind := 3 - else if s = _lc[I_PROP_TR_DAMAGE_KIND_4] then + else if s = MsgPropTrDamageKind4 then Data.DamageKind := 4 - else if s = _lc[I_PROP_TR_DAMAGE_KIND_5] then + else if s = MsgPropTrDamageKind5 then Data.DamageKind := 5 - else if s = _lc[I_PROP_TR_DAMAGE_KIND_6] then + else if s = MsgPropTrDamageKind6 then Data.DamageKind := 6 - else if s = _lc[I_PROP_TR_DAMAGE_KIND_7] then + else if s = MsgPropTrDamageKind7 then Data.DamageKind := 7 - else if s = _lc[I_PROP_TR_DAMAGE_KIND_8] then + else if s = MsgPropTrDamageKind8 then Data.DamageKind := 8 else Data.DamageKind := 0; @@ -5439,99 +5440,99 @@ begin TRIGGER_HEALTH: begin Data.HealValue := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_HEALTH]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrHealth], 0), 0), 65535); Data.HealInterval := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_INTERVAL]], 0), 0), 65535); - Data.HealMax := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_HEALTH_MAX]]); - Data.HealSilent := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_SILENT]]); + StrToIntDef(vleObjectProperty.Values[MsgPropTrInterval], 0), 0), 65535); + Data.HealMax := NameToBool(vleObjectProperty.Values[MsgPropTrHealthMax]); + Data.HealSilent := NameToBool(vleObjectProperty.Values[MsgPropTrSilent]); end; TRIGGER_SHOT: begin - Data.ShotType := StrToShot(vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_TYPE]]); - Data.ShotSound := NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_SOUND]]); + Data.ShotType := StrToShot(vleObjectProperty.Values[MsgPropTrShotType]); + Data.ShotSound := NameToBool(vleObjectProperty.Values[MsgPropTrShotSound]); Data.ShotTarget := 0; - if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_TO]] = _lc[I_PROP_TR_SHOT_TO_1] then + if vleObjectProperty.Values[MsgPropTrShotTo] = MsgPropTrShotTo1 then Data.ShotTarget := 1 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_TO]] = _lc[I_PROP_TR_SHOT_TO_2] then + else if vleObjectProperty.Values[MsgPropTrShotTo] = MsgPropTrShotTo2 then Data.ShotTarget := 2 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_TO]] = _lc[I_PROP_TR_SHOT_TO_3] then + else if vleObjectProperty.Values[MsgPropTrShotTo] = MsgPropTrShotTo3 then Data.ShotTarget := 3 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_TO]] = _lc[I_PROP_TR_SHOT_TO_4] then + else if vleObjectProperty.Values[MsgPropTrShotTo] = MsgPropTrShotTo4 then Data.ShotTarget := 4 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_TO]] = _lc[I_PROP_TR_SHOT_TO_5] then + else if vleObjectProperty.Values[MsgPropTrShotTo] = MsgPropTrShotTo5 then Data.ShotTarget := 5 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_TO]] = _lc[I_PROP_TR_SHOT_TO_6] then + else if vleObjectProperty.Values[MsgPropTrShotTo] = MsgPropTrShotTo6 then Data.ShotTarget := 6; Data.ShotIntSight := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_SIGHT]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrShotSight], 0), 0), 65535); Data.ShotAim := 0; - if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_AIM]] = _lc[I_PROP_TR_SHOT_AIM_1] then + if vleObjectProperty.Values[MsgPropTrShotAim] = MsgPropTrShotAim1 then Data.ShotAim := 1 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_AIM]] = _lc[I_PROP_TR_SHOT_AIM_2] then + else if vleObjectProperty.Values[MsgPropTrShotAim] = MsgPropTrShotAim2 then Data.ShotAim := 2 - else if vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_AIM]] = _lc[I_PROP_TR_SHOT_AIM_3] then + else if vleObjectProperty.Values[MsgPropTrShotAim] = MsgPropTrShotAim3 then Data.ShotAim := 3; Data.ShotAngle := Min( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_ANGLE]], 0), 360); + StrToIntDef(vleObjectProperty.Values[MsgPropTrShotAngle], 0), 360); Data.ShotWait := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EX_DELAY]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrExDelay], 0), 0), 65535); Data.ShotAccuracy := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_ACC]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrShotAcc], 0), 0), 65535); Data.ShotAmmo := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_AMMO]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrShotAmmo], 0), 0), 65535); Data.ShotIntReload := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_SHOT_RELOAD]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrShotReload], 0), 0), 65535); end; TRIGGER_EFFECT: begin Data.FXCount := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_COUNT]], 0), 0), 255); - if vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_TYPE]] = _lc[I_PROP_TR_EFFECT_PARTICLE] then + StrToIntDef(vleObjectProperty.Values[MsgPropTrCount], 0), 0), 255); + if vleObjectProperty.Values[MsgPropTrEffectType] = MsgPropTrEffectParticle then begin Data.FXType := TRIGGER_EFFECT_PARTICLE; Data.FXSubType := TRIGGER_EFFECT_SLIQUID; - if vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SUBTYPE]] = _lc[I_PROP_TR_EFFECT_SLIQUID] then + if vleObjectProperty.Values[MsgPropTrEffectSubtype] = MsgPropTrEffectSliquid then Data.FXSubType := TRIGGER_EFFECT_SLIQUID - else if vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SUBTYPE]] = _lc[I_PROP_TR_EFFECT_LLIQUID] then + else if vleObjectProperty.Values[MsgPropTrEffectSubtype] = MsgPropTrEffectLliquid then Data.FXSubType := TRIGGER_EFFECT_LLIQUID - else if vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SUBTYPE]] = _lc[I_PROP_TR_EFFECT_DLIQUID] then + else if vleObjectProperty.Values[MsgPropTrEffectSubtype] = MsgPropTrEffectDliquid then Data.FXSubType := TRIGGER_EFFECT_DLIQUID - else if vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SUBTYPE]] = _lc[I_PROP_TR_EFFECT_BLOOD] then + else if vleObjectProperty.Values[MsgPropTrEffectSubtype] = MsgPropTrEffectBlood then Data.FXSubType := TRIGGER_EFFECT_BLOOD - else if vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SUBTYPE]] = _lc[I_PROP_TR_EFFECT_SPARK] then + else if vleObjectProperty.Values[MsgPropTrEffectSubtype] = MsgPropTrEffectSpark then Data.FXSubType := TRIGGER_EFFECT_SPARK - else if vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SUBTYPE]] = _lc[I_PROP_TR_EFFECT_BUBBLE] then + else if vleObjectProperty.Values[MsgPropTrEffectSubtype] = MsgPropTrEffectBubble then Data.FXSubType := TRIGGER_EFFECT_BUBBLE; end else begin Data.FXType := TRIGGER_EFFECT_ANIMATION; - Data.FXSubType := StrToEffect(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SUBTYPE]]); + Data.FXSubType := StrToEffect(vleObjectProperty.Values[MsgPropTrEffectSubtype]); end; a := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_COLOR]], 0), 0), $FFFFFF); + StrToIntDef(vleObjectProperty.Values[MsgPropTrEffectColor], 0), 0), $FFFFFF); Data.FXColorR := a and $FF; Data.FXColorG := (a shr 8) and $FF; Data.FXColorB := (a shr 16) and $FF; - if NameToBool(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_CENTER]]) then + if NameToBool(vleObjectProperty.Values[MsgPropTrEffectCenter]) then Data.FXPos := 0 else Data.FXPos := 1; Data.FXWait := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EX_DELAY]], 0), 0), 65535); + StrToIntDef(vleObjectProperty.Values[MsgPropTrExDelay], 0), 0), 65535); Data.FXVelX := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_VELX]], 0), -128), 127); + StrToIntDef(vleObjectProperty.Values[MsgPropTrEffectVelx], 0), -128), 127); Data.FXVelY := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_VELY]], 0), -128), 127); + StrToIntDef(vleObjectProperty.Values[MsgPropTrEffectVely], 0), -128), 127); Data.FXSpreadL := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SPL]], 0), 0), 255); + StrToIntDef(vleObjectProperty.Values[MsgPropTrEffectSpl], 0), 0), 255); Data.FXSpreadR := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SPR]], 0), 0), 255); + StrToIntDef(vleObjectProperty.Values[MsgPropTrEffectSpr], 0), 0), 255); Data.FXSpreadU := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SPU]], 0), 0), 255); + StrToIntDef(vleObjectProperty.Values[MsgPropTrEffectSpu], 0), 0), 255); Data.FXSpreadD := Min(Max( - StrToIntDef(vleObjectProperty.Values[_lc[I_PROP_TR_EFFECT_SPD]], 0), 0), 255); + StrToIntDef(vleObjectProperty.Values[MsgPropTrEffectSpd], 0), 0), 255); end; end; end; @@ -5552,9 +5553,9 @@ begin if i = -1 then Exit; - if Application.MessageBox(PChar(Format(_lc[I_MSG_DEL_TEXTURE_PROMT], + if Application.MessageBox(PChar(Format(MsgMsgDelTexturePromt, [SelectedTexture()])), - PChar(_lc[I_MSG_DEL_TEXTURE]), + PChar(MsgMsgDelTexture), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) <> idYes then Exit; @@ -5564,7 +5565,7 @@ begin if (gPanels[a].PanelType <> 0) and (gPanels[a].TextureName = SelectedTexture()) then begin - ErrorMessageBox(_lc[I_MSG_DEL_TEXTURE_CANT]); + ErrorMessageBox(MsgMsgDelTextureCant); Exit; end; @@ -5578,7 +5579,7 @@ end; procedure TMainForm.aNewMapExecute(Sender: TObject); begin - if Application.MessageBox(PChar(_lc[I_MSG_CLEAR_MAP_PROMT]), PChar(_lc[I_MSG_CLEAR_MAP]), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = mrYes then + if Application.MessageBox(PChar(MsgMsgClearMapPromt), PChar(MsgMsgClearMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = mrYes then FullClear(); end; @@ -6048,11 +6049,11 @@ var begin Key := vleObjectProperty.Keys[vleObjectProperty.Row]; - if Key = _lc[I_PROP_PANEL_TYPE] then + if Key = MsgPropPanelType then begin with ChooseTypeForm, vleObjectProperty do begin // Выбор типа панели: - Caption := _lc[I_PROP_PANEL_TYPE]; + Caption := MsgPropPanelType; lbTypeSelect.Items.Clear(); for b := 0 to High(PANELNAMES) do @@ -6070,33 +6071,33 @@ begin end; end end - else if Key = _lc[I_PROP_TR_TELEPORT_TO] then + else if Key = MsgPropTrTeleportTo then SelectFlag := SELECTFLAG_TELEPORT - else if Key = _lc[I_PROP_TR_SPAWN_TO] then + else if Key = MsgPropTrSpawnTo then SelectFlag := SELECTFLAG_SPAWNPOINT - else if (Key = _lc[I_PROP_TR_DOOR_PANEL]) or - (Key = _lc[I_PROP_TR_TRAP_PANEL]) then + else if (Key = MsgPropTrDoorPanel) or + (Key = MsgPropTrTrapPanel) then SelectFlag := SELECTFLAG_DOOR - else if Key = _lc[I_PROP_TR_TEXTURE_PANEL] then + else if Key = MsgPropTrTexturePanel then begin DrawPressRect := False; SelectFlag := SELECTFLAG_TEXTURE; end - else if Key = _lc[I_PROP_TR_SHOT_PANEL] then + else if Key = MsgPropTrShotPanel then SelectFlag := SELECTFLAG_SHOTPANEL - else if Key = _lc[I_PROP_TR_LIFT_PANEL] then + else if Key = MsgPropTrLiftPanel then SelectFlag := SELECTFLAG_LIFT - else if key = _lc[I_PROP_TR_EX_MONSTER] then + else if key = MsgPropTrExMonster then SelectFlag := SELECTFLAG_MONSTER - else if Key = _lc[I_PROP_TR_EX_AREA] then + else if Key = MsgPropTrExArea then begin SelectFlag := SELECTFLAG_NONE; DrawPressRect := True; end - else if Key = _lc[I_PROP_TR_NEXT_MAP] then + else if Key = MsgPropTrNextMap then begin // Выбор следующей карты: g_ProcessResourceStr(OpenedMap, @FileName, nil, nil); - SelectMapForm.Caption := _lc[I_CAP_SELECT]; + SelectMapForm.Caption := MsgCapSelect; SelectMapForm.GetMaps(FileName); if SelectMapForm.ShowModal() = mrOK then @@ -6105,8 +6106,8 @@ begin vleObjectPropertyApply(Sender); end; end - else if (Key = _lc[I_PROP_TR_SOUND_NAME]) or - (Key = _lc[I_PROP_TR_MUSIC_NAME]) then + else if (Key = MsgPropTrSoundName) or + (Key = MsgPropTrMusicName) then begin // Выбор файла звука/музыки: AddSoundForm.OKFunction := nil; AddSoundForm.lbResourcesList.MultiSelect := False; @@ -6118,7 +6119,7 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_ACTIVATION] then + else if Key = MsgPropTrActivation then with ActivationTypeForm, vleObjectProperty do begin // Выбор типов активации: cbPlayerCollide.Checked := Pos('PC', Values[Key]) > 0; @@ -6148,7 +6149,7 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_KEYS] then + else if Key = MsgPropTrKeys then with KeysForm, vleObjectProperty do begin // Выбор необходимых ключей: cbRedKey.Checked := Pos('RK', Values[Key]) > 0; @@ -6175,10 +6176,10 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_FX_TYPE] then + else if Key = MsgPropTrFxType then with ChooseTypeForm, vleObjectProperty do begin // Выбор типа эффекта: - Caption := _lc[I_CAP_FX_TYPE]; + Caption := MsgCapFxType; lbTypeSelect.Items.Clear(); for b := EFFECT_NONE to EFFECT_FIRE do @@ -6193,10 +6194,10 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_MONSTER_TYPE] then + else if Key = MsgPropTrMonsterType then with ChooseTypeForm, vleObjectProperty do begin // Выбор типа монстра: - Caption := _lc[I_CAP_MONSTER_TYPE]; + Caption := MsgCapMonsterType; lbTypeSelect.Items.Clear(); for b := MONSTER_DEMON to MONSTER_MAN do @@ -6211,10 +6212,10 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_ITEM_TYPE] then + else if Key = MsgPropTrItemType then with ChooseTypeForm, vleObjectProperty do begin // Выбор типа предмета: - Caption := _lc[I_CAP_ITEM_TYPE]; + Caption := MsgCapItemType; lbTypeSelect.Items.Clear(); for b := ITEM_MEDKIT_SMALL to ITEM_KEY_BLUE do @@ -6240,10 +6241,10 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_SHOT_TYPE] then + else if Key = MsgPropTrShotType then with ChooseTypeForm, vleObjectProperty do begin // Выбор типа предмета: - Caption := _lc[I_PROP_TR_SHOT_TYPE]; + Caption := MsgPropTrShotType; lbTypeSelect.Items.Clear(); for b := TRIGGER_SHOT_PISTOL to TRIGGER_SHOT_MAX do @@ -6258,15 +6259,15 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_EFFECT_TYPE] then + else if Key = MsgPropTrEffectType then with ChooseTypeForm, vleObjectProperty do begin // Выбор типа эффекта: - Caption := _lc[I_CAP_FX_TYPE]; + Caption := MsgCapFxType; lbTypeSelect.Items.Clear(); - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_PARTICLE]); - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_ANIMATION]); - if Values[Key] = _lc[I_PROP_TR_EFFECT_ANIMATION] then + lbTypeSelect.Items.Add(MsgPropTrEffectParticle); + lbTypeSelect.Items.Add(MsgPropTrEffectAnimation); + if Values[Key] = MsgPropTrEffectAnimation then lbTypeSelect.ItemIndex := 1 else lbTypeSelect.ItemIndex := 0; @@ -6275,19 +6276,19 @@ begin begin b := lbTypeSelect.ItemIndex; if b = 0 then - Values[Key] := _lc[I_PROP_TR_EFFECT_PARTICLE] + Values[Key] := MsgPropTrEffectParticle else - Values[Key] := _lc[I_PROP_TR_EFFECT_ANIMATION]; + Values[Key] := MsgPropTrEffectAnimation; vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_EFFECT_SUBTYPE] then + else if Key = MsgPropTrEffectSubtype then with ChooseTypeForm, vleObjectProperty do begin // Выбор подтипа эффекта: - Caption := _lc[I_CAP_FX_TYPE]; + Caption := MsgCapFxType; lbTypeSelect.Items.Clear(); - if Values[_lc[I_PROP_TR_EFFECT_TYPE]] = _lc[I_PROP_TR_EFFECT_ANIMATION] then + if Values[MsgPropTrEffectType] = MsgPropTrEffectAnimation then begin for b := EFFECT_TELEPORT to EFFECT_FIRE do lbTypeSelect.Items.Add(EffectToStr(b)); @@ -6295,22 +6296,22 @@ begin lbTypeSelect.ItemIndex := StrToEffect(Values[Key]) - 1; end else begin - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_SLIQUID]); - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_LLIQUID]); - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_DLIQUID]); - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_BLOOD]); - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_SPARK]); - lbTypeSelect.Items.Add(_lc[I_PROP_TR_EFFECT_BUBBLE]); + lbTypeSelect.Items.Add(MsgPropTrEffectSliquid); + lbTypeSelect.Items.Add(MsgPropTrEffectLliquid); + lbTypeSelect.Items.Add(MsgPropTrEffectDliquid); + lbTypeSelect.Items.Add(MsgPropTrEffectBlood); + lbTypeSelect.Items.Add(MsgPropTrEffectSpark); + lbTypeSelect.Items.Add(MsgPropTrEffectBubble); lbTypeSelect.ItemIndex := TRIGGER_EFFECT_SLIQUID; - if Values[Key] = _lc[I_PROP_TR_EFFECT_LLIQUID] then + if Values[Key] = MsgPropTrEffectLliquid then lbTypeSelect.ItemIndex := TRIGGER_EFFECT_LLIQUID; - if Values[Key] = _lc[I_PROP_TR_EFFECT_DLIQUID] then + if Values[Key] = MsgPropTrEffectDliquid then lbTypeSelect.ItemIndex := TRIGGER_EFFECT_DLIQUID; - if Values[Key] = _lc[I_PROP_TR_EFFECT_BLOOD] then + if Values[Key] = MsgPropTrEffectBlood then lbTypeSelect.ItemIndex := TRIGGER_EFFECT_BLOOD; - if Values[Key] = _lc[I_PROP_TR_EFFECT_SPARK] then + if Values[Key] = MsgPropTrEffectSpark then lbTypeSelect.ItemIndex := TRIGGER_EFFECT_SPARK; - if Values[Key] = _lc[I_PROP_TR_EFFECT_BUBBLE] then + if Values[Key] = MsgPropTrEffectBubble then lbTypeSelect.ItemIndex := TRIGGER_EFFECT_BUBBLE; end; @@ -6318,26 +6319,26 @@ begin begin b := lbTypeSelect.ItemIndex; - if Values[_lc[I_PROP_TR_EFFECT_TYPE]] = _lc[I_PROP_TR_EFFECT_ANIMATION] then + if Values[MsgPropTrEffectType] = MsgPropTrEffectAnimation then Values[Key] := EffectToStr(b + 1) else begin - Values[Key] := _lc[I_PROP_TR_EFFECT_SLIQUID]; + Values[Key] := MsgPropTrEffectSliquid; if b = TRIGGER_EFFECT_LLIQUID then - Values[Key] := _lc[I_PROP_TR_EFFECT_LLIQUID]; + Values[Key] := MsgPropTrEffectLliquid; if b = TRIGGER_EFFECT_DLIQUID then - Values[Key] := _lc[I_PROP_TR_EFFECT_DLIQUID]; + Values[Key] := MsgPropTrEffectDliquid; if b = TRIGGER_EFFECT_BLOOD then - Values[Key] := _lc[I_PROP_TR_EFFECT_BLOOD]; + Values[Key] := MsgPropTrEffectBlood; if b = TRIGGER_EFFECT_SPARK then - Values[Key] := _lc[I_PROP_TR_EFFECT_SPARK]; + Values[Key] := MsgPropTrEffectSpark; if b = TRIGGER_EFFECT_BUBBLE then - Values[Key] := _lc[I_PROP_TR_EFFECT_BUBBLE]; + Values[Key] := MsgPropTrEffectBubble; end; vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_TR_EFFECT_COLOR] then + else if Key = MsgPropTrEffectColor then with vleObjectProperty do begin // Выбор цвета эффекта: ColorDialog.Color := StrToIntDef(Values[Key], 0); @@ -6347,7 +6348,7 @@ begin vleObjectPropertyApply(Sender); end; end - else if Key = _lc[I_PROP_PANEL_TEX] then + else if Key = MsgPropPanelTex then begin // Смена текстуры: vleObjectProperty.Values[Key] := SelectedTexture(); vleObjectPropertyApply(Sender); @@ -6379,7 +6380,7 @@ end; procedure TMainForm.aOpenMapExecute(Sender: TObject); begin - OpenDialog.Filter := _lc[I_FILE_FILTER_ALL]; + OpenDialog.Filter := MsgFileFilterAll; if OpenDialog.Execute() then begin @@ -6415,31 +6416,8 @@ begin end; procedure TMainForm.FormActivate(Sender: TObject); -var - lang: Integer; - config: TConfig; begin MainForm.ActiveControl := RenderPanel; - -// Язык: - if (gLanguage = '') and not (fsModal in SelectLanguageForm.FormState) then - begin - lang := SelectLanguageForm.ShowModal(); - case lang of - 1: gLanguage := LANGUAGE_ENGLISH; - 2: gLanguage := LANGUAGE_RUSSIAN; - else gLanguage := LANGUAGE_ENGLISH; - end; - - config := TConfig.CreateFile(CfgFileName); - config.WriteStr('Editor', 'Language', gLanguage); - config.SaveFile(CfgFileName); - config.Free(); - end; - - //e_WriteLog('Read language file', MSG_NOTIFY); - //g_Language_Load(EditorDir+'\data\'+gLanguage+LANGUAGE_FILE_NAME); - g_Language_Set(gLanguage); end; procedure TMainForm.aDeleteMap(Sender: TObject); @@ -6448,13 +6426,13 @@ var FileName: String; MapName: String; begin - OpenDialog.Filter := _lc[I_FILE_FILTER_WAD]; + OpenDialog.Filter := MsgFileFilterWad; if not OpenDialog.Execute() then Exit; FileName := OpenDialog.FileName; - SelectMapForm.Caption := _lc[I_CAP_REMOVE]; + SelectMapForm.Caption := MsgCapRemove; SelectMapForm.lbMapList.Items.Clear(); SelectMapForm.GetMaps(FileName); @@ -6462,7 +6440,7 @@ begin Exit; MapName := SelectMapForm.lbMapList.Items[SelectMapForm.lbMapList.ItemIndex]; - if Application.MessageBox(PChar(Format(_lc[I_MSG_DELETE_MAP_PROMT], [MapName, OpenDialog.FileName])), PChar(_lc[I_MSG_DELETE_MAP]), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) <> mrYes then + if Application.MessageBox(PChar(Format(MsgMsgDeleteMapPromt, [MapName, OpenDialog.FileName])), PChar(MsgMsgDeleteMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) <> mrYes then Exit; g_DeleteResource(FileName, '', MapName, res); @@ -6473,8 +6451,8 @@ begin end; Application.MessageBox( - PChar(Format(_lc[I_MSG_MAP_DELETED_PROMT], [MapName])), - PChar(_lc[I_MSG_MAP_DELETED]), + PChar(Format(MsgMsgMapDeletedPromt, [MapName])), + PChar(MsgMsgMapDeleted), MB_ICONINFORMATION or MB_OK or MB_DEFBUTTON1 ); @@ -6638,7 +6616,7 @@ procedure TMainForm.aSaveMapAsExecute(Sender: TObject); var idx: Integer; begin - SaveDialog.Filter := _lc[I_FILE_FILTER_WAD]; + SaveDialog.Filter := MsgFileFilterWad; if not SaveDialog.Execute() then Exit; @@ -7012,7 +6990,7 @@ begin end else begin - Application.MessageBox(PChar(_lc[I_MSG_EXEC_ERROR]), 'FIXME', MB_OK or MB_ICONERROR); + Application.MessageBox(PChar(MsgMsgExecError), 'FIXME', MB_OK or MB_ICONERROR); SysUtils.DeleteFile(newWAD); proc.Free(); end; diff --git a/src/editor/f_mapcheck.pas b/src/editor/f_mapcheck.pas index bcb8ecf..6a56283 100644 --- a/src/editor/f_mapcheck.pas +++ b/src/editor/f_mapcheck.pas @@ -76,7 +76,7 @@ begin if c or ObjectCollideLevel(a, OBJECT_AREA, 0, 0) then begin - lbErrorList.Items.Add(Format(_lc[I_TEST_AREA_WALL_STR], [a, X, Y])); + lbErrorList.Items.Add(Format(MsgTestAreaWallStr, [a, X, Y])); SetLength(ErrorsNum, Length(ErrorsNum)+1); ErrorsNum[High(ErrorsNum)] := 1; end; @@ -104,7 +104,7 @@ begin if c or ObjectCollideLevel(a, OBJECT_MONSTER, 0, 0) then begin - lbErrorList.Items.Add(Format(_lc[I_TEST_MONSTER_WALL_STR], [a, X, Y])); + lbErrorList.Items.Add(Format(MsgTestMonsterWallStr, [a, X, Y])); SetLength(ErrorsNum, Length(ErrorsNum)+1); ErrorsNum[High(ErrorsNum)] := 5; end; @@ -126,21 +126,21 @@ begin if b > 1 then begin - lbErrorList.Items.Add(_lc[I_TEST_SPAWNS_1]); + lbErrorList.Items.Add(MsgTestSpawns1); SetLength(ErrorsNum, Length(ErrorsNum)+1); ErrorsNum[High(ErrorsNum)] := 2; end; if bb > 1 then begin - lbErrorList.Items.Add(_lc[I_TEST_SPAWNS_2]); + lbErrorList.Items.Add(MsgTestSpawns2); SetLength(ErrorsNum, Length(ErrorsNum)+1); ErrorsNum[High(ErrorsNum)] := 3; end; if bbb = 0 then begin - lbErrorList.Items.Add(_lc[I_TEST_NO_DM]); + lbErrorList.Items.Add(MsgTestNoDm); SetLength(ErrorsNum, Length(ErrorsNum)+1); ErrorsNum[High(ErrorsNum)] := 4; end; @@ -150,10 +150,10 @@ procedure TMapCheckForm.lbErrorListClick(Sender: TObject); begin if lbErrorList.ItemIndex <> -1 then case ErrorsNum[lbErrorList.ItemIndex] of - 1: mErrorDescription.Text := _lc[I_TEST_AREA_WALL]; - 2, 3: mErrorDescription.Text := _lc[I_TEST_SPAWNS]; - 4: mErrorDescription.Text := _lc[I_TEST_NO_DM_EX]; - 5: mErrorDescription.Text := _lc[I_TEST_MONSTER_WALL]; + 1: mErrorDescription.Text := MsgTestAreaWall; + 2, 3: mErrorDescription.Text := MsgTestSpawns; + 4: mErrorDescription.Text := MsgTestNoDmEx; + 5: mErrorDescription.Text := MsgTestMonsterWall; end; end; diff --git a/src/editor/f_mapoptimization.pas b/src/editor/f_mapoptimization.pas index efeac7d..4986d0e 100644 --- a/src/editor/f_mapoptimization.pas +++ b/src/editor/f_mapoptimization.pas @@ -68,13 +68,13 @@ end; procedure TMapOptimizationForm.rbTexturesOptimizationClick(Sender: TObject); begin pcOptimizationOptions.ActivePage := tsTextureOptimization; - lOptimizationDescription.Caption := _lc[I_CTRL_OPT_DESC_TEXTURE]; + lOptimizationDescription.Caption := MsgCtrlOptDescTexture; end; procedure TMapOptimizationForm.rbPanelsOptimizationClick(Sender: TObject); begin pcOptimizationOptions.ActivePage := tsPanelOptimization; - lOptimizationDescription.Caption := _lc[I_CTRL_OPT_DESC_PANEL]; + lOptimizationDescription.Caption := MsgCtrlOptDescPanel; end; procedure TMapOptimizationForm.bBeginTextureOptimizationClick( @@ -92,7 +92,7 @@ begin if MainForm.lbTextureList.Count = 0 then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_NO_TEXTURES]); + mOptimizationResult.Lines.Add(MsgOptNoTextures); Exit; end; @@ -117,7 +117,7 @@ begin g_DeleteTexture(MainForm.lbTextureList.Items[a]); if not b then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_DELETED_TEXTURES]); + mOptimizationResult.Lines.Add(MsgOptDeletedTextures); b := True; end; mOptimizationResult.Lines.Add(' '+MainForm.lbTextureList.Items[a]); @@ -129,8 +129,8 @@ begin with mOptimizationResult.Lines do begin - Add(#13#10+_lc[I_OPT_TOTAL_TEXTURES]+' '+#9+IntToStr(c)); - Add(_lc[I_OPT_TEX_DELETED]+#9+IntToStr(c-MainForm.lbTextureList.Count)); + Add(#13#10+MsgOptTotalTextures+' '+#9+IntToStr(c)); + Add(MsgOptTexDeleted+#9+IntToStr(c-MainForm.lbTextureList.Count)); end; end; @@ -272,65 +272,65 @@ begin if cbOptimizeWalls.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_WALLS]); + mOptimizationResult.Lines.Add(MsgOptWalls); count := OptimizePanels(PANEL_WALL); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeForeGround.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_FORES]); + mOptimizationResult.Lines.Add(MsgOptFores); count := OptimizePanels(PANEL_FORE); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeBackGround.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_BACKS]); + mOptimizationResult.Lines.Add(MsgOptBacks); count := OptimizePanels(PANEL_BACK); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeSteps.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_STAIRS]); + mOptimizationResult.Lines.Add(MsgOptStairs); count := OptimizePanels(PANEL_STEP); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeWater.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_WATER]); + mOptimizationResult.Lines.Add(MsgOptWater); count := OptimizePanels(PANEL_WATER); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeAcid1.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_ACID1]); + mOptimizationResult.Lines.Add(MsgOptAcid1); count := OptimizePanels(PANEL_ACID1); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeAcid2.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_ACID2]); + mOptimizationResult.Lines.Add(MsgOptAcid2); count := OptimizePanels(PANEL_ACID2); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeLift.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_LIFTS]); + mOptimizationResult.Lines.Add(MsgOptLifts); count := OptimizePanels(PANEL_LIFTUP)+OptimizePanels(PANEL_LIFTDOWN)+OptimizePanels(PANEL_LIFTLEFT)+OptimizePanels(PANEL_LIFTRIGHT); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; if cbOptimizeBlockMon.Checked then begin - mOptimizationResult.Lines.Add(_lc[I_OPT_BLOCKMON]); + mOptimizationResult.Lines.Add(MsgOptBlockmon); count := OptimizePanels(PANEL_BLOCKMON); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(count)+#13#10); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(count)+#13#10); end; panelcount2 := 0; @@ -339,9 +339,9 @@ begin panelcount2 := panelcount2 + 1; mOptimizationResult.Lines.Add('-----------------------'); - mOptimizationResult.Lines.Add(_lc[I_OPT_TOTAL_PANELS]+' '+IntToStr(panelcount1)); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_AFTER]+' '+IntToStr(panelcount2)); - mOptimizationResult.Lines.Add(_lc[I_OPT_PANELS_OPT]+' '+IntToStr(panelcount1-panelcount2)); + mOptimizationResult.Lines.Add(MsgOptTotalPanels+' '+IntToStr(panelcount1)); + mOptimizationResult.Lines.Add(MsgOptPanelsAfter+' '+IntToStr(panelcount2)); + mOptimizationResult.Lines.Add(MsgOptPanelsOpt+' '+IntToStr(panelcount1-panelcount2)); end; end. diff --git a/src/editor/f_options.lfm b/src/editor/f_options.lfm index 3e33117..4a7a746 100644 --- a/src/editor/f_options.lfm +++ b/src/editor/f_options.lfm @@ -1,7 +1,7 @@ object OptionsForm: TOptionsForm - Left = 812 + Left = 1164 Height = 360 - Top = 429 + Top = 677 Width = 640 BorderIcons = [biSystemMenu] BorderStyle = bsSingle @@ -234,23 +234,14 @@ object OptionsForm: TOptionsForm Caption = 'Язык:' ParentColor = False end - object rbRussian: TRadioButton + object cbLanguage: TComboBox Left = 304 - Height = 21 - Top = 204 - Width = 70 - Caption = 'Русский' - Checked = True + Height = 26 + Top = 192 + Width = 68 + ItemHeight = 0 + Style = csDropDownList TabOrder = 13 - TabStop = True - end - object rbEnglish: TRadioButton - Left = 304 - Height = 21 - Top = 188 - Width = 63 - Caption = 'English' - TabOrder = 14 end end object TabFiles: TTabSheet @@ -261,7 +252,7 @@ object OptionsForm: TOptionsForm Left = 8 Height = 21 Top = 8 - Width = 208 + Width = 249 Caption = 'Сжимать архив при сохранении' TabOrder = 2 end @@ -269,7 +260,7 @@ object OptionsForm: TOptionsForm Left = 8 Height = 21 Top = 32 - Width = 218 + Width = 258 Caption = 'Резервная копия при сохранении' TabOrder = 3 end @@ -355,7 +346,7 @@ object OptionsForm: TOptionsForm Left = 8 Height = 21 Top = 104 - Width = 91 + Width = 103 Caption = 'Deathmatch' Checked = True TabOrder = 0 @@ -365,7 +356,7 @@ object OptionsForm: TOptionsForm Left = 8 Height = 21 Top = 120 - Width = 124 + Width = 142 Caption = 'Team Deathmatch' TabOrder = 1 end @@ -373,7 +364,7 @@ object OptionsForm: TOptionsForm Left = 8 Height = 21 Top = 136 - Width = 114 + Width = 131 Caption = 'Capture the Flag' TabOrder = 2 end @@ -381,7 +372,7 @@ object OptionsForm: TOptionsForm Left = 8 Height = 21 Top = 152 - Width = 92 + Width = 102 Caption = 'Cooperative' TabOrder = 3 end @@ -389,7 +380,7 @@ object OptionsForm: TOptionsForm Left = 168 Height = 21 Top = 104 - Width = 89 + Width = 101 Caption = 'Два игрока' TabOrder = 4 end @@ -397,7 +388,7 @@ object OptionsForm: TOptionsForm Left = 168 Height = 21 Top = 120 - Width = 141 + Width = 164 Caption = 'Урон своей команде' TabOrder = 5 end @@ -405,7 +396,7 @@ object OptionsForm: TOptionsForm Left = 168 Height = 21 Top = 136 - Width = 122 + Width = 141 Caption = 'Выход из уровня' Checked = True State = cbChecked @@ -415,7 +406,7 @@ object OptionsForm: TOptionsForm Left = 168 Height = 21 Top = 152 - Width = 125 + Width = 145 Caption = 'Оружие остается' TabOrder = 7 end @@ -423,7 +414,7 @@ object OptionsForm: TOptionsForm Left = 168 Height = 21 Top = 168 - Width = 103 + Width = 124 Caption = 'Монстры в DM' TabOrder = 8 end @@ -471,7 +462,7 @@ object OptionsForm: TOptionsForm Left = 8 Height = 21 Top = 256 - Width = 241 + Width = 287 Caption = 'Закрыть игру после выхода из карты' TabOrder = 11 end diff --git a/src/editor/f_options.pas b/src/editor/f_options.pas index a663bb2..51f2ea6 100644 --- a/src/editor/f_options.pas +++ b/src/editor/f_options.pas @@ -7,7 +7,7 @@ interface uses LCLIntf, LCLType, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, - ExtCtrls, ComCtrls, Registry, Math, Types; + ExtCtrls, ComCtrls, ActnList, Registry, Math, Types; type @@ -19,6 +19,7 @@ type cbCheckerboard: TCheckBox; cbCompress: TCheckBox; cbBackup: TCheckBox; + cbLanguage: TComboBox; PageControl: TPageControl; TabGeneral: TTabSheet; TabFiles: TTabSheet; @@ -54,8 +55,6 @@ type eRecent: TEdit; UpDown3: TUpDown; LabelLanguage: TLabel; - rbRussian: TRadioButton; - rbEnglish: TRadioButton; LabelGridSize: TLabel; cbDotSize: TComboBox; // Map testing: @@ -105,7 +104,7 @@ procedure RegisterFileType(ext: String; FileName: String); implementation uses - f_main, StdConvs, CONFIG, g_language, g_resources, g_options; + LazFileUtils, StrUtils, f_main, StdConvs, CONFIG, g_language, g_resources, g_options; {$R *.lfm} @@ -146,6 +145,7 @@ begin end; procedure TOptionsForm.FormActivate(Sender: TObject); + var info: TSearchRec; s: String; i: Integer; begin sDotColor.Brush.Color := DotColor; cbShowDots.Checked := DotEnable; @@ -168,17 +168,25 @@ begin cbDotSize.ItemIndex := 0; eRecent.Text := IntToStr(RecentCount); -// Язык: - if gLanguage = LANGUAGE_RUSSIAN then + try + cbLanguage.Items.BeginUpdate; + cbLanguage.Items.Clear; + cbLanguage.Items.Add('Auto'); + if FindFirst(LangDir + DirectorySeparator + '*.mo', faAnyFile, info) = 0 then begin - rbRussian.Checked := True; - rbEnglish.Checked := False; - end - else - begin - rbRussian.Checked := False; - rbEnglish.Checked := True; + repeat + s := ExtractFileNameWithoutExt(info.Name); + // TODO: check encoding part in name (editor.ru_RU.UTF-8.mo) + i := Max(RPos('.', s), 1); + s := Copy(s, i + 1, Length(s) - i); + cbLanguage.Items.Add(s); + until FindNext(info) <> 0; + FindClose(info); end; + cbLanguage.ItemIndex := IfThen(gLanguage = '', 0, cbLanguage.Items.IndexOf(gLanguage)); + finally + cbLanguage.Items.EndUpdate; + end; if TestGameMode = 'TDM' then rbTDM.Checked := True @@ -211,17 +219,10 @@ var begin // General tab - if rbRussian.Checked then - str := LANGUAGE_RUSSIAN - else - str := LANGUAGE_ENGLISH; - -// Нужно сменить язык: - if gLanguage <> str then + if cbLanguage.ItemIndex <= 0 then str := '' else str := cbLanguage.Items[cbLanguage.ItemIndex]; + if (str = '') or (gLanguage <> str) then begin gLanguage := str; - //e_WriteLog('Read language file', MSG_NOTIFY); - //g_Language_Load(EditorDir+'\data\'+gLanguage+LANGUAGE_FILE_NAME); g_Language_Set(gLanguage); end; diff --git a/src/editor/f_packmap.pas b/src/editor/f_packmap.pas index a8ad07a..f06f5c8 100644 --- a/src/editor/f_packmap.pas +++ b/src/editor/f_packmap.pas @@ -64,7 +64,7 @@ const procedure TPackMapForm.bSelectWADClick(Sender: TObject); begin - SaveDialog.Filter := _lc[I_FILE_FILTER_WAD]; + SaveDialog.Filter := MsgFileFilterWad; if SaveDialog.Execute() then eWAD.Text := SaveDialog.FileName; @@ -99,8 +99,8 @@ begin end else begin - //Application.MessageBox(PChar(Format(_lc[I_MSG_WAD_ERROR], [ExtractFileName(filename)])), PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR); - Application.MessageBox(PChar(Format(_lc[I_MSG_RES_ERROR], [filename, section, resource])), PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR); + //Application.MessageBox(PChar(Format(MsgMsgWadError, [ExtractFileName(filename)])), PChar(MsgMsgError), MB_OK + MB_ICONERROR); + Application.MessageBox(PChar(Format(MsgMsgResError, [filename, section, resource])), PChar(MsgMsgError), MB_OK + MB_ICONERROR); Result := False end end; @@ -309,7 +309,7 @@ begin Close(); ASSERT(a = 0); (* saved *) - MessageDlg(Format(_lc[I_MSG_PACKED], [eResource.Text, ExtractFileName(eWAD.Text)]), mtInformation, [mbOK], 0); + MessageDlg(Format(MsgMsgPacked, [eResource.Text, ExtractFileName(eWAD.Text)]), mtInformation, [mbOK], 0); end; procedure TPackMapForm.FormCreate(Sender: TObject); diff --git a/src/editor/f_savemap.pas b/src/editor/f_savemap.pas index c9fff9e..a508c24 100644 --- a/src/editor/f_savemap.pas +++ b/src/editor/f_savemap.pas @@ -69,9 +69,9 @@ begin for a := 0 to lbMapList.Count-1 do if eMapName.Text = lbMapList.Items[a] then begin - ok := Application.MessageBox(PChar(Format(_lc[I_MSG_MAP_EXISTS], + ok := Application.MessageBox(PChar(Format(MsgMsgMapExists, [eMapName.Text])), - PChar(_lc[I_MSG_SAVE_MAP]), + PChar(MsgMsgSaveMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = mrYes; if not ok then Exit; diff --git a/src/editor/f_selectlang.lfm b/src/editor/f_selectlang.lfm deleted file mode 100644 index f01b8d8..0000000 --- a/src/editor/f_selectlang.lfm +++ /dev/null @@ -1,43 +0,0 @@ -object SelectLanguageForm: TSelectLanguageForm - Left = 365 - Height = 63 - Top = 244 - Width = 193 - BorderIcons = [] - BorderStyle = bsSingle - Caption = 'Language / Язык' - ClientHeight = 63 - ClientWidth = 193 - Color = clBtnFace - DefaultMonitor = dmMainForm - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - OnActivate = FormActivate - Position = poMainFormCenter - LCLVersion = '1.6.4.0' - object Label1: TLabel - Left = 8 - Height = 13 - Top = 8 - Width = 174 - Caption = 'Select Language / Выберите язык:' - ParentColor = False - end - object Button1: TButton - Left = 8 - Height = 25 - Top = 32 - Width = 75 - Caption = 'English' - TabOrder = 1 - end - object Button2: TButton - Left = 112 - Height = 25 - Top = 32 - Width = 75 - Caption = 'Русский' - TabOrder = 0 - end -end diff --git a/src/editor/f_selectlang.pas b/src/editor/f_selectlang.pas deleted file mode 100644 index bfb9998..0000000 --- a/src/editor/f_selectlang.pas +++ /dev/null @@ -1,37 +0,0 @@ -unit f_selectlang; - -{$INCLUDE ../shared/a_modes.inc} - -interface - -uses - LCLIntf, LCLType, LMessages, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls; - -type - TSelectLanguageForm = class(TForm) - Button1: TButton; - Button2: TButton; - Label1: TLabel; - procedure FormActivate(Sender: TObject); - - private - { Private declarations } - public - { Public declarations } - end; - -var - SelectLanguageForm: TSelectLanguageForm; - -implementation - -{$R *.lfm} - -procedure TSelectLanguageForm.FormActivate(Sender: TObject); -begin - Button1.ModalResult := 1; - Button2.ModalResult := 2; -end; - -end. diff --git a/src/editor/g_language.pas b/src/editor/g_language.pas index 4d3ae7e..bcb99ca 100644 --- a/src/editor/g_language.pas +++ b/src/editor/g_language.pas @@ -4,636 +4,623 @@ Interface -Uses - g_Basic, MAPDEF; - -Type - TStrings_Locale = ( - I_NOT_ACCESSIBLE, - - I_ARRAY_BOOL_FALSE, - I_ARRAY_BOOL_TRUE, - - I_ARRAY_DIR_LEFT, - I_ARRAY_DIR_RIGHT, - I_ARRAY_DIR_SAME, - I_ARRAY_DIR_REVERSED, - - I_ARRAY_DIRBTN_LEFT, - I_ARRAY_DIRBTN_RIGHT, - I_ARRAY_DIRBTN_UP, - I_ARRAY_DIRBTN_DOWN, - - I_ARRAY_PANEL_WALL, - I_ARRAY_PANEL_BACK, - I_ARRAY_PANEL_FRONT, - I_ARRAY_PANEL_DOOR_OPEN, - I_ARRAY_PANEL_DOOR_CLOSE, - I_ARRAY_PANEL_STAIR, - I_ARRAY_PANEL_WATER, - I_ARRAY_PANEL_ACID_1, - I_ARRAY_PANEL_ACID_2, - I_ARRAY_PANEL_LIFT_UP, - I_ARRAY_PANEL_LIFT_DOWN, - I_ARRAY_PANEL_LIFT_LEFT, - I_ARRAY_PANEL_LIFT_RIGHT, - I_ARRAY_PANEL_BLOCKMON, - - I_ARRAY_FX_NONE, - I_ARRAY_FX_TELEPORT, - I_ARRAY_FX_RESPAWN, - I_ARRAY_FX_FIRE, - - I_ARRAY_ITEM_MEDKIT, - I_ARRAY_ITEM_LARGE_MEDKIT, - I_ARRAY_ITEM_BLACK_MEDKIT, - I_ARRAY_ITEM_GREEN_ARMOR, - I_ARRAY_ITEM_BLUE_ARMOR, - I_ARRAY_ITEM_BLUE_SPHERE, - I_ARRAY_ITEM_MEGASPHERE, - I_ARRAY_ITEM_HAZ_SUIT, - I_ARRAY_ITEM_OXYGEN, - I_ARRAY_ITEM_INVULNERABILITY, - I_ARRAY_ITEM_CHAINSAW, - I_ARRAY_ITEM_SHOTGUN, - I_ARRAY_ITEM_DB_SHOTGUN, - I_ARRAY_ITEM_CHAINGUN, - I_ARRAY_ITEM_ROCKET_LAUNCHER, - I_ARRAY_ITEM_PLASMA_RIFLE, - I_ARRAY_ITEM_BFG, - I_ARRAY_ITEM_SUPER_MINIGUN, - I_ARRAY_ITEM_FLAMETHROWER, - I_ARRAY_ITEM_CLIP, - I_ARRAY_ITEM_AMMO_BOX, - I_ARRAY_ITEM_4_SHELLS, - I_ARRAY_ITEM_25_SHELLS, - I_ARRAY_ITEM_1_ROCKET, - I_ARRAY_ITEM_ROCKET_BOX, - I_ARRAY_ITEM_CELL, - I_ARRAY_ITEM_LARGE_CELL, - I_ARRAY_ITEM_FUELCAN, - I_ARRAY_ITEM_BACKPACK, - I_ARRAY_ITEM_KEY_RED, - I_ARRAY_ITEM_KEY_GREEN, - I_ARRAY_ITEM_KEY_BLUE, - I_ARRAY_ITEM_BOTTLE, - I_ARRAY_ITEM_HELMET, - I_ARRAY_ITEM_JETPACK, - I_ARRAY_ITEM_INVIS, - - I_ARRAY_SHOT_PISTOL, - I_ARRAY_SHOT_BULLET, - I_ARRAY_SHOT_SHOTGUN, - I_ARRAY_SHOT_SSG, - I_ARRAY_SHOT_IMP, - I_ARRAY_SHOT_PLASMA, - I_ARRAY_SHOT_SPIDER, - I_ARRAY_SHOT_CACO, - I_ARRAY_SHOT_BARON, - I_ARRAY_SHOT_MANCUB, - I_ARRAY_SHOT_REV, - I_ARRAY_SHOT_ROCKET, - I_ARRAY_SHOT_BFG, - I_ARRAY_SHOT_EXPL, - I_ARRAY_SHOT_BFGEXPL, - I_ARRAY_SHOT_FLAME, - - I_ARRAY_MON_DEMON, - I_ARRAY_MON_IMP, - I_ARRAY_MON_ZOMBIE, - I_ARRAY_MON_SERGEANT, - I_ARRAY_MON_CYBER, - I_ARRAY_MON_CGUN, - I_ARRAY_MON_HELL_BARON, - I_ARRAY_MON_HELL_KNIGHT, - I_ARRAY_MON_CACODEMON, - I_ARRAY_MON_LOST_SOUL, - I_ARRAY_MON_PAIN_ELEMENTAL, - I_ARRAY_MON_MASTERMIND, - I_ARRAY_MON_ARACHNATRON, - I_ARRAY_MON_MANCUBUS, - I_ARRAY_MON_REVENANT, - I_ARRAY_MON_ARCHVILE, - I_ARRAY_MON_FISH, - I_ARRAY_MON_BARREL, - I_ARRAY_MON_ROBOT, - I_ARRAY_MON_PRIKOLIST, - - I_ARRAY_AREA_PLAYER_ONE, - I_ARRAY_AREA_PLAYER_TWO, - I_ARRAY_AREA_DM, - I_ARRAY_AREA_FLAG_RED, - I_ARRAY_AREA_FLAG_BLUE, - I_ARRAY_AREA_FLAG_DOM, - I_ARRAY_AREA_TEAM_RED, - I_ARRAY_AREA_TEAM_BLUE, - - I_ARRAY_TR_EXIT, - I_ARRAY_TR_TELEPORT, - I_ARRAY_TR_DOOR_OPEN, - I_ARRAY_TR_DOOR_CLOSE, - I_ARRAY_TR_DOOR_SWITCH, - I_ARRAY_TR_DOOR_5_SEC, - I_ARRAY_TR_TRAP_CLOSE, - I_ARRAY_TR_TRAP, - I_ARRAY_TR_EXTEND, - I_ARRAY_TR_SECRET, - I_ARRAY_TR_LIFT_UP, - I_ARRAY_TR_LIFT_DOWN, - I_ARRAY_TR_LIFT_SWITCH, - I_ARRAY_TR_TEXTURE, - I_ARRAY_TR_ON, - I_ARRAY_TR_OFF, - I_ARRAY_TR_SWITCH, - I_ARRAY_TR_SOUND, - I_ARRAY_TR_SPAWN_MONSTER, - I_ARRAY_TR_SPAWN_ITEM, - I_ARRAY_TR_MUSIC, - I_ARRAY_TR_PUSH, - I_ARRAY_TR_SCORE, - I_ARRAY_TR_MESSAGE, - I_ARRAY_TR_DAMAGE, - I_ARRAY_TR_HEALTH, - I_ARRAY_TR_SHOT, - I_ARRAY_TR_EFFECT, - - I_PROP_ID, - I_PROP_X, - I_PROP_Y, - I_PROP_WIDTH, - I_PROP_HEIGHT, - I_PROP_PANEL_TYPE, - I_PROP_PANEL_TEX, - I_PROP_PANEL_ALPHA, - I_PROP_PANEL_BLEND, - I_PROP_DM_ONLY, - I_PROP_ITEM_FALLS, - I_PROP_DIRECTION, - - I_PROP_TR_TYPE, - I_PROP_TR_ENABLED, - I_PROP_TR_TEXTURE_PANEL, - I_PROP_TR_ACTIVATION, - I_PROP_TR_KEYS, - I_PROP_TR_D2D, - I_PROP_TR_SILENT, - I_PROP_TR_COUNT, - I_PROP_TR_INTERVAL, - I_PROP_TR_HEALTH, - I_PROP_TR_NEXT_MAP, - I_PROP_TR_TELEPORT_TO, - I_PROP_TR_TELEPORT_SILENT, - I_PROP_TR_TELEPORT_DIR, - I_PROP_TR_DOOR_PANEL, - I_PROP_TR_TRAP_PANEL, - I_PROP_TR_EX_AREA, - I_PROP_TR_EX_DELAY, - I_PROP_TR_EX_COUNT, - I_PROP_TR_EX_MONSTER, - I_PROP_TR_EX_RANDOM, - I_PROP_TR_LIFT_PANEL, - I_PROP_TR_TEXTURE_ONCE, - I_PROP_TR_TEXTURE_ANIM_ONCE, - I_PROP_TR_SOUND_NAME, - I_PROP_TR_SOUND_VOLUME, - I_PROP_TR_SOUND_PAN, - I_PROP_TR_SOUND_COUNT, - I_PROP_TR_SOUND_LOCAL, - I_PROP_TR_SOUND_SWITCH, - I_PROP_TR_FX_TYPE, - I_PROP_TR_SPAWN_TO, - I_PROP_TR_SPAWN_MAX, - I_PROP_TR_SPAWN_DELAY, - I_PROP_TR_MONSTER_TYPE, - I_PROP_TR_MONSTER_ACTIVE, - I_PROP_TR_MONSTER_BEHAVIOUR, - I_PROP_TR_MONSTER_BEHAVIOUR_0, - I_PROP_TR_MONSTER_BEHAVIOUR_1, - I_PROP_TR_MONSTER_BEHAVIOUR_2, - I_PROP_TR_MONSTER_BEHAVIOUR_3, - I_PROP_TR_MONSTER_BEHAVIOUR_4, - I_PROP_TR_MONSTER_BEHAVIOUR_5, - I_PROP_TR_ITEM_TYPE, - I_PROP_TR_MUSIC_NAME, - I_PROP_TR_MUSIC_ACT, - I_PROP_TR_MUSIC_ON, - I_PROP_TR_MUSIC_OFF, - I_PROP_TR_PUSH_ANGLE, - I_PROP_TR_PUSH_FORCE, - I_PROP_TR_PUSH_RESET, - I_PROP_TR_SCORE_ACT, - I_PROP_TR_SCORE_ACT_0, - I_PROP_TR_SCORE_ACT_1, - I_PROP_TR_SCORE_ACT_2, - I_PROP_TR_SCORE_ACT_3, - I_PROP_TR_SCORE_TEAM, - I_PROP_TR_SCORE_TEAM_0, - I_PROP_TR_SCORE_TEAM_1, - I_PROP_TR_SCORE_TEAM_2, - I_PROP_TR_SCORE_TEAM_3, - I_PROP_TR_SCORE_CON, - I_PROP_TR_SCORE_MSG, - I_PROP_TR_DAMAGE_VALUE, - I_PROP_TR_DAMAGE_KIND, - I_PROP_TR_DAMAGE_KIND_0, - I_PROP_TR_DAMAGE_KIND_3, - I_PROP_TR_DAMAGE_KIND_4, - I_PROP_TR_DAMAGE_KIND_5, - I_PROP_TR_DAMAGE_KIND_6, - I_PROP_TR_DAMAGE_KIND_7, - I_PROP_TR_DAMAGE_KIND_8, - I_PROP_TR_HEALTH_MAX, - I_PROP_TR_SHOT_TYPE, - I_PROP_TR_SHOT_SOUND, - I_PROP_TR_SHOT_ANGLE, - I_PROP_TR_SHOT_ACC, - I_PROP_TR_SHOT_TO, - I_PROP_TR_SHOT_TO_0, - I_PROP_TR_SHOT_TO_1, - I_PROP_TR_SHOT_TO_2, - I_PROP_TR_SHOT_TO_3, - I_PROP_TR_SHOT_TO_4, - I_PROP_TR_SHOT_TO_5, - I_PROP_TR_SHOT_TO_6, - I_PROP_TR_SHOT_AIM, - I_PROP_TR_SHOT_AIM_0, - I_PROP_TR_SHOT_AIM_1, - I_PROP_TR_SHOT_AIM_2, - I_PROP_TR_SHOT_AIM_3, - I_PROP_TR_SHOT_AMMO, - I_PROP_TR_SHOT_RELOAD, - I_PROP_TR_SHOT_SIGHT, - I_PROP_TR_SHOT_PANEL, - I_PROP_TR_MESSAGE_KIND, - I_PROP_TR_MESSAGE_KIND_0, - I_PROP_TR_MESSAGE_KIND_1, - I_PROP_TR_MESSAGE_TO, - I_PROP_TR_MESSAGE_TO_0, - I_PROP_TR_MESSAGE_TO_1, - I_PROP_TR_MESSAGE_TO_2, - I_PROP_TR_MESSAGE_TO_3, - I_PROP_TR_MESSAGE_TO_4, - I_PROP_TR_MESSAGE_TO_5, - I_PROP_TR_MESSAGE_TEXT, - I_PROP_TR_MESSAGE_TIME, - I_PROP_TR_EFFECT_TYPE, - I_PROP_TR_EFFECT_SUBTYPE, - I_PROP_TR_EFFECT_COLOR, - I_PROP_TR_EFFECT_CENTER, - I_PROP_TR_EFFECT_VELX, - I_PROP_TR_EFFECT_VELY, - I_PROP_TR_EFFECT_SPL, - I_PROP_TR_EFFECT_SPR, - I_PROP_TR_EFFECT_SPU, - I_PROP_TR_EFFECT_SPD, - I_PROP_TR_EFFECT_PARTICLE, - I_PROP_TR_EFFECT_ANIMATION, - I_PROP_TR_EFFECT_SLIQUID, - I_PROP_TR_EFFECT_LLIQUID, - I_PROP_TR_EFFECT_DLIQUID, - I_PROP_TR_EFFECT_BLOOD, - I_PROP_TR_EFFECT_SPARK, - I_PROP_TR_EFFECT_BUBBLE, - - I_MSG_ERROR, - I_MSG_WRONG_TEXWIDTH, - I_MSG_WRONG_TEXHEIGHT, - I_MSG_WRONG_ALPHA, - I_MSG_WRONG_SIZE, - I_MSG_WRONG_XY, - I_MSG_TEXTURE_ALREADY, - I_MSG_RES_NAME_64, - I_MSG_CHOOSE_ITEM, - I_MSG_CHOOSE_MONSTER, - I_MSG_CHOOSE_AREA, - I_MSG_CHOOSE_TEXTURE, - I_MSG_CHOOSE_RES, - I_MSG_EXIT, - I_MSG_EXIT_PROMT, - I_MSG_DEL_TEXTURE, - I_MSG_DEL_TEXTURE_PROMT, - I_MSG_DEL_TEXTURE_CANT, - I_MSG_DEL_RECENT, - I_MSG_DEL_RECENT_PROMT, - I_MSG_CLEAR_MAP, - I_MSG_CLEAR_MAP_PROMT, - I_MSG_DELETE_MAP, - I_MSG_DELETE_MAP_PROMT, - I_MSG_MAP_DELETED, - I_MSG_MAP_DELETED_PROMT, - I_MSG_REOPEN_MAP_PROMT, - I_MSG_EXEC_ERROR, - I_MSG_SOUND_ERROR, - I_MSG_WAD_ERROR, - I_MSG_RES_ERROR, - I_MSG_PACKED, - I_MSG_MAP_EXISTS, - I_MSG_SAVE_MAP, - - I_HINT_TELEPORT, - I_HINT_SPAWN, - I_HINT_PANEL_DOOR, - I_HINT_PANEL_TEXTURE, - I_HINT_PANEL_SHOT, - I_HINT_PANEL_LIFT, - I_HINT_MONSTER, - I_HINT_EXT_AREA, - I_HINT_WIDTH, - I_HINT_HEIGHT, - - I_MENU_FILE, - I_MENU_FILE_NEW, - I_MENU_FILE_OPEN, - I_MENU_FILE_SAVE, - I_MENU_FILE_SAVE_AS, - I_MENU_FILE_OPEN_WAD, - I_MENU_FILE_REOPEN, - I_MENU_FILE_SAVE_MINI, - I_MENU_FILE_DELETE, - I_MENU_FILE_PACK_MAP, - I_MENU_FILE_EXIT, - - I_MENU_EDIT, - I_MENU_EDIT_UNDO, - I_MENU_EDIT_COPY, - I_MENU_EDIT_CUT, - I_MENU_EDIT_PASTE, - I_MENU_EDIT_SELECT_ALL, - I_MENU_EDIT_TO_FORE, - I_MENU_EDIT_TO_BACK, - - I_MENU_TOOLS, - I_MENU_TOOLS_SNAP_GRID, - I_MENU_TOOLS_MINIMAP, - I_MENU_TOOLS_STEP_GRID, - I_MENU_TOOLS_SHOW_EDGES, - I_MENU_TOOLS_LAYERS, - - I_MENU_SERV, - I_MENU_SERV_TEST, - I_MENU_SERV_OPT, - I_MENU_SERV_PREVIEW, - I_MENU_SERV_LAUNCH, - - I_MENU_SETS, - I_MENU_SETS_MAP, - I_MENU_SETS_EDITOR, - I_MENU_SETS_LAUNCH, - - I_MENU_HELP, - I_MENU_HELP_ABOUT, - - I_MENU_LAYER_BACK, - I_MENU_LAYER_WALL, - I_MENU_LAYER_FORE, - I_MENU_LAYER_STAIR, - I_MENU_LAYER_WATER, - I_MENU_LAYER_ITEM, - I_MENU_LAYER_MONSTER, - I_MENU_LAYER_AREA, - I_MENU_LAYER_TRIGGER, - - I_MENU_TB_NEW, - I_MENU_TB_OPEN, - I_MENU_TB_SAVE, - I_MENU_TB_OPEN_WAD, - I_MENU_TB_MINIMAP, - I_MENU_TB_LAYERS, - I_MENU_TB_GRID, - I_MENU_TB_GRID_STEP, - I_MENU_TB_LAUNCH, - - I_MENU_LAUNCH_SETS, - - I_CAP_FX_TYPE, - I_CAP_MONSTER_TYPE, - I_CAP_ITEM_TYPE, - I_CAP_ABOUT, - I_CAP_ACT, - I_CAP_ADD_SKY, - I_CAP_ADD_SOUND, - I_CAP_ADD_TEXTURE, - I_CAP_KEYS, - I_CAP_TEST, - I_CAP_OPT, - I_CAP_SETS, - I_CAP_LAUNCH, - I_CAP_ES, - I_CAP_PACK, - I_CAP_SAVE, - I_CAP_MINI, - I_CAP_SELECT, - I_CAP_OPEN, - I_CAP_REMOVE, - I_CAP_TEXTURE, - I_CAP_ANIMATION, - I_CAP_STAT_SELECTED, - - I_CTRL_PROP_KEY, - I_CTRL_PROP_VALUE, - I_CTRL_PANELS, - I_CTRL_ITEMS, - I_CTRL_MONSTERS, - I_CTRL_AREAS, - I_CTRL_TRIGGERS, - - I_CTRL_LIST_TEXTURE, - I_CTRL_LIST_ITEM, - I_CTRL_LIST_MONSTER, - I_CTRL_LIST_AREA, - I_CTRL_LIST_TRIGGER, - I_CTRL_LIST_ACTIVE, - I_CTRL_LIST_KEYS, - - I_CTRL_PREVIEW, - I_CTRL_ITEM_DM, - I_CTRL_ITEM_FALLS, - I_CTRL_LEFT, - I_CTRL_RIGHT, - - I_CTRL_ACT_PLAYER_CLOSE, - I_CTRL_ACT_MONSTER_CLOSE, - I_CTRL_ACT_PLAYER_PRESS, - I_CTRL_ACT_MONSTER_PRESS, - I_CTRL_ACT_SHOT, - I_CTRL_ACT_NO_MONSTER, - - I_CTRL_KEYS_RED, - I_CTRL_KEYS_GREEN, - I_CTRL_KEYS_BLUE, - I_CTRL_KEYS_TEAM_RED, - I_CTRL_KEYS_TEAM_BLUE, - - I_CTRL_OPT_GB, - I_CTRL_OPT_TEXTURE, - I_CTRL_OPT_PANEL, - I_CTRL_OPT_WALL, - I_CTRL_OPT_FORE, - I_CTRL_OPT_BACK, - I_CTRL_OPT_STAIR, - I_CTRL_OPT_WATER, - I_CTRL_OPT_ACID1, - I_CTRL_OPT_ACID2, - I_CTRL_OPT_LIFT, - I_CTRL_OPT_BLOCKMON, - I_CTRL_OPT_DESC_TEXTURE, - I_CTRL_OPT_DESC_PANEL, - - I_CTRL_SETS_STATS, - I_CTRL_SETS_SIZES, - - I_CTRL_LAUNCH_DM, - I_CTRL_LAUNCH_TDM, - I_CTRL_LAUNCH_CTF, - I_CTRL_LAUNCH_COOP, - I_CTRL_LAUNCH_2P, - I_CTRL_LAUNCH_FF, - I_CTRL_LAUNCH_EXIT, - I_CTRL_LAUNCH_WEAPONS, - I_CTRL_LAUNCH_MONSTERS, - I_CTRL_LAUNCH_CLOSE, - I_CTRL_LAUNCH_OPEN, - - I_CTRL_ES_GRID, - I_CTRL_ES_TEXTURE, - I_CTRL_ES_PANEL_SIZE, - I_CTRL_ES_CHECKERBOARD, - - I_CTRL_PACK_TEXTURES, - I_CTRL_PACK_SKY, - I_CTRL_PACK_MUSIC, - I_CTRL_PACK_ADD, - I_CTRL_PACK_NON_STD, - - I_LAB_TEX_WIDTH, - I_LAB_TEX_HEIGHT, - - I_LAB_SPECTRUM, - - I_LAB_ABOUT_VER, - I_LAB_ABOUT_AUTHOR, - I_LAB_ABOUT_AUTHOR_2, - I_LAB_ABOUT_MAIL, - I_LAB_ABOUT_MAIL_2, - I_LAB_ABOUT_SITE, - I_LAB_ABOUT_HTTP, - - I_LAB_ADD_WADS, - I_LAB_ADD_SECTIONS, - - I_LAB_SETS_NAME, - I_LAB_SETS_DESC, - I_LAB_SETS_AUTHOR, - I_LAB_SETS_BACK, - I_LAB_SETS_MUSIC, - I_LAB_SETS_TEXTURES, - I_LAB_SETS_PANELS, - I_LAB_SETS_ITEMS, - I_LAB_SETS_MONSTERS, - I_LAB_SETS_AREAS, - I_LAB_SETS_TRIGGERS, - I_LAB_SETS_SIZES, - I_LAB_SETS_WIDTH, - I_LAB_SETS_HEIGHT, - I_LAB_SETS_MAPMOVE, - I_LAB_SETS_SNAPPING, - - I_LAB_LAUNCH_TIME, - I_LAB_LAUNCH_SECS, - I_LAB_LAUNCH_SCORE, - I_LAB_LAUNCH_PATH, - I_LAB_LAUNCH_ARGS, - - I_LAB_ES_GRID, - I_LAB_ES_GRID_COLOR, - I_LAB_ES_GRID_SIZE, - I_LAB_ES_BACK, - I_LAB_ES_PREVIEW, - I_LAB_ES_MINIMAP, - I_LAB_ES_RECENT, - I_LAB_ES_LANGUAGE, - I_LAB_ES_COMPRESS, - I_LAB_ES_BACKUP, - - I_LAB_PACK_SAVE_TO, - I_LAB_PACK_MAP_NAME, - I_LAB_PACK_TEXTURES, - I_LAB_PACK_SKY, - I_LAB_PACK_MUSIC, - - I_LAB_MINI_SCALE, - - I_BTN_APPLY_PROPS, - I_BTN_OK, - I_BTN_CANCEL, - I_BTN_ADD, - I_BTN_CLOSE, - I_BTN_ADD_CLOSE, - I_BTN_TEST_AGAIN, - I_BTN_START, - I_BTN_PACK, - I_BTN_SAVE, - I_BTN_NO_SOUND, - I_BTN_TEXTURE_ADD, - I_BTN_TEXTURE_DELETE, - I_BTN_TEXTURE_EMPTY, - - I_LOAD_WAD, - I_LOAD_MAP, - I_LOAD_TEXTURES, - I_LOAD_PANELS, - I_LOAD_ITEMS, - I_LOAD_MONSTERS, - I_LOAD_AREAS, - I_LOAD_TRIGGERS, - - I_TEST_AREA_WALL, - I_TEST_AREA_WALL_STR, - I_TEST_SPAWNS_1, - I_TEST_SPAWNS_2, - I_TEST_SPAWNS, - I_TEST_NO_DM, - I_TEST_NO_DM_EX, - I_TEST_MONSTER_WALL, - I_TEST_MONSTER_WALL_STR, - - I_OPT_NO_TEXTURES, - I_OPT_DELETED_TEXTURES, - I_OPT_TOTAL_TEXTURES, - I_OPT_TEX_DELETED, - I_OPT_PANELS_OPT, - I_OPT_WALLS, - I_OPT_FORES, - I_OPT_BACKS, - I_OPT_STAIRS, - I_OPT_WATER, - I_OPT_ACID1, - I_OPT_ACID2, - I_OPT_LIFTS, - I_OPT_BLOCKMON, - I_OPT_TOTAL_PANELS, - I_OPT_PANELS_AFTER, - - I_WAD_SPECIAL_MAP, - I_WAD_SPECIAL_TEXS, - - I_FILE_FILTER_ALL, - I_FILE_FILTER_WAD, - - I_EDITOR_TITLE, - - I_LAST ); - -Const - LANGUAGE_RUSSIAN = 'Russian'; - LANGUAGE_ENGLISH = 'English'; - LANGUAGE_RUSSIAN_N = 3; - LANGUAGE_ENGLISH_N = 2; + uses g_Basic, MAPDEF; + + resourcestring + MsgNotAccessible = 'N/A'; + + MsgArrayBoolFalse = 'No'; + MsgArrayBoolTrue = 'Yes'; + + MsgArrayDirLeft = 'Left'; + MsgArrayDirRight = 'Right'; + MsgArrayDirSame = 'Don''t change'; + MsgArrayDirReversed = 'Reversed'; + + MsgArrayDirbtnLeft = 'Left'; + MsgArrayDirbtnRight = 'Right'; + MsgArrayDirbtnUp = 'Up'; + MsgArrayDirbtnDown = 'Down'; + + MsgArrayPanelWall = 'Wall'; + MsgArrayPanelBack = 'Background'; + MsgArrayPanelFront = 'Foreground'; + MsgArrayPanelDoorOpen = 'Open Door'; + MsgArrayPanelDoorClose = 'Closed Door'; + MsgArrayPanelStair = 'Step'; + MsgArrayPanelWater = 'Water'; + MsgArrayPanelAcid1 = 'Acid 1'; + MsgArrayPanelAcid2 = 'Acid 2'; + MsgArrayPanelLiftUp = 'Stream Up'; + MsgArrayPanelLiftDown = 'Stream Down'; + MsgArrayPanelLiftLeft = 'Stream Left'; + MsgArrayPanelLiftRight = 'Stream Right'; + MsgArrayPanelBlockmon = 'Monster Boundary'; + + MsgArrayFxNone = 'None'; + MsgArrayFxTeleport = 'Teleport'; + MsgArrayFxRespawn = 'Respawn'; + MsgArrayFxFire = 'Arch-Vile Fire'; + + MsgArrayItemMedkit = 'Stimpack'; + MsgArrayItemLargeMedkit = 'Medikit'; + MsgArrayItemBlackMedkit = 'Berserk Pack'; + MsgArrayItemGreenArmor = 'Green Armor'; + MsgArrayItemBlueArmor = 'Blue Armor'; + MsgArrayItemBlueSphere = 'Soulsphere'; + MsgArrayItemMegasphere = 'Megasphere'; + MsgArrayItemHazSuit = 'Envirosuit'; + MsgArrayItemOxygen = 'Scuba'; + MsgArrayItemInvulnerability = 'Invulnerability'; + MsgArrayItemChainsaw = 'Chainsaw'; + MsgArrayItemShotgun = 'Shotgun'; + MsgArrayItemDbShotgun = 'Super Shotgun'; + MsgArrayItemChaingun = 'Chaingun'; + MsgArrayItemRocketLauncher = 'Rocket Launcher'; + MsgArrayItemPlasmaRifle = 'Plasma Rifle'; + MsgArrayItemBfg = 'BFG9000'; + MsgArrayItemSuperMinigun = 'Super Chaingun'; + MsgArrayItemFlamethrower = 'Flamethrower'; + MsgArrayItemClip = 'Clip'; + MsgArrayItemAmmoBox = 'Box of Bullets'; + MsgArrayItem4Shells = '4 Shells'; + MsgArrayItem25Shells = 'Box of Shells'; + MsgArrayItem1Rocket = 'Rocket'; + MsgArrayItemRocketBox = 'Box of Rockets'; + MsgArrayItemCell = 'Energy Cell'; + MsgArrayItemLargeCell = 'Energy Cell Pack'; + MsgArrayItemFuelcan = 'Fuel Canister'; + MsgArrayItemBackpack = 'Backpack'; + MsgArrayItemKeyRed = 'Red Key'; + MsgArrayItemKeyGreen = 'Green Key'; + MsgArrayItemKeyBlue = 'Blue Key'; + MsgArrayItemBottle = 'Health Globe'; + MsgArrayItemHelmet = 'Armor Shard'; + MsgArrayItemJetpack = 'Jetpack'; + MsgArrayItemInvis = 'Invisibility'; + + MsgArrayShotPistol = 'Pistol shot'; + MsgArrayShotBullet = 'Chaingun shot'; + MsgArrayShotShotgun = 'Shotgun shot'; + MsgArrayShotSsg = 'Super Shotgun shot'; + MsgArrayShotImp = 'Imp fireball'; + MsgArrayShotPlasma = 'Blue plasma'; + MsgArrayShotSpider = 'Arachnotron plasma'; + MsgArrayShotCaco = 'Cacodemon fireball'; + MsgArrayShotBaron = 'Hell Baron projectile'; + MsgArrayShotMancub = 'Mancubus gunshot'; + MsgArrayShotRev = 'Revenant projectile'; + MsgArrayShotRocket = 'Rocket'; + MsgArrayShotBfg = 'BFG ball'; + MsgArrayShotExpl = 'Explosion'; + MsgArrayShotBfgexpl = 'BFG explosion'; + MsgArrayShotFlame = 'Flame'; + + MsgArrayMonDemon = 'Pinky'; + MsgArrayMonImp = 'Imp'; + MsgArrayMonZombie = 'Zombie'; + MsgArrayMonSergeant = 'Sergeant'; + MsgArrayMonCyber = 'Cyberdemon'; + MsgArrayMonCgun = 'Commando'; + MsgArrayMonHellBaron = 'Hell Baron'; + MsgArrayMonHellKnight = 'Hell Knight'; + MsgArrayMonCacodemon = 'Cacodemon'; + MsgArrayMonLostSoul = 'Lost Soul'; + MsgArrayMonPainElemental = 'Pain Elemental'; + MsgArrayMonMastermind = 'Spider Mastermind'; + MsgArrayMonArachnatron = 'Arachnotron'; + MsgArrayMonMancubus = 'Mancubus'; + MsgArrayMonRevenant = 'Revenant'; + MsgArrayMonArchvile = 'Arch-Vile'; + MsgArrayMonFish = 'Piranha'; + MsgArrayMonBarrel = 'Barrel'; + MsgArrayMonRobot = 'Robot'; + MsgArrayMonPrikolist = 'Prikolist'; + + MsgArrayAreaPlayerOne = 'Player 1'; + MsgArrayAreaPlayerTwo = 'Player 2'; + MsgArrayAreaDm = 'DM Spawn Point'; + MsgArrayAreaFlagRed = 'Red Flag'; + MsgArrayAreaFlagBlue = 'Blue Flag'; + MsgArrayAreaFlagDom = 'Domination Flag'; + MsgArrayAreaTeamRed = 'Red Team'; + MsgArrayAreaTeamBlue = 'Blue Team'; + + MsgArrayTrExit = 'Exit'; + MsgArrayTrTeleport = 'Teleport'; + MsgArrayTrDoorOpen = 'Open Door'; + MsgArrayTrDoorClose = 'Close Door'; + MsgArrayTrDoorSwitch = 'Door'; + MsgArrayTrDoor5Sec = 'Door (5 sec)'; + MsgArrayTrTrapClose = 'Close Trap'; + MsgArrayTrTrap = 'Trap'; + MsgArrayTrExtend = 'Extender'; + MsgArrayTrSecret = 'Secret'; + MsgArrayTrLiftUp = 'Turn stream up/left'; + MsgArrayTrLiftDown = 'Turn stream down/right'; + MsgArrayTrLiftSwitch = 'Revert stream'; + MsgArrayTrTexture = 'Change Texture'; + MsgArrayTrOn = 'Enable Trigger'; + MsgArrayTrOff = 'Disable Trigger'; + MsgArrayTrSwitch = 'Trigger Toggle'; + MsgArrayTrSound = 'Play Sound'; + MsgArrayTrSpawnMonster = 'Spawn Monster'; + MsgArrayTrSpawnItem = 'Spawn Item'; + MsgArrayTrMusic = 'Play Music'; + MsgArrayTrPush = 'Push'; + MsgArrayTrScore = 'Team Score'; + MsgArrayTrMessage = 'Message'; + MsgArrayTrDamage = 'Damage'; + MsgArrayTrHealth = 'Healer'; + MsgArrayTrShot = 'Turret'; + MsgArrayTrEffect = 'Effect'; + + MsgPropId = 'ID'; + MsgPropX = 'X'; + MsgPropY = 'Y'; + MsgPropWidth = 'Width'; + MsgPropHeight = 'Height'; + MsgPropPanelType = 'Panel Type'; + MsgPropPanelTex = 'Texture'; + MsgPropPanelAlpha = 'Transparency'; + MsgPropPanelBlend = 'Blending'; + MsgPropDmOnly = 'DM Only'; + MsgPropItemFalls = 'Falls'; + MsgPropDirection = 'Direction'; + + MsgPropTrType = 'Trigger Type'; + MsgPropTrEnabled = 'Enabled'; + MsgPropTrTexturePanel = 'Textured Panel'; + MsgPropTrActivation = 'Activation Type'; + MsgPropTrKeys = 'Keys'; + MsgPropTrD2d = 'D2D-like'; + MsgPropTrSilent = 'Silent'; + MsgPropTrCount = 'Count'; + MsgPropTrInterval = 'Interval (in ticks)'; + MsgPropTrHealth = 'Health'; + MsgPropTrNextMap = 'Next Map'; + MsgPropTrTeleportTo = 'Teleport to'; + MsgPropTrTeleportSilent = 'Silent'; + MsgPropTrTeleportDir = 'New Direction'; + MsgPropTrDoorPanel = 'Door Panel'; + MsgPropTrTrapPanel = 'Trap Panel'; + MsgPropTrExArea = 'Action Area'; + MsgPropTrExDelay = 'Delay'; + MsgPropTrExCount = 'Count'; + MsgPropTrExMonster = 'Monster ID'; + MsgPropTrExRandom = 'Random'; + MsgPropTrLiftPanel = 'Stream Panel'; + MsgPropTrTextureOnce = 'Once'; + MsgPropTrTextureAnimOnce = 'Animate Once'; + MsgPropTrSoundName = 'Sound (snd)'; + MsgPropTrSoundVolume = 'Volume'; + MsgPropTrSoundPan = 'Pan'; + MsgPropTrSoundCount = 'Loops'; + MsgPropTrSoundLocal = 'Local'; + MsgPropTrSoundSwitch = 'Switch'; + MsgPropTrFxType = 'Effect'; + MsgPropTrSpawnTo = 'Spawn at'; + MsgPropTrSpawnMax = 'Maximum'; + MsgPropTrSpawnDelay = 'Autospawn (in ticks)'; + MsgPropTrMonsterType = 'Monster'; + MsgPropTrMonsterActive = 'Active'; + MsgPropTrMonsterBehaviour = 'Behaviour'; + MsgPropTrMonsterBehaviour0 = 'Normal'; + MsgPropTrMonsterBehaviour1 = 'Killer'; + MsgPropTrMonsterBehaviour2 = 'Maniac'; + MsgPropTrMonsterBehaviour3 = 'Insane'; + MsgPropTrMonsterBehaviour4 = 'Cannibal'; + MsgPropTrMonsterBehaviour5 = 'Good'; + MsgPropTrItemType = 'Item'; + MsgPropTrMusicName = 'Music'; + MsgPropTrMusicAct = 'Action (m)'; + MsgPropTrMusicOn = 'Play'; + MsgPropTrMusicOff = 'Pause'; + MsgPropTrPushAngle = 'Angle'; + MsgPropTrPushForce = 'Force'; + MsgPropTrPushReset = 'Reset velocity'; + MsgPropTrScoreAct = 'Action (s)'; + MsgPropTrScoreAct0 = 'Add points'; + MsgPropTrScoreAct1 = 'Subtract points'; + MsgPropTrScoreAct2 = 'Team Wins'; + MsgPropTrScoreAct3 = 'Team Loses'; + MsgPropTrScoreTeam = 'Team'; + MsgPropTrScoreTeam0 = 'My'; + MsgPropTrScoreTeam1 = 'Enemy'; + MsgPropTrScoreTeam2 = 'Red'; + MsgPropTrScoreTeam3 = 'Blue'; + MsgPropTrScoreCon = 'Console message'; + MsgPropTrScoreMsg = 'Game message'; + MsgPropTrDamageValue = 'Damage'; + MsgPropTrDamageKind = 'Damage type'; + MsgPropTrDamageKind0 = 'HIT_SOME'; + MsgPropTrDamageKind3 = 'HIT_TRAP'; + MsgPropTrDamageKind4 = 'HIT_FALL'; + MsgPropTrDamageKind5 = 'HIT_WATER'; + MsgPropTrDamageKind6 = 'HIT_ACID'; + MsgPropTrDamageKind7 = 'HIT_ELECTRO'; + MsgPropTrDamageKind8 = 'HIT_FLAME'; + MsgPropTrHealthMax = 'To maximum'; + MsgPropTrShotType = 'Projectile'; + MsgPropTrShotSound = 'Shot sound'; + MsgPropTrShotAngle = 'Angle'; + MsgPropTrShotAcc = 'Spread'; + MsgPropTrShotTo = 'Auto targeting'; + MsgPropTrShotTo0 = 'None'; + MsgPropTrShotTo1 = 'Monsters'; + MsgPropTrShotTo2 = 'Players'; + MsgPropTrShotTo3 = 'Red team'; + MsgPropTrShotTo4 = 'Blue team'; + MsgPropTrShotTo5 = 'Monsters, players'; + MsgPropTrShotTo6 = 'Players, monsters'; + MsgPropTrShotAim = 'Auto-aiming mode'; + MsgPropTrShotAim0 = 'Trigger area'; + MsgPropTrShotAim1 = 'Entire map'; + MsgPropTrShotAim2 = 'Trace trigger area'; + MsgPropTrShotAim3 = 'Trace entire map'; + MsgPropTrShotAmmo = 'Ammo limit'; + MsgPropTrShotReload = 'Reload interval (in ticks)'; + MsgPropTrShotSight = 'Sight interval (in ticks)'; + MsgPropTrShotPanel = 'Indicator panel'; + MsgPropTrMessageKind = 'Message kind'; + MsgPropTrMessageKind0 = 'Console message'; + MsgPropTrMessageKind1 = 'Event message'; + MsgPropTrMessageTo = 'Send to'; + MsgPropTrMessageTo0 = 'Me'; + MsgPropTrMessageTo1 = 'My team'; + MsgPropTrMessageTo2 = 'Enemy team'; + MsgPropTrMessageTo3 = 'Red team'; + MsgPropTrMessageTo4 = 'Blue team'; + MsgPropTrMessageTo5 = 'Everyone'; + MsgPropTrMessageText = 'Message text'; + MsgPropTrMessageTime = 'Time (in ticks)'; + MsgPropTrEffectType = 'Effect type'; + MsgPropTrEffectSubtype = 'Effect subtype'; + MsgPropTrEffectColor = 'Effect color'; + MsgPropTrEffectCenter = 'Trigger center'; + MsgPropTrEffectVelx = 'Horizontal speed'; + MsgPropTrEffectVely = 'Vertical speed'; + MsgPropTrEffectSpl = 'Speed variance left'; + MsgPropTrEffectSpr = 'Speed variance right'; + MsgPropTrEffectSpu = 'Speed variance up'; + MsgPropTrEffectSpd = 'Speed variance down'; + MsgPropTrEffectParticle = 'Particle generator'; + MsgPropTrEffectAnimation = 'Animation'; + MsgPropTrEffectSliquid = 'Water splash'; + MsgPropTrEffectLliquid = 'Light colored splash'; + MsgPropTrEffectDliquid = 'Dark colored splash'; + MsgPropTrEffectBlood = 'Blood'; + MsgPropTrEffectSpark = 'Sparks'; + MsgPropTrEffectBubble = 'Bubbles'; + + MsgMsgError = 'Error'; + MsgMsgWrongTexwidth = 'Panel Width must be a multiple of Texture Width (%d)'; + MsgMsgWrongTexheight = 'Panel Height must be a multiple of Texture Height (%d)'; + MsgMsgWrongAlpha = 'Transparency must be in [0..255] interval'; + MsgMsgWrongSize = 'Width and Height must be greater than 0'; + MsgMsgWrongXy = 'X or Y coordinate hasn''t been set'; + MsgMsgTextureAlready = 'Texture "%s" already exists'; + MsgMsgResName64 = 'Resource "%s" name must not be longer than 64 chars'; + MsgMsgChooseItem = 'Select Item'; + MsgMsgChooseMonster = 'Select Monster'; + MsgMsgChooseArea = 'Select Area'; + MsgMsgChooseTexture = 'Select Texture'; + MsgMsgChooseRes = 'Resource hasn''t been selected'; + MsgMsgExit = 'Exit'; + MsgMsgExitPromt = 'Leaving so soon?'; + MsgMsgDelTexture = 'Delete the texture'; + MsgMsgDelTexturePromt = 'Delete the texture "%s" ?'; + MsgMsgDelTextureCant = 'Can''t delete texture in use. Replace it on all panels with this texture.'; + MsgMsgDelRecent = 'File does not longer exist'; + MsgMsgDelRecentPromt = 'Remove entry from recent list?'; + MsgMsgClearMap = 'New map'; + MsgMsgClearMapPromt = 'Clear the entire map?'; + MsgMsgDeleteMap = 'Delete the map'; + MsgMsgDeleteMapPromt = 'Delete the map "%s" from "%s" ?'; + MsgMsgMapDeleted = 'Map is deleted'; + MsgMsgMapDeletedPromt = 'Map "%s" is deleted'; + MsgMsgReopenMapPromt = 'Reopen this map?'; + MsgMsgExecError = 'Game start error'; + MsgMsgSoundError = 'Can''t play sound'; + MsgMsgWadError = 'Can''t open WAD: %s'; + MsgMsgResError = 'Can''t read resource: %s:%s\%s'; + MsgMsgPacked = 'Map "%s" with resources saved to "%s"'; + MsgMsgMapExists = 'Map "%s" already exists. Overwrite?'; + MsgMsgSaveMap = 'Save the map'; + + MsgHintTeleport = 'Choose destination of Teleport'; + MsgHintSpawn = 'Choose Spawn point'; + MsgHintPanelDoor = 'Choose Door'; + MsgHintPanelTexture = 'Choose textured Panel'; + MsgHintPanelShot = 'Choose textured shot indicator Panel'; + MsgHintPanelLift = 'Choose Stream Panel'; + MsgHintMonster = 'Choose Monster'; + MsgHintExtArea = 'Specify action Area'; + MsgHintWidth = 'Width: %d'; + MsgHintHeight = 'Height: %d'; + + MsgMenuFile = 'File'; + MsgMenuFileNew = 'New'; + MsgMenuFileOpen = 'Open...'; + MsgMenuFileSave = 'Save'; + MsgMenuFileSaveAs = 'Save As...'; + MsgMenuFileOpenWad = 'Select Map...'; + MsgMenuFileReopen = 'Revert to Saved'; + MsgMenuFileSaveMini = 'Save Minimap...'; + MsgMenuFileDelete = 'Delete from WAD...'; + MsgMenuFilePackMap = 'Pack to WAD...'; + MsgMenuFileExit = 'Exit'; + + MsgMenuEdit = 'Edit'; + MsgMenuEditUndo = 'Undo'; + MsgMenuEditCopy = 'Copy'; + MsgMenuEditCut = 'Cut'; + MsgMenuEditPaste = 'Paste'; + MsgMenuEditSelectAll = 'Select All'; + MsgMenuEditToFore = 'Bring to Front'; + MsgMenuEditToBack = 'Send to Back'; + + MsgMenuTools = 'Tools'; + MsgMenuToolsSnapGrid = 'Snap to Grid'; + MsgMenuToolsMinimap = 'Show Minimap'; + MsgMenuToolsStepGrid = 'Switch Grid Granularity'; + MsgMenuToolsShowEdges = 'Show Map Bounds'; + MsgMenuToolsLayers = 'Layers'; + + MsgMenuServ = 'Service'; + MsgMenuServTest = 'Analyse Map...'; + MsgMenuServOpt = 'Optimize Map...'; + MsgMenuServPreview = 'Preview Mode'; + MsgMenuServLaunch = 'Run Test'; + + MsgMenuSets = 'Settings'; + MsgMenuSetsMap = 'Map Properties...'; + MsgMenuSetsEditor = 'Preferences...'; + MsgMenuSetsLaunch = 'In-game test settings'; + + MsgMenuHelp = 'Help'; + MsgMenuHelpAbout = 'About'; + + MsgMenuLayerBack = '1. Background'; + MsgMenuLayerWall = '2. Walls'; + MsgMenuLayerFore = '3. Foreground'; + MsgMenuLayerStair = '4. Steps'; + MsgMenuLayerWater = '5. Liquids'; + MsgMenuLayerItem = '6. Items'; + MsgMenuLayerMonster = '7. Monsters'; + MsgMenuLayerArea = '8. Areas'; + MsgMenuLayerTrigger = '9. Triggers'; + + MsgMenuTbNew = 'New Map'; + MsgMenuTbOpen = 'Open Map'; + MsgMenuTbSave = 'Save Map'; + MsgMenuTbOpenWad = 'Open another Map from same WAD'; + MsgMenuTbMinimap = 'Show Mini-map'; + MsgMenuTbLayers = 'Show/Hide Objects'; + MsgMenuTbGrid = 'Grid On/Off'; + MsgMenuTbGridStep = 'Switch Grid step'; + MsgMenuTbLaunch = 'Run Test'; + + MsgMenuLaunchSets = 'Settings...'; + + MsgCapFxType = 'Select Effect type'; + MsgCapMonsterType = 'Select Monster type'; + MsgCapItemType = 'Select Item type'; + MsgCapAbout = 'About Map Editor'; + MsgCapAct = 'Activation type'; + MsgCapAddSky = 'Select Sky Texture'; + MsgCapAddSound = 'Select Sound/Music'; + MsgCapAddTexture = 'Select Texture'; + MsgCapKeys = 'Keys'; + MsgCapTest = 'Analyse Map'; + MsgCapOpt = 'Optimize Map'; + MsgCapSets = 'Map Properties'; + MsgCapLaunch = 'In-game test Settings'; + MsgCapEs = 'Editor Preferences'; + MsgCapPack = 'Pack Map'; + MsgCapSave = 'Save Map'; + MsgCapMini = 'Save Minimap'; + MsgCapSelect = 'Select Map'; + MsgCapOpen = 'Open Map'; + MsgCapRemove = 'Remove Map'; + MsgCapTexture = 'Texture: %dx%d'; + MsgCapAnimation = 'Animation: %dx%d, %d frames'; + MsgCapStatSelected = 'Selected objects: %d'; + + MsgCtrlPropKey = 'Property'; + MsgCtrlPropValue = 'Value'; + + MsgCtrlPanels = 'Panels'; + MsgCtrlItems = 'Items'; + MsgCtrlMonsters = 'Monsters'; + MsgCtrlAreas = 'Areas'; + MsgCtrlTriggers = 'Triggers'; + + MsgCtrlListTexture = 'Texture List'; + MsgCtrlListItem = 'Item List'; + MsgCtrlListMonster = 'Monster List'; + MsgCtrlListArea = 'Area List'; + MsgCtrlListTrigger = 'Trigger List'; + MsgCtrlListActive = 'Activation Type'; + MsgCtrlListKeys = 'Keys Needed'; + + MsgCtrlPreview = 'Texture Preview'; + MsgCtrlItemDm = 'DM Only'; + MsgCtrlItemFalls = 'Falls'; + MsgCtrlLeft = 'Left'; + MsgCtrlRight = 'Right'; + + MsgCtrlActPlayerClose = 'Player Collides'; + MsgCtrlActMonsterClose = 'Monster Collides'; + MsgCtrlActPlayerPress = 'Player Pressed'; + MsgCtrlActMonsterPress = 'Monster Pressed'; + MsgCtrlActShot = 'Shot'; + MsgCtrlActNoMonster = 'No Monsters'; + + MsgCtrlKeysRed = 'Red Key'; + MsgCtrlKeysGreen = 'Green Key'; + MsgCtrlKeysBlue = 'Blue Key'; + MsgCtrlKeysTeamRed = 'Red Team'; + MsgCtrlKeysTeamBlue = 'Blue Team'; + + MsgCtrlOptGb = 'Optimization'; + MsgCtrlOptTexture = 'Texture Optimization'; + MsgCtrlOptPanel = 'Panel Optimization'; + MsgCtrlOptWall = 'Walls'; + MsgCtrlOptFore = 'Foreground'; + MsgCtrlOptBack = 'Background'; + MsgCtrlOptStair = 'Steps'; + MsgCtrlOptWater = 'Water'; + MsgCtrlOptAcid1 = 'Acid 1'; + MsgCtrlOptAcid2 = 'Acid 2'; + MsgCtrlOptLift = 'Streams'; + MsgCtrlOptBlockmon = 'Monster Boundary'; + MsgCtrlOptDescTexture = 'Deletes unused textures from texture list.'; + MsgCtrlOptDescPanel = 'Merges nearby panels of same type. Increases game performance.'; + MsgCtrlSetsStats = 'Statistics:'; + MsgCtrlSetsSizes = 'Map Size:'; + + MsgCtrlLaunchDm = 'Deathmatch'; + MsgCtrlLaunchTdm = 'Team Deathmatch'; + MsgCtrlLaunchCtf = 'Capture the Flag'; + MsgCtrlLaunchCoop = 'Cooperative'; + MsgCtrlLaunch2p = 'Two Players'; + MsgCtrlLaunchFf = 'Friendly Fire'; + MsgCtrlLaunchExit = 'Enable Exit'; + MsgCtrlLaunchWeapons = 'Weapons Stay'; + MsgCtrlLaunchMonsters = 'Enable Monsters'; + MsgCtrlLaunchClose = 'Close the game after exiting the map'; + MsgCtrlLaunchOpen = 'Select Doom 2D: Forever executable'; + + MsgCtrlEsGrid = 'Show Grid'; + MsgCtrlEsTexture = 'Show Panel Texture'; + MsgCtrlEsPanelSize = 'Show Panel Size'; + MsgCtrlEsCheckerboard = 'Use Checkerboard'; + + MsgCtrlPackTextures = 'Textures'; + MsgCtrlPackSky = 'Sky'; + MsgCtrlPackMusic = 'Music'; + MsgCtrlPackAdd = 'Don''t overwrite WAD'; + MsgCtrlPackNonStd = 'Non-standard Resources only'; + + MsgLabTexWidth = 'Texture Width:'; + MsgLabTexHeight = 'Texture Height:'; + + MsgLabSpectrum = 'Show the Spectrum'; + + MsgLabAboutVer = 'Version 2.1.5'; + MsgLabAboutAuthor = 'Author: rs.falcon'; + MsgLabAboutAuthor2 = 'Additions: Pss'; + MsgLabAboutMail = 'rmw.falcon@mail.ru'; + MsgLabAboutMail2 = 'pssxx@mail.ru'; + MsgLabAboutSite = 'Doom 2D: Forever Web-site'; + MsgLabAboutHttp = 'www.doom2d.org'; + + MsgLabAddWads = 'WAD Files:'; + MsgLabAddSections = 'WAD Sections:'; + + MsgLabSetsName = 'Map Name:'; + MsgLabSetsDesc = 'Map Description'; + MsgLabSetsAuthor = 'Author:'; + MsgLabSetsBack = 'Background/Sky:'; + MsgLabSetsMusic = 'Music:'; + MsgLabSetsTextures = 'Textures:'; + MsgLabSetsPanels = 'Panels:'; + MsgLabSetsItems = 'Items:'; + MsgLabSetsMonsters = 'Monsters:'; + MsgLabSetsAreas = 'Areas:'; + MsgLabSetsTriggers = 'Triggers:'; + MsgLabSetsSizes = 'Current:'; + MsgLabSetsWidth = 'Width:'; + MsgLabSetsHeight = 'Height:'; + MsgLabSetsMapmove = 'Direction to shift map objects:'; + MsgLabSetsSnapping = 'Preserve snapping'; + + MsgLabLaunchTime = 'Time Limit:'; + MsgLabLaunchSecs = 'seconds'; + MsgLabLaunchScore = 'Score Limit:'; + MsgLabLaunchPath = 'Path to Doom2DF.exe:'; + MsgLabLaunchArgs = 'Launch Arguments:'; + + MsgLabEsGrid = 'Grid Step:'; + MsgLabEsGridColor = 'Grid Color:'; + MsgLabEsGridSize = 'Grid Dot Size:'; + MsgLabEsBack = 'Background Color:'; + MsgLabEsPreview = 'Texture Preview Background Color:'; + MsgLabEsMinimap = 'Mini-map Scale:'; + MsgLabEsRecent = 'Recent Maps List Contains:'; + MsgLabEsLanguage = 'Language:'; + MsgLabEsCompress = 'Compress archive when save'; + MsgLabEsBackup = 'Make backup before save'; + + MsgLabPackSaveTo = 'Save to:'; + MsgLabPackMapName = 'Map Resource Name:'; + MsgLabPackTextures = 'Texture Section:'; + MsgLabPackSky = 'Sky Section:'; + MsgLabPackMusic = 'Music Section:'; + + MsgLabMiniScale = 'Scale:'; + + MsgBtnApplyProps = 'Apply Properties'; + MsgBtnOk = 'OK'; + MsgBtnCancel = 'Cancel'; + MsgBtnAdd = 'Add'; + MsgBtnClose = 'Close'; + MsgBtnAddClose = 'Add and Close'; + MsgBtnTestAgain = 'Check'; + MsgBtnStart = 'Run'; + MsgBtnPack = 'Pack'; + MsgBtnSave = 'Save'; + MsgBtnNoSound = 'No sound'; + MsgBtnTextureAdd = 'Add texture to the list'; + MsgBtnTextureDelete = 'Delete texture from the list'; + MsgBtnTextureEmpty = 'Deselect texture'; + + MsgLoadWad = 'Reading WAD'; + MsgLoadMap = 'Loading Map'; + MsgLoadTextures = 'Reading Textures'; + MsgLoadPanels = 'Reading Panels'; + MsgLoadItems = 'Reading Items'; + MsgLoadMonsters = 'Reading Monsters'; + MsgLoadAreas = 'Reading Areas'; + MsgLoadTriggers = 'Reading Triggers'; + + MsgTestAreaWall = 'Player collides with the wall and will be stuck.'; + MsgTestAreaWallStr = 'Area #%d collides with Map (%d:%d)'; + MsgTestSpawns1 = 'There are several spawn points for First Player on the map'; + MsgTestSpawns2 = 'There are several spawn points for Second Player on the map'; + MsgTestSpawns = 'There are several spawn points on the map. Random one will be used.'; + MsgTestNoDm = 'There are no DM spawn points on the map'; + MsgTestNoDmEx = 'There are no DM spawn points on the map. Only "Single Player" mode available.'; + MsgTestMonsterWall = 'Monster collides with the wall and will be stuck.'; + MsgTestMonsterWallStr = 'Monster #%d collides with a map (%d:%d)'; + + MsgOptNoTextures = 'Texture list is empty'; + MsgOptDeletedTextures = 'Deleted Textures:'; + MsgOptTotalTextures = 'Textures Total:'; + MsgOptTexDeleted = 'Textures Deleted:'; + MsgOptPanelsOpt = 'Panels Optimized:'; + MsgOptWalls = 'Walls Optimization...'; + MsgOptFores = 'Foreground Optimization...'; + MsgOptBacks = 'Background Optimization...'; + MsgOptStairs = 'Steps Optimization...'; + MsgOptWater = 'Water Optimization...'; + MsgOptAcid1 = 'Acid 1 Optimization...'; + MsgOptAcid2 = 'Acid 2 Optimization...'; + MsgOptLifts = 'Streams Optimization...'; + MsgOptBlockmon = 'Monster Boundaries Optimization...'; + MsgOptTotalPanels = 'Panels Total:'; + MsgOptPanelsAfter = 'Panels after Optimization:'; + + MsgWadSpecialMap = ''; + MsgWadSpecialTexs = ''; + + MsgFileFilterAll = 'Doom 2D: Forever Maps (*.dfz, *.dfzip, *.zip, *.wad)|*.dfz;*.dfzip;*.zip;*.wad|Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*'; + MsgFileFilterWad = 'Doom 2D: Forever Maps (*.dfz)|*.dfz|Doom 2D: Forever Maps (*.dfzip)|*.dfzip|Doom 2D: Forever Maps (*.zip)|*.zip|Doom 2D: Forever Maps (*.wad)|*.wad|All Files (*.*)|*.*'; + + MsgEditorTitle = 'Doom 2D: Forever Map Editor'; Var - _lc: Array [TStrings_Locale] of String; // for the GUI (in UTF-8) - _glc: Array [TStrings_Locale] of String; // for GL text (in CP1251) - BoolNames: Array [False..True] of String; DirNames: Array [D_LEFT..D_RIGHT] of String; DirNamesAdv: Array [0..3] of String; @@ -646,1367 +633,184 @@ Var AreaNames: Array [AREA_PLAYERPOINT1..AREA_BLUETEAMPOINT] of String; TriggerNames: Array [TRIGGER_EXIT..TRIGGER_MAX] of String; - -procedure g_Language_Load(fileName: String); procedure g_Language_Set(lang: String); -procedure g_Language_Dump(fileName: String); Implementation Uses + gettext, SysUtils, e_log, f_main, f_about, f_activationtype, f_addresource_sky, f_addresource_sound, f_addresource_texture, f_choosetype, f_keys, f_mapcheck, f_mapoptions, f_mapoptimization, f_options, f_packmap, f_savemap, f_saveminimap, f_selectmap, Forms, utils; -Const - g_lang_default: Array [TStrings_Locale] of Array [1..3] of String = ( - ('NOT ACCESSIBLE', 'N/A', - 'Н/Д'), - - ('ARRAY BOOL FALSE', 'No', - 'Нет'), - ('ARRAY BOOL TRUE', 'Yes', - 'Да'), - - ('ARRAY DIR LEFT', 'Left', - 'Влево'), - ('ARRAY DIR RIGHT', 'Right', - 'Вправо'), - ('ARRAY DIR SAME', 'Don''t change', - 'Не менять'), - ('ARRAY DIR REVERSED', 'Reversed', - 'Обратное'), - - ('ARRAY DIRBTN LEFT', 'Left', - 'Влево'), - ('ARRAY DIRBTN RIGHT', 'Right', - 'Вправо'), - ('ARRAY DIRBTN UP', 'Up', - 'Вверх'), - ('ARRAY DIRBTN DOWN', 'Down', - 'Вниз'), - - ('ARRAY PANEL WALL', 'Wall', - 'Стена'), - ('ARRAY PANEL BACK', 'Background', - 'Фон'), - ('ARRAY PANEL FRONT', 'Foreground', - 'Передний план'), - ('ARRAY PANEL DOOR OPEN', 'Open Door', - 'Открытая дверь'), - ('ARRAY PANEL DOOR CLOSE', 'Closed Door', - 'Закрытая дверь'), - ('ARRAY PANEL STAIR', 'Step', - 'Ступень'), - ('ARRAY PANEL WATER', 'Water', - 'Вода'), - ('ARRAY PANEL ACID 1', 'Acid 1', - 'Кислота 1'), - ('ARRAY PANEL ACID 2', 'Acid 2', - 'Кислота 2'), - ('ARRAY PANEL LIFT UP', 'Stream Up', - 'Лифт вверх'), - ('ARRAY PANEL LIFT DOWN', 'Stream Down', - 'Лифт вниз'), - ('ARRAY PANEL LIFT LEFT', 'Stream Left', - 'Поток влево'), - ('ARRAY PANEL LIFT RIGHT', 'Stream Right', - 'Поток вправо'), - ('ARRAY PANEL BLOCKMON', 'Monster Boundary', - 'Блокиратор монстров'), - - ('ARRAY FX NONE', 'None', - 'Нет'), - ('ARRAY FX TELEPORT', 'Teleport', - 'Телепортация'), - ('ARRAY FX RESPAWN', 'Respawn', - 'Респаун'), - ('ARRAY FX FIRE', 'Arch-Vile Fire', - 'Огонь колдуна'), - - ('ARRAY ITEM MEDKIT', 'Stimpack', - 'Аптечка'), - ('ARRAY ITEM LARGE MEDKIT', 'Medikit', - 'Большая аптечка'), - ('ARRAY ITEM BLACK MEDKIT', 'Berserk Pack', - 'Чёрная аптечка'), - ('ARRAY ITEM GREEN ARMOR', 'Green Armor', - 'Зелёная броня'), - ('ARRAY ITEM BLUE ARMOR', 'Blue Armor', - 'Синяя броня'), - ('ARRAY ITEM BLUE SPHERE', 'Soulsphere', - 'Шарик 100%'), - ('ARRAY ITEM MEGASPHERE', 'Megasphere', - 'Мегасфера'), - ('ARRAY ITEM HAZ SUIT', 'Envirosuit', - 'Защитный костюм'), - ('ARRAY ITEM OXYGEN', 'Scuba', - 'Акваланг'), - ('ARRAY ITEM INVULNERABILITY', 'Invulnerability', - 'Неуязвимость'), - ('ARRAY ITEM CHAINSAW', 'Chainsaw', - 'Бензопила'), - ('ARRAY ITEM SHOTGUN', 'Shotgun', - 'Ружьё'), - ('ARRAY ITEM DB SHOTGUN', 'Super Shotgun', - 'Двустволка'), - ('ARRAY ITEM CHAINGUN', 'Chaingun', - 'Пулемёт'), - ('ARRAY ITEM ROCKET LAUNCHER', 'Rocket Launcher', - 'Ракетница'), - ('ARRAY ITEM PLASMA RIFLE', 'Plasma Rifle', - 'Плазмаган'), - ('ARRAY ITEM BFG', 'BFG9000', - 'BFG9000'), - ('ARRAY ITEM SUPER MINIGUN', 'Super Chaingun', - 'Суперпулемёт'), - ('ARRAY ITEM FLAMETHROWER', 'Flamethrower', - 'Огнемёт'), - ('ARRAY ITEM CLIP', 'Clip', - 'Патроны'), - ('ARRAY ITEM AMMO BOX', 'Box of Bullets', - 'Ящик патронов'), - ('ARRAY ITEM 4 SHELLS', '4 Shells', - '4 гильзы'), - ('ARRAY ITEM 25 SHELLS', 'Box of Shells', - '25 гильз'), - ('ARRAY ITEM 1 ROCKET', 'Rocket', - '1 ракета'), - ('ARRAY ITEM ROCKET BOX', 'Box of Rockets', - '5 ракет'), - ('ARRAY ITEM CELL', 'Energy Cell', - 'Батарейка'), - ('ARRAY ITEM LARGE CELL', 'Energy Cell Pack', - 'Батарея'), - ('ARRAY ITEM FUELCAN', 'Fuel Canister', - 'Канистра'), - ('ARRAY ITEM BACKPACK', 'Backpack', - 'Рюкзак'), - ('ARRAY ITEM KEY RED', 'Red Key', - 'Красный ключ'), - ('ARRAY ITEM KEY GREEN', 'Green Key', - 'Зелёный ключ'), - ('ARRAY ITEM KEY BLUE', 'Blue Key', - 'Синий ключ'), - ('ARRAY ITEM BOTTLE', 'Health Globe', - 'Живая вода'), - ('ARRAY ITEM HELMET', 'Armor Shard', - 'Бронешлем'), - ('ARRAY ITEM JETPACK', 'Jetpack', - 'Реактивный ранец'), - ('ARRAY ITEM INVIS', 'Invisibility', - 'Невидимость'), - - ('ARRAY SHOT PISTOL', 'Pistol shot', - 'Выстрел пистолета'), - ('ARRAY SHOT BULLET', 'Chaingun shot', - 'Выстрел пулемёта'), - ('ARRAY SHOT SHOTGUN', 'Shotgun shot', - 'Выстрел ружья'), - ('ARRAY SHOT SSG', 'Super Shotgun shot', - 'Выстрел двустволки'), - ('ARRAY SHOT IMP', 'Imp fireball', - 'Шар беса'), - ('ARRAY SHOT PLASMA', 'Blue plasma', - 'Синяя плазма'), - ('ARRAY SHOT SPIDER', 'Arachnotron plasma', - 'Плазма арахнотрона'), - ('ARRAY SHOT CACO', 'Cacodemon fireball', - 'Шар какодемона'), - ('ARRAY SHOT BARON', 'Hell Baron projectile', - 'Выстрел барона ада'), - ('ARRAY SHOT MANCUB', 'Mancubus gunshot', - 'Снаряд манкубуса'), - ('ARRAY SHOT REV', 'Revenant projectile', - 'Снаряд скелета'), - ('ARRAY SHOT ROCKET', 'Rocket', - 'Ракета'), - ('ARRAY SHOT BFG', 'BFG ball', - 'Шар BFG'), - ('ARRAY SHOT EXPL', 'Explosion', - 'Взрыв'), - ('ARRAY SHOT BFGEXPL', 'BFG explosion', - 'Взрыв BFG'), - ('ARRAY SHOT FLAME', 'Flame', - 'Огонь'), - - ('ARRAY MON DEMON', 'Pinky', - 'Демон'), - ('ARRAY MON IMP', 'Imp', - 'Бес'), - ('ARRAY MON ZOMBIE', 'Zombie', - 'Зомби'), - ('ARRAY MON SERGEANT', 'Sergeant', - 'Сержант'), - ('ARRAY MON CYBER', 'Cyberdemon', - 'Кибердемон'), - ('ARRAY MON CGUN', 'Commando', - 'Пулемётчик'), - ('ARRAY MON HELL BARON', 'Hell Baron', - 'Барон ада'), - ('ARRAY MON HELL KNIGHT', 'Hell Knight', - 'Рыцарь ада'), - ('ARRAY MON CACODEMON', 'Cacodemon', - 'Какодемон'), - ('ARRAY MON LOST SOUL', 'Lost Soul', - 'Огненный череп'), - ('ARRAY MON PAIN ELEMENTAL', 'Pain Elemental', - 'Авиабаза'), - ('ARRAY MON MASTERMIND', 'Spider Mastermind', - 'Большой паук'), - ('ARRAY MON ARACHNATRON', 'Arachnotron', - 'Арахнотрон'), - ('ARRAY MON MANCUBUS', 'Mancubus', - 'Манкубус'), - ('ARRAY MON REVENANT', 'Revenant', - 'Скелет'), - ('ARRAY MON ARCHVILE', 'Arch-Vile', - 'Колдун'), - ('ARRAY MON FISH', 'Piranha', - 'Рыба'), - ('ARRAY MON BARREL', 'Barrel', - 'Бочка'), - ('ARRAY MON ROBOT', 'Robot', - 'Робот'), - ('ARRAY MON PRIKOLIST', 'Prikolist', - 'Приколист'), - - ('ARRAY AREA PLAYER ONE', 'Player 1', - 'Первый игрок'), - ('ARRAY AREA PLAYER TWO', 'Player 2', - 'Второй игрок'), - ('ARRAY AREA DM', 'DM Spawn Point', - 'Точка DM'), - ('ARRAY AREA FLAG RED', 'Red Flag', - 'Красный флаг'), - ('ARRAY AREA FLAG BLUE', 'Blue Flag', - 'Синий флаг'), - ('ARRAY AREA FLAG DOM', 'Domination Flag', - 'DOM флаг'), - ('ARRAY AREA TEAM RED', 'Red Team', - 'Красная команда'), - ('ARRAY AREA TEAM BLUE', 'Blue Team', - 'Синяя команда'), - - ('ARRAY TR EXIT', 'Exit', - 'Выход'), - ('ARRAY TR TELEPORT', 'Teleport', - 'Телепортация'), - ('ARRAY TR DOOR OPEN', 'Open Door', - 'Открыть дверь'), - ('ARRAY TR DOOR CLOSE', 'Close Door', - 'Закрыть дверь'), - ('ARRAY TR DOOR SWITCH', 'Door', - 'Дверь'), - ('ARRAY TR DOOR 5 SEC', 'Door (5 sec)', - 'Дверь (5 секунд)'), - ('ARRAY TR TRAP CLOSE', 'Close Trap', - 'Закрыть ловушку'), - ('ARRAY TR TRAP', 'Trap', - 'Ловушка'), - ('ARRAY TR EXTEND', 'Extender', - 'Расширитель'), - ('ARRAY TR SECRET', 'Secret', - 'Секрет'), - ('ARRAY TR LIFT UP', 'Turn stream up/left', - 'Лифт вверх/поток влево'), - ('ARRAY TR LIFT DOWN', 'Turn stream down/right', - 'Лифт вниз/поток вправо'), - ('ARRAY TR LIFT SWITCH', 'Revert stream', - 'Лифт'), - ('ARRAY TR TEXTURE', 'Change Texture', - 'Смена текстуры'), - ('ARRAY TR ON', 'Enable Trigger', - 'Включить триггер'), - ('ARRAY TR OFF', 'Disable Trigger', - 'Выключить триггер'), - ('ARRAY TR SWITCH', 'Trigger Toggle', - 'Переключить триггер'), - ('ARRAY TR SOUND', 'Play Sound', - 'Звук'), - ('ARRAY TR SPAWN MONSTER', 'Spawn Monster', - 'Создать монстра'), - ('ARRAY TR SPAWN ITEM', 'Spawn Item', - 'Создать предмет'), - ('ARRAY TR MUSIC', 'Play Music', - 'Музыка'), - ('ARRAY TR PUSH', 'Push', - 'Ускорение'), - ('ARRAY TR SCORE', 'Team Score', - 'Начисление очков'), - ('ARRAY TR MESSAGE', 'Message', - 'Сообщение'), - ('ARRAY TR DAMAGE', 'Damage', - 'Урон'), - ('ARRAY TR HEALTH', 'Healer', - 'Оздоровитель'), - ('ARRAY TR SHOT', 'Turret', - 'Турель'), - ('ARRAY TR EFFECT', 'Effect', - 'Эффект'), - - ('PROP ID', 'ID', - 'ID'), - ('PROP X', 'X', - 'X'), - ('PROP Y', 'Y', - 'Y'), - ('PROP WIDTH', 'Width', - 'Ширина'), - ('PROP HEIGHT', 'Height', - 'Высота'), - ('PROP PANEL TYPE', 'Panel Type', - 'Тип панели'), - ('PROP PANEL TEX', 'Texture', - 'Текстура'), - ('PROP PANEL ALPHA', 'Transparency', - 'Прозрачность'), - ('PROP PANEL BLEND', 'Blending', - 'Смешивание'), - ('PROP DM ONLY', 'DM Only', - 'Только в DM'), - ('PROP ITEM FALLS', 'Falls', - 'Падает'), - ('PROP DIRECTION', 'Direction', - 'Направление'), - - ('PROP TR TYPE', 'Trigger Type', - 'Тип триггера'), - ('PROP TR ENABLED', 'Enabled', - 'Включён'), - ('PROP TR TEXTURE PANEL', 'Textured Panel', - 'Панель с текстурой'), - ('PROP TR ACTIVATION', 'Activation Type', - 'Тип активации'), - ('PROP TR KEYS', 'Keys', - 'Ключи'), - ('PROP TR D2D', 'D2D-like', - 'Как в D2D'), - ('PROP TR SILENT', 'Silent', - 'Без звука'), - ('PROP TR COUNT', 'Count', - 'Количество'), - ('PROP TR INTERVAL', 'Interval (in ticks)', - 'Интервал (в тиках)'), - ('PROP TR HEALTH', 'Health', - 'Здоровье'), - ('PROP TR NEXT MAP', 'Next Map', - 'След. карта'), - ('PROP TR TELEPORT TO', 'Teleport to', - 'Точка телепорта'), - ('PROP TR TELEPORT SILENT', 'Silent', - 'Тихий телепорт'), - ('PROP TR TELEPORT DIR', 'New Direction', - 'Направление после'), - ('PROP TR DOOR PANEL', 'Door Panel', - 'Панель двери'), - ('PROP TR TRAP PANEL', 'Trap Panel', - 'Панель ловушки'), - ('PROP TR EX AREA', 'Action Area', - 'Область воздействия'), - ('PROP TR EX DELAY', 'Delay', - 'Задержка'), - ('PROP TR EX COUNT', 'Count', - 'Счётчик'), - ('PROP TR EX MONSTER', 'Monster ID', - 'ID монстра'), - ('PROP TR EX RANDOM', 'Random', - 'Случайный'), - ('PROP TR LIFT PANEL', 'Stream Panel', - 'Панель лифта'), - ('PROP TR TEXTURE ONCE', 'Once', - 'Один раз'), - ('PROP TR TEXTURE ANIM ONCE', 'Animate Once', - 'Аним. один раз'), - ('PROP TR SOUND NAME', 'Sound (snd)', - 'Звук (snd)'), - ('PROP TR SOUND VOLUME', 'Volume', - 'Громкость'), - ('PROP TR SOUND PAN', 'Pan', - 'Стерео'), - ('PROP TR SOUND COUNT', 'Loops', - 'Играть раз'), - ('PROP TR SOUND LOCAL', 'Local', - 'Локальный'), - ('PROP TR SOUND SWITCH', 'Switch', - 'Переключение'), - ('PROP TR FX TYPE', 'Effect', - 'Эффект'), - ('PROP TR SPAWN TO', 'Spawn at', - 'Точка появления'), - ('PROP TR SPAWN MAX', 'Maximum', - 'Максимум'), - ('PROP TR SPAWN DELAY', 'Autospawn (in ticks)', - 'Автоспаун (в тиках)'), - ('PROP TR MONSTER TYPE', 'Monster', - 'Тип монстра'), - ('PROP TR MONSTER ACTIVE', 'Active', - 'Активен'), - ('PROP TR MONSTER BEHAVIOUR', 'Behaviour', - 'Поведение'), - ('PROP TR MONSTER BEHAVIOUR 0', 'Normal', - 'Обычное'), - ('PROP TR MONSTER BEHAVIOUR 1', 'Killer', - 'Убийца'), - ('PROP TR MONSTER BEHAVIOUR 2', 'Maniac', - 'Маньяк'), - ('PROP TR MONSTER BEHAVIOUR 3', 'Insane', - 'Поехавший'), - ('PROP TR MONSTER BEHAVIOUR 4', 'Cannibal', - 'Каннибал'), - ('PROP TR MONSTER BEHAVIOUR 5', 'Good', - 'Добрый'), - ('PROP TR ITEM TYPE', 'Item', - 'Тип предмета'), - ('PROP TR MUSIC NAME', 'Music', - 'Музыка'), - ('PROP TR MUSIC ACT', 'Action (m)', - 'Действие (m)'), - ('PROP TR MUSIC ON', 'Play', - 'Включить'), - ('PROP TR MUSIC OFF', 'Pause', - 'Выключить'), - ('PROP TR PUSH ANGLE', 'Angle', - 'Угол'), - ('PROP TR PUSH FORCE', 'Force', - 'Сила'), - ('PROP TR PUSH RESET', 'Reset velocity', - 'Сбрасывать скорость'), - ('PROP TR SCORE ACT', 'Action (s)', - 'Действие (s)'), - ('PROP TR SCORE ACT 0', 'Add points', - 'Прибавить очки'), - ('PROP TR SCORE ACT 1', 'Subtract points', - 'Отнять очки'), - ('PROP TR SCORE ACT 2', 'Team Wins', - 'Выигрыш'), - ('PROP TR SCORE ACT 3', 'Team Loses', - 'Проигрыш'), - ('PROP TR SCORE TEAM', 'Team', - 'Команда'), - ('PROP TR SCORE TEAM 0', 'My', - 'Своя'), - ('PROP TR SCORE TEAM 1', 'Enemy', - 'Соперника'), - ('PROP TR SCORE TEAM 2', 'Red', - 'Красная'), - ('PROP TR SCORE TEAM 3', 'Blue', - 'Синяя'), - ('PROP TR SCORE CON', 'Console message', - 'Сообщение в консоль'), - ('PROP TR SCORE MSG', 'Game message', - 'Сообщение в игру'), - ('PROP TR DAMAGE VALUE', 'Damage', - 'Ущерб'), - ('PROP TR DAMAGE KIND', 'Damage type', - 'Тип урона'), - ('PROP TR DAMAGE KIND 0', 'HIT_SOME', - 'HIT_SOME'), - ('PROP TR DAMAGE KIND 3', 'HIT_TRAP', - 'HIT_TRAP'), - ('PROP TR DAMAGE KIND 4', 'HIT_FALL', - 'HIT_FALL'), - ('PROP TR DAMAGE KIND 5', 'HIT_WATER', - 'HIT_WATER'), - ('PROP TR DAMAGE KIND 6', 'HIT_ACID', - 'HIT_ACID'), - ('PROP TR DAMAGE KIND 7', 'HIT_ELECTRO', - 'HIT_ELECTRO'), - ('PROP TR DAMAGE KIND 8', 'HIT_FLAME', - 'HIT_FLAME'), - ('PROP TR HEALTH MAX', 'To maximum', - 'До максимума'), - ('PROP TR SHOT TYPE', 'Projectile', - 'Снаряд'), - ('PROP TR SHOT SOUND', 'Shot sound', - 'Звук выстрела'), - ('PROP TR SHOT ANGLE', 'Angle', - 'Угол'), - ('PROP TR SHOT ACC', 'Spread', - 'Разброс'), - ('PROP TR SHOT TO', 'Auto targeting', - 'Автонаведение'), - ('PROP TR SHOT TO 0', 'None', - 'Нет'), - ('PROP TR SHOT TO 1', 'Monsters', - 'Монстры'), - ('PROP TR SHOT TO 2', 'Players', - 'Игроки'), - ('PROP TR SHOT TO 3', 'Red team', - 'Красная команда'), - ('PROP TR SHOT TO 4', 'Blue team', - 'Синяя команда'), - ('PROP TR SHOT TO 5', 'Monsters, players', - 'Монстры, игроки'), - ('PROP TR SHOT TO 6', 'Players, monsters', - 'Игроки, монстры'), - ('PROP TR SHOT AIM', 'Auto-aiming mode', - 'Режим автонаведения'), - ('PROP TR SHOT AIM 0', 'Trigger area', - 'Область триггера'), - ('PROP TR SHOT AIM 1', 'Entire map', - 'По всей карте'), - ('PROP TR SHOT AIM 2', 'Trace trigger area', - 'Область триггера с трассировкой'), - ('PROP TR SHOT AIM 3', 'Trace entire map', - 'Вся карта с трассировкой'), - ('PROP TR SHOT AMMO', 'Ammo limit', - 'Кол-во патронов'), - ('PROP TR SHOT RELOAD', 'Reload interval (in ticks)', - 'Перезарядка (в тиках)'), - ('PROP TR SHOT SIGHT', 'Sight interval (in ticks)', - 'Реакция (в тиках)'), - ('PROP TR SHOT PANEL', 'Indicator panel', - 'Панель индикации'), - ('PROP TR MESSAGE KIND', 'Message kind', - 'Тип сообщения'), - ('PROP TR MESSAGE KIND 0', 'Console message', - 'Текст в консоли'), - ('PROP TR MESSAGE KIND 1', 'Event message', - 'Крупный текст по центру'), - ('PROP TR MESSAGE TO', 'Send to', - 'Получатель'), - ('PROP TR MESSAGE TO 0', 'Me', - 'Я'), - ('PROP TR MESSAGE TO 1', 'My team', - 'Моя команда'), - ('PROP TR MESSAGE TO 2', 'Enemy team', - 'Вражеская команда'), - ('PROP TR MESSAGE TO 3', 'Red team', - 'Красная команда'), - ('PROP TR MESSAGE TO 4', 'Blue team', - 'Синяя команда'), - ('PROP TR MESSAGE TO 5', 'Everyone', - 'Все игроки'), - ('PROP TR MESSAGE TEXT', 'Message text', - 'Текст сообщения'), - ('PROP TR MESSAGE TIME', 'Time (in ticks)', - 'Время показа (в тиках)'), - ('PROP TR EFFECT TYPE', 'Effect type', - 'Тип эффекта'), - ('PROP TR EFFECT SUBTYPE', 'Effect subtype', - 'Подтип эффекта'), - ('PROP TR EFFECT COLOR', 'Effect color', - 'Цвет эффекта'), - ('PROP TR EFFECT CENTER', 'Trigger center', - 'По центру'), - ('PROP TR EFFECT VELX', 'Horizontal speed', - 'Скорость по горизонтали'), - ('PROP TR EFFECT VELY', 'Vertical speed', - 'Скорость по вертикали'), - ('PROP TR EFFECT SPL', 'Speed variance left', - 'Отклонение влево'), - ('PROP TR EFFECT SPR', 'Speed variance right', - 'Отклонение вправо'), - ('PROP TR EFFECT SPU', 'Speed variance up', - 'Отклонение вверх'), - ('PROP TR EFFECT SPD', 'Speed variance down', - 'Отклонение вниз'), - ('PROP TR EFFECT PARTICLE', 'Particle generator', - 'Генератор частиц'), - ('PROP TR EFFECT ANIMATION', 'Animation', - 'Анимация'), - ('PROP TR EFFECT SLIQUID', 'Water splash', - 'Брызги воды'), - ('PROP TR EFFECT LLIQUID', 'Light colored splash', - 'Цветные брызги (светлее)'), - ('PROP TR EFFECT DLIQUID', 'Dark colored splash', - 'Цветные брызги (темнее)'), - ('PROP TR EFFECT BLOOD', 'Blood', - 'Кровь'), - ('PROP TR EFFECT SPARK', 'Sparks', - 'Искры'), - ('PROP TR EFFECT BUBBLE', 'Bubbles', - 'Пузырьки'), - - ('MSG ERROR', 'Error', - 'Ошибка'), - ('MSG WRONG TEXWIDTH', 'Panel Width must be a multiple of Texture Width (%d)', - 'Ширина панели должна быть кратна ширине текстуры (%d)'), - ('MSG WRONG TEXHEIGHT', 'Panel Height must be a multiple of Texture Height (%d)', - 'Высота панели должна быть кратна высоте текстуры (%d)'), - ('MSG WRONG ALPHA', 'Transparency must be in [0..255] interval', - 'Прозрачность должна быть в интервале [0..255]'), - ('MSG WRONG SIZE', 'Width and Height must be greater than 0', - 'Ширина и высота должны быть больше 0'), - ('MSG WRONG XY', 'X or Y coordinate hasn''t been set', - 'Не задана X или Y координата'), - ('MSG TEXTURE ALREADY', 'Texture "%s" already exists', - 'Текстура "%s" уже добавлена'), - ('MSG RES NAME 64', 'Resource "%s" name must not be longer than 64 chars', - 'Имя ресурса "%s" должно быть не длиннее 64 символов'), - ('MSG CHOOSE ITEM', 'Select Item', - 'Выберите предмет'), - ('MSG CHOOSE MONSTER', 'Select Monster', - 'Выберите монстра'), - ('MSG CHOOSE AREA', 'Select Area', - 'Выберите область'), - ('MSG CHOOSE TEXTURE', 'Select Texture', - 'Выберите текстуру'), - ('MSG CHOOSE RES', 'Resource hasn''t been selected', - 'Не выбран ресурс'), - ('MSG EXIT', 'Exit', - 'Выход'), - ('MSG EXIT PROMT', 'Leaving so soon?', - 'Уже уходите?'), - ('MSG DEL TEXTURE', 'Delete the texture', - 'Удалить текстуру'), - ('MSG DEL TEXTURE PROMT', 'Delete the texture "%s" ?', - 'Удалить текстуру "%s" ?'), - ('MSG DEL TEXTURE CANT', 'Can''t delete texture in use. Replace it on all panels with this texture.', - 'Нельзя удалить используемую текстуру. Замените её на каждой панели с ней.'), - ('MSG DEL RECENT', 'File does not longer exist', - 'Этого файла больше нет'), - ('MSG DEL RECENT PROMT', 'Remove entry from recent list?', - 'Убрать запись из истории?'), - ('MSG CLEAR MAP', 'New map', - 'Новая карта'), - ('MSG CLEAR MAP PROMT', 'Clear the entire map?', - 'Очистить всю карту?'), - ('MSG DELETE MAP', 'Delete the map', - 'Удалить карту'), - ('MSG DELETE MAP PROMT', 'Delete the map "%s" from "%s" ?', - 'Удалить карту "%s" из "%s" ?'), - ('MSG MAP DELETED', 'Map is deleted', - 'Карта удалена'), - ('MSG MAP DELETED PROMT', 'Map "%s" is deleted', - 'Карта "%s" удалена'), - ('MSG REOPEN MAP PROMT', 'Reopen this map?', - 'Загрузить карту заново?'), - ('MSG EXEC ERROR', 'Game start error', - 'Ошибка запуска игры'), - ('MSG SOUND ERROR', 'Can''t play sound', - 'Не удалось проиграть звук'), - ('MSG WAD ERROR', 'Can''t open WAD: %s', - 'Ошибка при открытии WAD: %s'), - ('MSG RES ERROR', 'Can''t read resource: %s:%s\%s', - 'Ошибка при чтении ресурса: %s:%s\%s'), - ('MSG PACKED', 'Map "%s" with resources saved to "%s"', - 'Карта "%s" вместе с ресурсами сохранена в "%s"'), - ('MSG MAP EXISTS', 'Map "%s" already exists. Overwrite?', - 'Карта "%s" уже существует. Заменить?'), - ('MSG SAVE MAP', 'Save the map', - 'Сохранить карту'), - - ('HINT TELEPORT', 'Choose destination of Teleport', - 'Выберите точку телепорта'), - ('HINT SPAWN', 'Choose Spawn point', - 'Выберите точку появления'), - ('HINT PANEL DOOR', 'Choose Door', - 'Выберите панель двери'), - ('HINT PANEL TEXTURE', 'Choose textured Panel', - 'Выберите панель с текстурой'), - ('HINT PANEL SHOT', 'Choose textured shot indicator Panel', - 'Выберите панель индикации выстрела с текстурой'), - ('HINT PANEL LIFT', 'Choose Stream Panel', - 'Выберите панель лифта'), - ('HINT MONSTER', 'Choose Monster', - 'Выберите монстра'), - ('HINT EXT AREA', 'Specify action Area', - 'Укажите область воздействия'), - ('HINT WIDTH', 'Width: %d', - 'Ширина: %d'), - ('HINT HEIGHT', 'Height: %d', - 'Высота: %d'), - - ('MENU FILE', 'File', - 'Файл'), - ('MENU FILE NEW', 'New', - 'Создать'), - ('MENU FILE OPEN', 'Open...', - 'Открыть...'), - ('MENU FILE SAVE', 'Save', - 'Сохранить'), - ('MENU FILE SAVE AS', 'Save As...', - 'Сохранить как...'), - ('MENU FILE OPEN WAD', 'Select Map...', - 'Выбрать карту...'), - ('MENU FILE REOPEN', 'Revert to Saved', - 'Открыть заново'), - ('MENU FILE SAVE MINI', 'Save Minimap...', - 'Сохранить мини-карту...'), - ('MENU FILE DELETE', 'Delete from WAD...', - 'Удалить из WAD...'), - ('MENU FILE PACK MAP', 'Pack to WAD...', - 'Упаковать в WAD...'), - ('MENU FILE EXIT', 'Exit', - 'Выход'), - - ('MENU EDIT', 'Edit', - 'Правка'), - ('MENU EDIT UNDO', 'Undo', - 'Отменить'), - ('MENU EDIT COPY', 'Copy', - 'Копировать'), - ('MENU EDIT CUT', 'Cut', - 'Вырезать'), - ('MENU EDIT PASTE', 'Paste', - 'Вставить'), - ('MENU EDIT SELECT ALL', 'Select All', - 'Выделить всё'), - ('MENU EDIT TO FORE', 'Bring to Front', - 'Передвинуть вперёд'), - ('MENU EDIT TO BACK', 'Send to Back', - 'Передвинуть назад'), - - ('MENU TOOLS', 'Tools', - 'Инструменты'), - ('MENU TOOLS SNAP GRID', 'Snap to Grid', - 'Привязка к сетке'), - ('MENU TOOLS MINIMAP', 'Show Minimap', - 'Показать Мини-карту'), - ('MENU TOOLS STEP GRID', 'Switch Grid Granularity', - 'Переключить шаг сетки'), - ('MENU TOOLS SHOW EDGES', 'Show Map Bounds', - 'Показывать границы карты'), - ('MENU TOOLS LAYERS', 'Layers', - 'Слои'), - - ('MENU SERV', 'Service', - 'Сервис'), - ('MENU SERV TEST', 'Analyse Map...', - 'Проверка карты...'), - ('MENU SERV OPT', 'Optimize Map...', - 'Оптимизация карты...'), - ('MENU SERV PREVIEW', 'Preview Mode', - 'Предварительный просмотр'), - ('MENU SERV LAUNCH', 'Run Test', - 'Тест карты в игре'), - - ('MENU SETS', 'Settings', - 'Настройка'), - ('MENU SETS MAP', 'Map Properties...', - 'Свойства карты...'), - ('MENU SETS EDITOR', 'Preferences...', - 'Настройки...'), - ('MENU SETS LAUNCH', 'In-game test settings', - 'Настройки теста в игре'), - - ('MENU HELP', 'Help', - 'Справка'), - ('MENU HELP ABOUT', 'About', - 'О программе'), - - ('MENU LAYER BACK', '1. Background', - '1. Фон'), - ('MENU LAYER WALL', '2. Walls', - '2. Стены'), - ('MENU LAYER FORE', '3. Foreground', - '3. Передний план'), - ('MENU LAYER STAIR', '4. Steps', - '4. Ступени'), - ('MENU LAYER WATER', '5. Liquids', - '5. Жидкости'), - ('MENU LAYER ITEM', '6. Items', - '6. Предметы'), - ('MENU LAYER MONSTER', '7. Monsters', - '7. Монстры'), - ('MENU LAYER AREA', '8. Areas', - '8. Области'), - ('MENU LAYER TRIGGER', '9. Triggers', - '9. Триггеры'), - - ('MENU TB NEW', 'New Map', - 'Новая карта'), - ('MENU TB OPEN', 'Open Map', - 'Открыть карту'), - ('MENU TB SAVE', 'Save Map', - 'Сохранить карту'), - ('MENU TB OPEN WAD', 'Open another Map from same WAD', - 'Открыть другую карту из этого же WAD''а'), - ('MENU TB MINIMAP', 'Show Mini-map', - 'Показать мини-карту'), - ('MENU TB LAYERS', 'Show/Hide Objects', - 'Отрисовка панелей/объектов'), - ('MENU TB GRID', 'Grid On/Off', - 'Включить/Отключить отображение сетки'), - ('MENU TB GRID STEP', 'Switch Grid step', - 'Изменить шаг сетки'), - ('MENU TB LAUNCH', 'Run Test', - 'Тест карты в игре'), - - ('MENU LAUNCH SETS', 'Settings...', - 'Параметры...'), - - ('CAP FX TYPE', 'Select Effect type', - 'Выберите тип эффекта'), - ('CAP MONSTER TYPE', 'Select Monster type', - 'Выберите тип монстра'), - ('CAP ITEM TYPE', 'Select Item type', - 'Выберите тип предмета'), - ('CAP ABOUT', 'About Map Editor', - 'О программе'), - ('CAP ACT', 'Activation type', - 'Тип активации'), - ('CAP ADD SKY', 'Select Sky Texture', - 'Выберите текстуру неба'), - ('CAP ADD SOUND', 'Select Sound/Music', - 'Выберите звук/музыку'), - ('CAP ADD TEXTURE', 'Select Texture', - 'Выберите текстуру'), - ('CAP KEYS', 'Keys', - 'Ключи'), - ('CAP TEST', 'Analyse Map', - 'Проверка карты'), - ('CAP OPT', 'Optimize Map', - 'Оптимизация карты'), - ('CAP SETS', 'Map Properties', - 'Свойства карты'), - ('CAP LAUNCH', 'In-game test Settings', - 'Настройки теста в игре'), - ('CAP ES', 'Editor Preferences', - 'Настройки редактора'), - ('CAP PACK', 'Pack Map', - 'Упаковать карту'), - ('CAP SAVE', 'Save Map', - 'Сохранить карту'), - ('CAP MINI', 'Save Minimap', - 'Сохранить мини-карту'), - ('CAP SELECT', 'Select Map', - 'Выберите карту'), - ('CAP OPEN', 'Open Map', - 'Открыть карту'), - ('CAP REMOVE', 'Remove Map', - 'Удалить карту'), - ('CAP TEXTURE', 'Texture: %dx%d', - 'Текстура: %dx%d'), - ('CAP ANIMATION', 'Animation: %dx%d, %d frames', - 'Анимация: %dx%d, %d кадров'), - ('CAP STAT SELECTED', 'Selected objects: %d', - 'Выделено объектов: %d'), - - ('CTRL PROP KEY', 'Property', - 'Свойство'), - ('CTRL PROP VALUE', 'Value', - 'Значение'), - - ('CTRL PANELS', 'Panels', - 'Панели'), - ('CTRL ITEMS', 'Items', - 'Предметы'), - ('CTRL MONSTERS', 'Monsters', - 'Монстры'), - ('CTRL AREAS', 'Areas', - 'Области'), - ('CTRL TRIGGERS', 'Triggers', - 'Триггеры'), - - ('CTRL LIST TEXTURE', 'Texture List', - 'Список текстур'), - ('CTRL LIST ITEM', 'Item List', - 'Список предметов'), - ('CTRL LIST MONSTER', 'Monster List', - 'Список монстров'), - ('CTRL LIST AREA', 'Area List', - 'Список областей'), - ('CTRL LIST TRIGGER', 'Trigger List', - 'Список триггеров'), - ('CTRL LIST ACTIVE', 'Activation Type', - 'Тип активации триггера'), - ('CTRL LIST KEYS', 'Keys Needed', - 'Ключи для активации'), - - ('CTRL PREVIEW', 'Texture Preview', - 'Предварительный просмотр'), - ('CTRL ITEM DM', 'DM Only', - 'Только в DM'), - ('CTRL ITEM FALLS', 'Falls', - 'Падает'), - ('CTRL LEFT', 'Left', - 'Влево'), - ('CTRL RIGHT', 'Right', - 'Вправо'), - - ('CTRL ACT PLAYER CLOSE', 'Player Collides', - 'Игрок близко'), - ('CTRL ACT MONSTER CLOSE', 'Monster Collides', - 'Монстр близко'), - ('CTRL ACT PLAYER PRESS', 'Player Pressed', - 'Игрок нажал'), - ('CTRL ACT MONSTER PRESS', 'Monster Pressed', - 'Монстр нажал'), - ('CTRL ACT SHOT', 'Shot', - 'Выстрел'), - ('CTRL ACT NO MONSTER', 'No Monsters', - 'Монстров нет'), - - ('CTRL KEYS RED', 'Red Key', - 'Красный ключ'), - ('CTRL KEYS GREEN', 'Green Key', - 'Зелёный ключ'), - ('CTRL KEYS BLUE', 'Blue Key', - 'Синий ключ'), - ('CTRL KEYS TEAM RED', 'Red Team', - 'Красная команда'), - ('CTRL KEYS TEAM BLUE', 'Blue Team', - 'Синяя команда'), - - ('CTRL OPT GB', 'Optimization', - 'Оптимизация'), - ('CTRL OPT TEXTURE', 'Texture Optimization', - 'Оптимизация текстур'), - ('CTRL OPT PANEL', 'Panel Optimization', - 'Оптимизация панелей'), - ('CTRL OPT WALL', 'Walls', - 'Стены'), - ('CTRL OPT FORE', 'Foreground', - 'Передний план'), - ('CTRL OPT BACK', 'Background', - 'Фон'), - ('CTRL OPT STAIR', 'Steps', - 'Ступени'), - ('CTRL OPT WATER', 'Water', - 'Вода'), - ('CTRL OPT ACID1', 'Acid 1', - 'Кислота 1'), - ('CTRL OPT ACID2', 'Acid 2', - 'Кислота 2'), - ('CTRL OPT LIFT', 'Streams', - 'Лифты'), - ('CTRL OPT BLOCKMON', 'Monster Boundary', - 'Блокиратор монстров'), - ('CTRL OPT DESC TEXTURE', 'Deletes unused textures from texture list.', - 'Удаляет неиспользуемые текстуры из списка.'), - ('CTRL OPT DESC PANEL', 'Merges nearby panels of same type. Increases game performance.', - 'Объединяет одинаковые панели, расположенные вплотную друг к другу, увеличивая тем самым производительность игры.'), - ('CTRL SETS STATS', 'Statistics:', - 'Статистика:'), - ('CTRL SETS SIZES', 'Map Size:', - 'Размеры:'), - - ('CTRL LAUNCH DM', 'Deathmatch', - 'Deathmatch'), - ('CTRL LAUNCH TDM', 'Team Deathmatch', - 'Team Deathmatch'), - ('CTRL LAUNCH CTF', 'Capture the Flag', - 'Capture the Flag'), - ('CTRL LAUNCH COOP', 'Cooperative', - 'Cooperative'), - ('CTRL LAUNCH 2P', 'Two Players', - 'Два игрока'), - ('CTRL LAUNCH FF', 'Friendly Fire', - 'Урон своих'), - ('CTRL LAUNCH EXIT', 'Enable Exit', - 'Включить выход'), - ('CTRL LAUNCH WEAPONS', 'Weapons Stay', - 'Оружие остаётся'), - ('CTRL LAUNCH MONSTERS', 'Enable Monsters', - 'Монстры в DM'), - ('CTRL LAUNCH CLOSE', 'Close the game after exiting the map', - 'Закрыть игру после выхода из карты'), - ('CTRL LAUNCH OPEN', 'Select Doom 2D: Forever executable', - 'Выберите файл игры Doom 2D: Forever'), - - ('CTRL ES GRID', 'Show Grid', - 'Показывать сетку'), - ('CTRL ES TEXTURE', 'Show Panel Texture', - 'Показывать текстуру панели'), - ('CTRL ES PANEL SIZE', 'Show Panel Size', - 'Показывать размеры панели '), - ('CTRL ES CHECKERBOARD', 'Use Checkerboard', - 'Использовать шахматку'), - - ('CTRL PACK TEXTURES', 'Textures', - 'Текстуры'), - ('CTRL PACK SKY', 'Sky', - 'Небо'), - ('CTRL PACK MUSIC', 'Music', - 'Музыку'), - ('CTRL PACK ADD', 'Don''t overwrite WAD', - 'Не перезаписывать WAD'), - ('CTRL PACK NON STD', 'Non-standard Resources only', - 'Только нестандартные ресурсы'), - - ('LAB TEX WIDTH', 'Texture Width:', - 'Ширина текстуры:'), - ('LAB TEX HEIGHT', 'Texture Height:', - 'Высота текстуры:'), - - ('LAB SPECTRUM', 'Show the Spectrum', - 'Показать спектр'), - - ('LAB ABOUT VER', 'Version 2.1.5', - 'Версия 2.1.5'), - ('LAB ABOUT AUTHOR', 'Author: rs.falcon', - 'Автор: rs.falcon'), - ('LAB ABOUT AUTHOR 2', 'Additions: Pss', - 'Дорабатывал: Pss'), - ('LAB ABOUT MAIL', 'rmw.falcon@mail.ru', - 'rmw.falcon@mail.ru'), - ('LAB ABOUT MAIL 2', 'pssxx@mail.ru', - 'pssxx@mail.ru'), - ('LAB ABOUT SITE', 'Doom 2D: Forever Web-site', - 'Сайт Doom 2D: Forever'), - ('LAB ABOUT HTTP', 'www.doom2d.org', - 'www.doom2d.org'), - - ('LAB ADD WADS', 'WAD Files:', - 'Список WAD-файлов:'), - ('LAB ADD SECTIONS', 'WAD Sections:', - 'Список секций WAD-файла:'), - - ('LAB SETS NAME', 'Map Name:', - 'Название карты:'), - ('LAB SETS DESC', 'Map Description', - 'Описание карты:'), - ('LAB SETS AUTHOR', 'Author:', - 'Автор:'), - ('LAB SETS BACK', 'Background/Sky:', - 'Фон/Небо:'), - ('LAB SETS MUSIC', 'Music:', - 'Музыка:'), - ('LAB SETS TEXTURES', 'Textures:', - 'Текстур:'), - ('LAB SETS PANELS', 'Panels:', - 'Панелей:'), - ('LAB SETS ITEMS', 'Items:', - 'Предметов:'), - ('LAB SETS MONSTERS', 'Monsters:', - 'Монстров:'), - ('LAB SETS AREAS', 'Areas:', - 'Областей:'), - ('LAB SETS TRIGGERS', 'Triggers:', - 'Триггеров:'), - ('LAB SETS SIZES', 'Current:', - 'Текущий:'), - ('LAB SETS WIDTH', 'Width:', - 'Ширина:'), - ('LAB SETS HEIGHT', 'Height:', - 'Высота:'), - ('LAB SETS MAPMOVE', 'Direction to shift map objects:', - 'Направление смещения объектов карты:'), - ('LAB SETS SNAPPING', 'Preserve snapping', - 'Сохранять привязку'), - - ('LAB LAUNCH TIME', 'Time Limit:', - 'Лимит времени:'), - ('LAB LAUNCH SECS', 'seconds', - 'секунд'), - ('LAB LAUNCH SCORE', 'Score Limit:', - 'Лимит очков:'), - ('LAB LAUNCH PATH', 'Path to Doom2DF.exe:', - 'Путь к Doom2DF.exe:'), - ('LAB LAUNCH ARGS', 'Launch Arguments:', - 'Параметры запуска:'), - - ('LAB ES GRID', 'Grid Step:', - 'Шаг сетки:'), - ('LAB ES GRID COLOR', 'Grid Color:', - 'Цвет сетки:'), - ('LAB ES GRID SIZE', 'Grid Dot Size:', - 'Размер точек сетки:'), - ('LAB ES BACK', 'Background Color:', - 'Цвет фона:'), - ('LAB ES PREVIEW', 'Texture Preview Background Color:', - 'Цвет фона поля предпросмотра текстуры:'), - ('LAB ES MINIMAP', 'Mini-map Scale:', - 'Масштаб мини-карты:'), - ('LAB ES RECENT', 'Recent Maps List Contains:', - 'Запоминать последних открытых карт:'), - ('LAB ES LANGUAGE', 'Language:', - 'Язык:'), - ('LAB ES COMPRESS', 'Compress archive when save', - 'Сжимать архив при сохранении'), - ('LAB ES BACKUP', 'Make backup before save', - 'Резервная копия при сохранении'), - - ('LAB PACK SAVE TO', 'Save to:', - 'Сохранить в:'), - ('LAB PACK MAP NAME', 'Map Resource Name:', - 'Название ресурса карты:'), - ('LAB PACK TEXTURES', 'Texture Section:', - 'Секция для текстур:'), - ('LAB PACK SKY', 'Sky Section:', - 'Секция для неба:'), - ('LAB PACK MUSIC', 'Music Section:', - 'Секция для музыки:'), - - ('LAB MINI SCALE', 'Scale:', - 'Масштаб:'), - - ('BTN APPLY PROPS', 'Apply Properties', - 'Применить свойства'), - ('BTN OK', 'OK', - 'OK'), - ('BTN CANCEL', 'Cancel', - 'Отмена'), - ('BTN ADD', 'Add', - 'Добавить'), - ('BTN CLOSE', 'Close', - 'Закрыть'), - ('BTN ADD CLOSE', 'Add and Close', - 'Добавить и закрыть'), - ('BTN TEST AGAIN', 'Check', - 'Проверить'), - ('BTN START', 'Run', - 'Начать'), - ('BTN PACK', 'Pack', - 'Упаковать'), - ('BTN SAVE', 'Save', - 'Сохранить'), - ('BTN NO SOUND', 'No sound', - 'Нет звука'), - ('BTN TEXTURE ADD', 'Add texture to the list', - 'Добавить текстуру в список'), - ('BTN TEXTURE DELETE', 'Delete texture from the list', - 'Удалить текстуру из списка'), - ('BTN TEXTURE EMPTY', 'Deselect texture', - 'Снять выбор с текстуры'), - - ('LOAD WAD', 'Reading WAD', - 'Чтение WAD'), - ('LOAD MAP', 'Loading Map', - 'Чтение карты'), - ('LOAD TEXTURES', 'Reading Textures', - 'Чтение текстур'), - ('LOAD PANELS', 'Reading Panels', - 'Чтение панелей'), - ('LOAD ITEMS', 'Reading Items', - 'Чтение предметов'), - ('LOAD MONSTERS', 'Reading Monsters', - 'Чтение монстров'), - ('LOAD AREAS', 'Reading Areas', - 'Чтение областей'), - ('LOAD TRIGGERS', 'Reading Triggers', - 'Чтение триггеров'), - - ('TEST AREA WALL', 'Player collides with the wall and will be stuck.', - 'Если в этой области появится игрок, то он застрянет в стене и не сможет двигаться.'), - ('TEST AREA WALL STR', 'Area #%d collides with Map (%d:%d)', - 'Область #%d пересекается с картой (%d:%d)'), - ('TEST SPAWNS 1', 'There are several spawn points for First Player on the map', - 'Несколько точек появления первого игрока'), - ('TEST SPAWNS 2', 'There are several spawn points for Second Player on the map', - 'Несколько точек появления второго игрока'), - ('TEST SPAWNS', 'There are several spawn points on the map. Random one will be used.', - 'Несколько точек появления игрока, будет использована случайная.'), - ('TEST NO DM', 'There are no DM spawn points on the map', - 'На карте нет точек DM'), - ('TEST NO DM EX', 'There are no DM spawn points on the map. Only "Single Player" mode available.', - 'На карте нет точек DM, поиграть получится только в режиме "Single Player".'), - ('TEST MONSTER WALL', 'Monster collides with the wall and will be stuck.', - 'Монстр пересекается с картой. Он застрянет в стене и не сможет двигаться'), - ('TEST MONSTER WALL STR', 'Monster #%d collides with a map (%d:%d)', - 'Монстр #%d пересекается с картой (%d:%d)'), - - ('OPT NO TEXTURES', 'Texture list is empty', - 'Список текстур пуст'), - ('OPT DELETED TEXTURES', 'Deleted Textures:', - 'Удалённые текстуры:'), - ('OPT TOTAL TEXTURES', 'Textures Total:', - 'Всего текстур:'), - ('OPT TEX DELETED', 'Textures Deleted:', - 'Удалено текстур:'), - ('OPT PANELS OPT', 'Panels Optimized:', - 'Оптимизировано панелей:'), - ('OPT WALLS', 'Walls Optimization...', - 'Оптимизация стен...'), - ('OPT FORES', 'Foreground Optimization...', - 'Оптимизация переднего плана...'), - ('OPT BACKS', 'Background Optimization...', - 'Оптимизация фона...'), - ('OPT STAIRS', 'Steps Optimization...', - 'Оптимизация ступеней...'), - ('OPT WATER', 'Water Optimization...', - 'Оптимизация воды...'), - ('OPT ACID1', 'Acid 1 Optimization...', - 'Оптимизация кислоты 1...'), - ('OPT ACID2', 'Acid 2 Optimization...', - 'Оптимизация кислоты 2...'), - ('OPT LIFTS', 'Streams Optimization...', - 'Оптимизация лифтов...'), - ('OPT BLOCKMON', 'Monster Boundaries Optimization...', - 'Оптимизация блокираторов монстров....'), - ('OPT TOTAL PANELS', 'Panels Total:', - 'Всего панелей:'), - ('OPT PANELS AFTER', 'Panels after Optimization:', - 'Панелей после оптимизации:'), - - ('WAD SPECIAL MAP', '', - ''), - ('WAD SPECIAL TEXS', '', - '<СПЕЦТЕКСТУРЫ>'), - - ('FILE FILTER ALL', 'Doom 2D: Forever Maps (*.dfz, *.dfzip, *.zip, *.wad)|*.dfz;*.dfzip;*.zip;*.wad|Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*', - 'Карты Doom 2D: Forever (*.dfz, *.dfzip, *.zip, *.wad)|*.dfz;*.dfzip;*.zip;*.wad|Старые карты Doom 2D: Forever 0.30 (*.ini)|*.ini|Все файлы (*.*)|*.*'), - ('FILE FILTER WAD', 'Doom 2D: Forever Maps (*.dfz)|*.dfz|Doom 2D: Forever Maps (*.dfzip)|*.dfzip|Doom 2D: Forever Maps (*.zip)|*.zip|Doom 2D: Forever Maps (*.wad)|*.wad|All Files (*.*)|*.*', - 'Карты Doom 2D: Forever (*.dfz)|*.dfz|Карты Doom 2D: Forever (*.dfzip)|*.dfzip|Карты Doom 2D: Forever (*.zip)|*.zip|Карты Doom 2D: Forever (*.wad)|*.wad|Все файлы (*.*)|*.*'), - - ('EDITOR TITLE', 'Doom 2D: Forever Map Editor', - 'Редактор карт Doom 2D: Forever'), - - - ('', '', '') ); - - procedure SetupArrays(); var i: Integer; begin // Да/Нет: - BoolNames[False] := _lc[I_ARRAY_BOOL_FALSE]; - BoolNames[True] := _lc[I_ARRAY_BOOL_TRUE]; + BoolNames[False] := MsgArrayBoolFalse; + BoolNames[True] := MsgArrayBoolTrue; // Направления: - DirNames[D_LEFT] := _lc[I_ARRAY_DIR_LEFT]; - DirNames[D_RIGHT] := _lc[I_ARRAY_DIR_RIGHT]; + DirNames[D_LEFT] := MsgArrayDirLeft; + DirNames[D_RIGHT] := MsgArrayDirRight; // Смены направления: - DirNamesAdv[0] := _lc[I_ARRAY_DIR_SAME]; - DirNamesAdv[1] := _lc[I_ARRAY_DIR_LEFT]; - DirNamesAdv[2] := _lc[I_ARRAY_DIR_RIGHT]; - DirNamesAdv[3] := _lc[I_ARRAY_DIR_REVERSED]; + DirNamesAdv[0] := MsgArrayDirSame; + DirNamesAdv[1] := MsgArrayDirLeft; + DirNamesAdv[2] := MsgArrayDirRight; + DirNamesAdv[3] := MsgArrayDirReversed; // Направление (на кнопках): - DirButtonNames[1] := _lc[I_ARRAY_DIRBTN_LEFT]; - DirButtonNames[2] := _lc[I_ARRAY_DIRBTN_RIGHT]; - DirButtonNames[3] := _lc[I_ARRAY_DIRBTN_UP]; - DirButtonNames[4] := _lc[I_ARRAY_DIRBTN_DOWN]; + DirButtonNames[1] := MsgArrayDirbtnLeft; + DirButtonNames[2] := MsgArrayDirbtnRight; + DirButtonNames[3] := MsgArrayDirbtnUp; + DirButtonNames[4] := MsgArrayDirbtnDown; // Названия панелей: - PANELNAMES[0] := _lc[I_ARRAY_PANEL_WALL]; - PANELNAMES[1] := _lc[I_ARRAY_PANEL_BACK]; - PANELNAMES[2] := _lc[I_ARRAY_PANEL_FRONT]; - PANELNAMES[3] := _lc[I_ARRAY_PANEL_DOOR_OPEN]; - PANELNAMES[4] := _lc[I_ARRAY_PANEL_DOOR_CLOSE]; - PANELNAMES[5] := _lc[I_ARRAY_PANEL_STAIR]; - PANELNAMES[6] := _lc[I_ARRAY_PANEL_WATER]; - PANELNAMES[7] := _lc[I_ARRAY_PANEL_ACID_1]; - PANELNAMES[8] := _lc[I_ARRAY_PANEL_ACID_2]; - PANELNAMES[9] := _lc[I_ARRAY_PANEL_LIFT_UP]; - PANELNAMES[10] := _lc[I_ARRAY_PANEL_LIFT_DOWN]; - PANELNAMES[11] := _lc[I_ARRAY_PANEL_LIFT_LEFT]; - PANELNAMES[12] := _lc[I_ARRAY_PANEL_LIFT_RIGHT]; - PANELNAMES[13] := _lc[I_ARRAY_PANEL_BLOCKMON]; + PANELNAMES[0] := MsgArrayPanelWall; + PANELNAMES[1] := MsgArrayPanelBack; + PANELNAMES[2] := MsgArrayPanelFront; + PANELNAMES[3] := MsgArrayPanelDoorOpen; + PANELNAMES[4] := MsgArrayPanelDoorClose; + PANELNAMES[5] := MsgArrayPanelStair; + PANELNAMES[6] := MsgArrayPanelWater; + PANELNAMES[7] := MsgArrayPanelAcid1; + PANELNAMES[8] := MsgArrayPanelAcid2; + PANELNAMES[9] := MsgArrayPanelLiftUp; + PANELNAMES[10] := MsgArrayPanelLiftDown; + PANELNAMES[11] := MsgArrayPanelLiftLeft; + PANELNAMES[12] := MsgArrayPanelLiftRight; + PANELNAMES[13] := MsgArrayPanelBlockmon; // Названия эффектов: - EffectNames[EFFECT_NONE] := _lc[I_ARRAY_FX_NONE]; - EffectNames[EFFECT_TELEPORT] := _lc[I_ARRAY_FX_TELEPORT]; - EffectNames[EFFECT_RESPAWN] := _lc[I_ARRAY_FX_RESPAWN]; - EffectNames[EFFECT_FIRE] := _lc[I_ARRAY_FX_FIRE]; + EffectNames[EFFECT_NONE] := MsgArrayFxNone; + EffectNames[EFFECT_TELEPORT] := MsgArrayFxTeleport; + EffectNames[EFFECT_RESPAWN] := MsgArrayFxRespawn; + EffectNames[EFFECT_FIRE] := MsgArrayFxFire; // Названия предметов: - ItemNames[ITEM_MEDKIT_SMALL] := _lc[I_ARRAY_ITEM_MEDKIT]; - ItemNames[ITEM_MEDKIT_LARGE] := _lc[I_ARRAY_ITEM_LARGE_MEDKIT]; - ItemNames[ITEM_MEDKIT_BLACK] := _lc[I_ARRAY_ITEM_BLACK_MEDKIT]; - ItemNames[ITEM_ARMOR_GREEN] := _lc[I_ARRAY_ITEM_GREEN_ARMOR]; - ItemNames[ITEM_ARMOR_BLUE] := _lc[I_ARRAY_ITEM_BLUE_ARMOR]; - ItemNames[ITEM_SPHERE_BLUE] := _lc[I_ARRAY_ITEM_BLUE_SPHERE]; - ItemNames[ITEM_SPHERE_WHITE] := _lc[I_ARRAY_ITEM_MEGASPHERE]; - ItemNames[ITEM_SUIT] := _lc[I_ARRAY_ITEM_HAZ_SUIT]; - ItemNames[ITEM_OXYGEN] := _lc[I_ARRAY_ITEM_OXYGEN]; - ItemNames[ITEM_INVUL] := _lc[I_ARRAY_ITEM_INVULNERABILITY]; - ItemNames[ITEM_WEAPON_SAW] := _lc[I_ARRAY_ITEM_CHAINSAW]; - ItemNames[ITEM_WEAPON_SHOTGUN1] := _lc[I_ARRAY_ITEM_SHOTGUN]; - ItemNames[ITEM_WEAPON_SHOTGUN2] := _lc[I_ARRAY_ITEM_DB_SHOTGUN]; - ItemNames[ITEM_WEAPON_CHAINGUN] := _lc[I_ARRAY_ITEM_CHAINGUN]; - ItemNames[ITEM_WEAPON_ROCKETLAUNCHER] := _lc[I_ARRAY_ITEM_ROCKET_LAUNCHER]; - ItemNames[ITEM_WEAPON_PLASMA] := _lc[I_ARRAY_ITEM_PLASMA_RIFLE]; - ItemNames[ITEM_WEAPON_BFG] := _lc[I_ARRAY_ITEM_BFG]; - ItemNames[ITEM_WEAPON_SUPERPULEMET] := _lc[I_ARRAY_ITEM_SUPER_MINIGUN]; - ItemNames[ITEM_WEAPON_FLAMETHROWER] := _lc[I_ARRAY_ITEM_FLAMETHROWER]; - ItemNames[ITEM_AMMO_BULLETS] := _lc[I_ARRAY_ITEM_CLIP]; - ItemNames[ITEM_AMMO_BULLETS_BOX] := _lc[I_ARRAY_ITEM_AMMO_BOX]; - ItemNames[ITEM_AMMO_SHELLS] := _lc[I_ARRAY_ITEM_4_SHELLS]; - ItemNames[ITEM_AMMO_SHELLS_BOX] := _lc[I_ARRAY_ITEM_25_SHELLS]; - ItemNames[ITEM_AMMO_ROCKET] := _lc[I_ARRAY_ITEM_1_ROCKET]; - ItemNames[ITEM_AMMO_ROCKET_BOX] := _lc[I_ARRAY_ITEM_ROCKET_BOX]; - ItemNames[ITEM_AMMO_CELL] := _lc[I_ARRAY_ITEM_CELL]; - ItemNames[ITEM_AMMO_CELL_BIG] := _lc[I_ARRAY_ITEM_LARGE_CELL]; - ItemNames[ITEM_AMMO_FUELCAN] := _lc[I_ARRAY_ITEM_FUELCAN]; - ItemNames[ITEM_AMMO_BACKPACK] := _lc[I_ARRAY_ITEM_BACKPACK]; - ItemNames[ITEM_KEY_RED] := _lc[I_ARRAY_ITEM_KEY_RED]; - ItemNames[ITEM_KEY_GREEN] := _lc[I_ARRAY_ITEM_KEY_GREEN]; - ItemNames[ITEM_KEY_BLUE] := _lc[I_ARRAY_ITEM_KEY_BLUE]; + ItemNames[ITEM_MEDKIT_SMALL] := MsgArrayItemMedkit; + ItemNames[ITEM_MEDKIT_LARGE] := MsgArrayItemLargeMedkit; + ItemNames[ITEM_MEDKIT_BLACK] := MsgArrayItemBlackMedkit; + ItemNames[ITEM_ARMOR_GREEN] := MsgArrayItemGreenArmor; + ItemNames[ITEM_ARMOR_BLUE] := MsgArrayItemBlueArmor; + ItemNames[ITEM_SPHERE_BLUE] := MsgArrayItemBlueSphere; + ItemNames[ITEM_SPHERE_WHITE] := MsgArrayItemMegasphere; + ItemNames[ITEM_SUIT] := MsgArrayItemHazSuit; + ItemNames[ITEM_OXYGEN] := MsgArrayItemOxygen; + ItemNames[ITEM_INVUL] := MsgArrayItemInvulnerability; + ItemNames[ITEM_WEAPON_SAW] := MsgArrayItemChainsaw; + ItemNames[ITEM_WEAPON_SHOTGUN1] := MsgArrayItemShotgun; + ItemNames[ITEM_WEAPON_SHOTGUN2] := MsgArrayItemDbShotgun; + ItemNames[ITEM_WEAPON_CHAINGUN] := MsgArrayItemChaingun; + ItemNames[ITEM_WEAPON_ROCKETLAUNCHER] := MsgArrayItemRocketLauncher; + ItemNames[ITEM_WEAPON_PLASMA] := MsgArrayItemPlasmaRifle; + ItemNames[ITEM_WEAPON_BFG] := MsgArrayItemBfg; + ItemNames[ITEM_WEAPON_SUPERPULEMET] := MsgArrayItemSuperMinigun; + ItemNames[ITEM_WEAPON_FLAMETHROWER] := MsgArrayItemFlamethrower; + ItemNames[ITEM_AMMO_BULLETS] := MsgArrayItemClip; + ItemNames[ITEM_AMMO_BULLETS_BOX] := MsgArrayItemAmmoBox; + ItemNames[ITEM_AMMO_SHELLS] := MsgArrayItem4Shells; + ItemNames[ITEM_AMMO_SHELLS_BOX] := MsgArrayItem25Shells; + ItemNames[ITEM_AMMO_ROCKET] := MsgArrayItem1Rocket; + ItemNames[ITEM_AMMO_ROCKET_BOX] := MsgArrayItemRocketBox; + ItemNames[ITEM_AMMO_CELL] := MsgArrayItemCell; + ItemNames[ITEM_AMMO_CELL_BIG] := MsgArrayItemLargeCell; + ItemNames[ITEM_AMMO_FUELCAN] := MsgArrayItemFuelcan; + ItemNames[ITEM_AMMO_BACKPACK] := MsgArrayItemBackpack; + ItemNames[ITEM_KEY_RED] := MsgArrayItemKeyRed; + ItemNames[ITEM_KEY_GREEN] := MsgArrayItemKeyGreen; + ItemNames[ITEM_KEY_BLUE] := MsgArrayItemKeyBlue; ItemNames[ITEM_WEAPON_KASTET] := '?'; ItemNames[ITEM_WEAPON_PISTOL] := '??'; - ItemNames[ITEM_BOTTLE] := _lc[I_ARRAY_ITEM_BOTTLE]; - ItemNames[ITEM_HELMET] := _lc[I_ARRAY_ITEM_HELMET]; - ItemNames[ITEM_JETPACK] := _lc[I_ARRAY_ITEM_JETPACK]; - ItemNames[ITEM_INVIS] := _lc[I_ARRAY_ITEM_INVIS]; + ItemNames[ITEM_BOTTLE] := MsgArrayItemBottle; + ItemNames[ITEM_HELMET] := MsgArrayItemHelmet; + ItemNames[ITEM_JETPACK] := MsgArrayItemJetpack; + ItemNames[ITEM_INVIS] := MsgArrayItemInvis; // Названия снарядов: - ShotNames[TRIGGER_SHOT_PISTOL] := _lc[I_ARRAY_SHOT_PISTOL]; - ShotNames[TRIGGER_SHOT_BULLET] := _lc[I_ARRAY_SHOT_BULLET]; - ShotNames[TRIGGER_SHOT_SHOTGUN] := _lc[I_ARRAY_SHOT_SHOTGUN]; - ShotNames[TRIGGER_SHOT_SSG] := _lc[I_ARRAY_SHOT_SSG]; - ShotNames[TRIGGER_SHOT_IMP] := _lc[I_ARRAY_SHOT_IMP]; - ShotNames[TRIGGER_SHOT_PLASMA] := _lc[I_ARRAY_SHOT_PLASMA]; - ShotNames[TRIGGER_SHOT_SPIDER] := _lc[I_ARRAY_SHOT_SPIDER]; - ShotNames[TRIGGER_SHOT_CACO] := _lc[I_ARRAY_SHOT_CACO]; - ShotNames[TRIGGER_SHOT_BARON] := _lc[I_ARRAY_SHOT_BARON]; - ShotNames[TRIGGER_SHOT_MANCUB] := _lc[I_ARRAY_SHOT_MANCUB]; - ShotNames[TRIGGER_SHOT_REV] := _lc[I_ARRAY_SHOT_REV]; - ShotNames[TRIGGER_SHOT_ROCKET] := _lc[I_ARRAY_SHOT_ROCKET]; - ShotNames[TRIGGER_SHOT_BFG] := _lc[I_ARRAY_SHOT_BFG]; - ShotNames[TRIGGER_SHOT_EXPL] := _lc[I_ARRAY_SHOT_EXPL]; - ShotNames[TRIGGER_SHOT_BFGEXPL] := _lc[I_ARRAY_SHOT_BFGEXPL]; - ShotNames[TRIGGER_SHOT_FLAME] := _lc[I_ARRAY_SHOT_FLAME]; + ShotNames[TRIGGER_SHOT_PISTOL] := MsgArrayShotPistol; + ShotNames[TRIGGER_SHOT_BULLET] := MsgArrayShotBullet; + ShotNames[TRIGGER_SHOT_SHOTGUN] := MsgArrayShotShotgun; + ShotNames[TRIGGER_SHOT_SSG] := MsgArrayShotSsg; + ShotNames[TRIGGER_SHOT_IMP] := MsgArrayShotImp; + ShotNames[TRIGGER_SHOT_PLASMA] := MsgArrayShotPlasma; + ShotNames[TRIGGER_SHOT_SPIDER] := MsgArrayShotSpider; + ShotNames[TRIGGER_SHOT_CACO] := MsgArrayShotCaco; + ShotNames[TRIGGER_SHOT_BARON] := MsgArrayShotBaron; + ShotNames[TRIGGER_SHOT_MANCUB] := MsgArrayShotMancub; + ShotNames[TRIGGER_SHOT_REV] := MsgArrayShotRev; + ShotNames[TRIGGER_SHOT_ROCKET] := MsgArrayShotRocket; + ShotNames[TRIGGER_SHOT_BFG] := MsgArrayShotBfg; + ShotNames[TRIGGER_SHOT_EXPL] := MsgArrayShotExpl; + ShotNames[TRIGGER_SHOT_BFGEXPL] := MsgArrayShotBfgexpl; + ShotNames[TRIGGER_SHOT_FLAME] := MsgArrayShotFlame; // Названия монстров: - MonsterNames[MONSTER_DEMON] := _lc[I_ARRAY_MON_DEMON]; - MonsterNames[MONSTER_IMP] := _lc[I_ARRAY_MON_IMP]; - MonsterNames[MONSTER_ZOMBY] := _lc[I_ARRAY_MON_ZOMBIE]; - MonsterNames[MONSTER_SERG] := _lc[I_ARRAY_MON_SERGEANT]; - MonsterNames[MONSTER_CYBER] := _lc[I_ARRAY_MON_CYBER]; - MonsterNames[MONSTER_CGUN] := _lc[I_ARRAY_MON_CGUN]; - MonsterNames[MONSTER_BARON] := _lc[I_ARRAY_MON_HELL_BARON]; - MonsterNames[MONSTER_KNIGHT] := _lc[I_ARRAY_MON_HELL_KNIGHT]; - MonsterNames[MONSTER_CACO] := _lc[I_ARRAY_MON_CACODEMON]; - MonsterNames[MONSTER_SOUL] := _lc[I_ARRAY_MON_LOST_SOUL]; - MonsterNames[MONSTER_PAIN] := _lc[I_ARRAY_MON_PAIN_ELEMENTAL]; - MonsterNames[MONSTER_SPIDER] := _lc[I_ARRAY_MON_MASTERMIND]; - MonsterNames[MONSTER_BSP] := _lc[I_ARRAY_MON_ARACHNATRON]; - MonsterNames[MONSTER_MANCUB] := _lc[I_ARRAY_MON_MANCUBUS]; - MonsterNames[MONSTER_SKEL] := _lc[I_ARRAY_MON_REVENANT]; - MonsterNames[MONSTER_VILE] := _lc[I_ARRAY_MON_ARCHVILE]; - MonsterNames[MONSTER_FISH] := _lc[I_ARRAY_MON_FISH]; - MonsterNames[MONSTER_BARREL] := _lc[I_ARRAY_MON_BARREL]; - MonsterNames[MONSTER_ROBO] := _lc[I_ARRAY_MON_ROBOT]; - MonsterNames[MONSTER_MAN] := _lc[I_ARRAY_MON_PRIKOLIST]; + MonsterNames[MONSTER_DEMON] := MsgArrayMonDemon; + MonsterNames[MONSTER_IMP] := MsgArrayMonImp; + MonsterNames[MONSTER_ZOMBY] := MsgArrayMonZombie; + MonsterNames[MONSTER_SERG] := MsgArrayMonSergeant; + MonsterNames[MONSTER_CYBER] := MsgArrayMonCyber; + MonsterNames[MONSTER_CGUN] := MsgArrayMonCgun; + MonsterNames[MONSTER_BARON] := MsgArrayMonHellBaron; + MonsterNames[MONSTER_KNIGHT] := MsgArrayMonHellKnight; + MonsterNames[MONSTER_CACO] := MsgArrayMonCacodemon; + MonsterNames[MONSTER_SOUL] := MsgArrayMonLostSoul; + MonsterNames[MONSTER_PAIN] := MsgArrayMonPainElemental; + MonsterNames[MONSTER_SPIDER] := MsgArrayMonMastermind; + MonsterNames[MONSTER_BSP] := MsgArrayMonArachnatron; + MonsterNames[MONSTER_MANCUB] := MsgArrayMonMancubus; + MonsterNames[MONSTER_SKEL] := MsgArrayMonRevenant; + MonsterNames[MONSTER_VILE] := MsgArrayMonArchvile; + MonsterNames[MONSTER_FISH] := MsgArrayMonFish; + MonsterNames[MONSTER_BARREL] := MsgArrayMonBarrel; + MonsterNames[MONSTER_ROBO] := MsgArrayMonRobot; + MonsterNames[MONSTER_MAN] := MsgArrayMonPrikolist; // Названия областей: - AreaNames[AREA_PLAYERPOINT1] := _lc[I_ARRAY_AREA_PLAYER_ONE]; - AreaNames[AREA_PLAYERPOINT2] := _lc[I_ARRAY_AREA_PLAYER_TWO]; - AreaNames[AREA_DMPOINT] := _lc[I_ARRAY_AREA_DM]; - AreaNames[AREA_REDFLAG] := _lc[I_ARRAY_AREA_FLAG_RED]; - AreaNames[AREA_BLUEFLAG] := _lc[I_ARRAY_AREA_FLAG_BLUE]; - AreaNames[AREA_DOMFLAG] := _lc[I_ARRAY_AREA_FLAG_DOM]; - AreaNames[AREA_REDTEAMPOINT] := _lc[I_ARRAY_AREA_TEAM_RED]; - AreaNames[AREA_BLUETEAMPOINT] := _lc[I_ARRAY_AREA_TEAM_BLUE]; + AreaNames[AREA_PLAYERPOINT1] := MsgArrayAreaPlayerOne; + AreaNames[AREA_PLAYERPOINT2] := MsgArrayAreaPlayerTwo; + AreaNames[AREA_DMPOINT] := MsgArrayAreaDm; + AreaNames[AREA_REDFLAG] := MsgArrayAreaFlagRed; + AreaNames[AREA_BLUEFLAG] := MsgArrayAreaFlagBlue; + AreaNames[AREA_DOMFLAG] := MsgArrayAreaFlagDom; + AreaNames[AREA_REDTEAMPOINT] := MsgArrayAreaTeamRed; + AreaNames[AREA_BLUETEAMPOINT] := MsgArrayAreaTeamBlue; // Названия триггеров: - TriggerNames[TRIGGER_EXIT] := _lc[I_ARRAY_TR_EXIT]; - TriggerNames[TRIGGER_TELEPORT] := _lc[I_ARRAY_TR_TELEPORT]; - TriggerNames[TRIGGER_OPENDOOR] := _lc[I_ARRAY_TR_DOOR_OPEN]; - TriggerNames[TRIGGER_CLOSEDOOR] := _lc[I_ARRAY_TR_DOOR_CLOSE]; - TriggerNames[TRIGGER_DOOR] := _lc[I_ARRAY_TR_DOOR_SWITCH]; - TriggerNames[TRIGGER_DOOR5] := _lc[I_ARRAY_TR_DOOR_5_SEC]; - TriggerNames[TRIGGER_CLOSETRAP] := _lc[I_ARRAY_TR_TRAP_CLOSE]; - TriggerNames[TRIGGER_TRAP] := _lc[I_ARRAY_TR_TRAP]; - TriggerNames[TRIGGER_PRESS] := _lc[I_ARRAY_TR_EXTEND]; - TriggerNames[TRIGGER_SECRET] := _lc[I_ARRAY_TR_SECRET]; - TriggerNames[TRIGGER_LIFTUP] := _lc[I_ARRAY_TR_LIFT_UP]; - TriggerNames[TRIGGER_LIFTDOWN] := _lc[I_ARRAY_TR_LIFT_DOWN]; - TriggerNames[TRIGGER_LIFT] := _lc[I_ARRAY_TR_LIFT_SWITCH]; - TriggerNames[TRIGGER_TEXTURE] := _lc[I_ARRAY_TR_TEXTURE]; - TriggerNames[TRIGGER_ON] := _lc[I_ARRAY_TR_ON]; - TriggerNames[TRIGGER_OFF] := _lc[I_ARRAY_TR_OFF]; - TriggerNames[TRIGGER_ONOFF] := _lc[I_ARRAY_TR_SWITCH]; - TriggerNames[TRIGGER_SOUND] := _lc[I_ARRAY_TR_SOUND]; - TriggerNames[TRIGGER_SPAWNMONSTER] := _lc[I_ARRAY_TR_SPAWN_MONSTER]; - TriggerNames[TRIGGER_SPAWNITEM] := _lc[I_ARRAY_TR_SPAWN_ITEM]; - TriggerNames[TRIGGER_MUSIC] := _lc[I_ARRAY_TR_MUSIC]; - TriggerNames[TRIGGER_PUSH] := _lc[I_ARRAY_TR_PUSH]; - TriggerNames[TRIGGER_SCORE] := _lc[I_ARRAY_TR_SCORE]; - TriggerNames[TRIGGER_MESSAGE] := _lc[I_ARRAY_TR_MESSAGE]; - TriggerNames[TRIGGER_DAMAGE] := _lc[I_ARRAY_TR_DAMAGE]; - TriggerNames[TRIGGER_HEALTH] := _lc[I_ARRAY_TR_HEALTH]; - TriggerNames[TRIGGER_SHOT] := _lc[I_ARRAY_TR_SHOT]; - TriggerNames[TRIGGER_EFFECT] := _lc[I_ARRAY_TR_EFFECT]; + TriggerNames[TRIGGER_EXIT] := MsgArrayTrExit; + TriggerNames[TRIGGER_TELEPORT] := MsgArrayTrTeleport; + TriggerNames[TRIGGER_OPENDOOR] := MsgArrayTrDoorOpen; + TriggerNames[TRIGGER_CLOSEDOOR] := MsgArrayTrDoorClose; + TriggerNames[TRIGGER_DOOR] := MsgArrayTrDoorSwitch; + TriggerNames[TRIGGER_DOOR5] := MsgArrayTrDoor5Sec; + TriggerNames[TRIGGER_CLOSETRAP] := MsgArrayTrTrapClose; + TriggerNames[TRIGGER_TRAP] := MsgArrayTrTrap; + TriggerNames[TRIGGER_PRESS] := MsgArrayTrExtend; + TriggerNames[TRIGGER_SECRET] := MsgArrayTrSecret; + TriggerNames[TRIGGER_LIFTUP] := MsgArrayTrLiftUp; + TriggerNames[TRIGGER_LIFTDOWN] := MsgArrayTrLiftDown; + TriggerNames[TRIGGER_LIFT] := MsgArrayTrLiftSwitch; + TriggerNames[TRIGGER_TEXTURE] := MsgArrayTrTexture; + TriggerNames[TRIGGER_ON] := MsgArrayTrOn; + TriggerNames[TRIGGER_OFF] := MsgArrayTrOff; + TriggerNames[TRIGGER_ONOFF] := MsgArrayTrSwitch; + TriggerNames[TRIGGER_SOUND] := MsgArrayTrSound; + TriggerNames[TRIGGER_SPAWNMONSTER] := MsgArrayTrSpawnMonster; + TriggerNames[TRIGGER_SPAWNITEM] := MsgArrayTrSpawnItem; + TriggerNames[TRIGGER_MUSIC] := MsgArrayTrMusic; + TriggerNames[TRIGGER_PUSH] := MsgArrayTrPush; + TriggerNames[TRIGGER_SCORE] := MsgArrayTrScore; + TriggerNames[TRIGGER_MESSAGE] := MsgArrayTrMessage; + TriggerNames[TRIGGER_DAMAGE] := MsgArrayTrDamage; + TriggerNames[TRIGGER_HEALTH] := MsgArrayTrHealth; + TriggerNames[TRIGGER_SHOT] := MsgArrayTrShot; + TriggerNames[TRIGGER_EFFECT] := MsgArrayTrEffect; // Установка значений в панели выбора объектов: with MainForm do @@ -2039,19 +843,19 @@ begin lbTriggersList.Items.Add(TriggerNames[i]); clbActivationType.Clear(); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_PLAYER_CLOSE]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_MONSTER_CLOSE]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_PLAYER_PRESS]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_MONSTER_PRESS]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_SHOT]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_NO_MONSTER]); + clbActivationType.Items.Add(MsgCtrlActPlayerClose); + clbActivationType.Items.Add(MsgCtrlActMonsterClose); + clbActivationType.Items.Add(MsgCtrlActPlayerPress); + clbActivationType.Items.Add(MsgCtrlActMonsterPress); + clbActivationType.Items.Add(MsgCtrlActShot); + clbActivationType.Items.Add(MsgCtrlActNoMonster); clbKeys.Clear(); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_RED]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_GREEN]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_BLUE]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_TEAM_RED]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_TEAM_BLUE]); + clbKeys.Items.Add(MsgCtrlKeysRed); + clbKeys.Items.Add(MsgCtrlKeysGreen); + clbKeys.Items.Add(MsgCtrlKeysBlue); + clbKeys.Items.Add(MsgCtrlKeysTeamRed); + clbKeys.Items.Add(MsgCtrlKeysTeamBlue); end; end; @@ -2065,7 +869,7 @@ begin s := g_GetBuildHash(false); if s = 'custom build' then s := s + ' by ' + g_GetBuilderName() + ' ' + EDITOR_BUILDDATE + ' ' + EDITOR_BUILDTIME; - FormCaption := _lc[I_EDITOR_TITLE] + ' (' + s + ')'; + FormCaption := MsgEditorTitle + ' (' + s + ')'; i := Pos('-', Caption); if i > 0 then begin @@ -2075,481 +879,368 @@ begin Caption := FormCaption; // Главное меню: // "Файл": - miMenuFile.Caption := _lc[I_MENU_FILE]; - miNewMap.Caption := _lc[I_MENU_FILE_NEW]; - miOpenMap.Caption := _lc[I_MENU_FILE_OPEN]; - miSaveMap.Caption := _lc[I_MENU_FILE_SAVE]; - miSaveMapAs.Caption := _lc[I_MENU_FILE_SAVE_AS]; - miOpenWadMap.Caption := _lc[I_MENU_FILE_OPEN_WAD]; - miReopenMap.Caption := _lc[I_MENU_FILE_REOPEN]; - miSaveMiniMap.Caption := _lc[I_MENU_FILE_SAVE_MINI]; - miDeleteMap.Caption := _lc[I_MENU_FILE_DELETE]; - miPackMap.Caption := _lc[I_MENU_FILE_PACK_MAP]; - miExit.Caption := _lc[I_MENU_FILE_EXIT]; + miMenuFile.Caption := MsgMenuFile; + miNewMap.Caption := MsgMenuFileNew; + miOpenMap.Caption := MsgMenuFileOpen; + miSaveMap.Caption := MsgMenuFileSave; + miSaveMapAs.Caption := MsgMenuFileSaveAs; + miOpenWadMap.Caption := MsgMenuFileOpenWad; + miReopenMap.Caption := MsgMenuFileReopen; + miSaveMiniMap.Caption := MsgMenuFileSaveMini; + miDeleteMap.Caption := MsgMenuFileDelete; + miPackMap.Caption := MsgMenuFilePackMap; + miExit.Caption := MsgMenuFileExit; // "Правка": - miMenuEdit.Caption := _lc[I_MENU_EDIT]; - miUndo.Caption := _lc[I_MENU_EDIT_UNDO]; - miCopy.Caption := _lc[I_MENU_EDIT_COPY]; - miCut.Caption := _lc[I_MENU_EDIT_CUT]; - miPaste.Caption := _lc[I_MENU_EDIT_PASTE]; - miSelectAll.Caption := _lc[I_MENU_EDIT_SELECT_ALL]; - miToFore.Caption := _lc[I_MENU_EDIT_TO_FORE]; - miToBack.Caption := _lc[I_MENU_EDIT_TO_BACK]; + miMenuEdit.Caption := MsgMenuEdit; + miUndo.Caption := MsgMenuEditUndo; + miCopy.Caption := MsgMenuEditCopy; + miCut.Caption := MsgMenuEditCut; + miPaste.Caption := MsgMenuEditPaste; + miSelectAll.Caption := MsgMenuEditSelectAll; + miToFore.Caption := MsgMenuEditToFore; + miToBack.Caption := MsgMenuEditToBack; // "Инструменты": - miSnapToGrid.Caption := _lc[I_MENU_TOOLS_SNAP_GRID]; - miMiniMap.Caption := _lc[I_MENU_TOOLS_MINIMAP]; - miSwitchGrid.Caption := _lc[I_MENU_TOOLS_STEP_GRID]; - miShowEdges.Caption := _lc[I_MENU_TOOLS_SHOW_EDGES]; - miLayers.Caption := _lc[I_MENU_TOOLS_LAYERS]; - miLayer1.Caption := _lc[I_MENU_LAYER_BACK]; - miLayer2.Caption := _lc[I_MENU_LAYER_WALL]; - miLayer3.Caption := _lc[I_MENU_LAYER_FORE]; - miLayer4.Caption := _lc[I_MENU_LAYER_STAIR]; - miLayer5.Caption := _lc[I_MENU_LAYER_WATER]; - miLayer6.Caption := _lc[I_MENU_LAYER_ITEM]; - miLayer7.Caption := _lc[I_MENU_LAYER_MONSTER]; - miLayer8.Caption := _lc[I_MENU_LAYER_AREA]; - miLayer9.Caption := _lc[I_MENU_LAYER_TRIGGER]; - miMapOptions.Caption := _lc[I_MENU_SETS_MAP]; - miOptions.Caption := _lc[I_MENU_SETS_EDITOR]; + miSnapToGrid.Caption := MsgMenuToolsSnapGrid; + miMiniMap.Caption := MsgMenuToolsMinimap; + miSwitchGrid.Caption := MsgMenuToolsStepGrid; + miShowEdges.Caption := MsgMenuToolsShowEdges; + miLayers.Caption := MsgMenuToolsLayers; + miLayer1.Caption := MsgMenuLayerBack; + miLayer2.Caption := MsgMenuLayerWall; + miLayer3.Caption := MsgMenuLayerFore; + miLayer4.Caption := MsgMenuLayerStair; + miLayer5.Caption := MsgMenuLayerWater; + miLayer6.Caption := MsgMenuLayerItem; + miLayer7.Caption := MsgMenuLayerMonster; + miLayer8.Caption := MsgMenuLayerArea; + miLayer9.Caption := MsgMenuLayerTrigger; + miMapOptions.Caption := MsgMenuSetsMap; + miOptions.Caption := MsgMenuSetsEditor; // "Сервис": - miMenuService.Caption := _lc[I_MENU_SERV]; - miCheckMap.Caption := _lc[I_MENU_SERV_TEST]; - miOptimmization.Caption := _lc[I_MENU_SERV_OPT]; - miMapPreview.Caption := _lc[I_MENU_SERV_PREVIEW]; - miTestMap.Caption := _lc[I_MENU_SERV_LAUNCH]; + miMenuService.Caption := MsgMenuServ; + miCheckMap.Caption := MsgMenuServTest; + miOptimmization.Caption := MsgMenuServOpt; + miMapPreview.Caption := MsgMenuServPreview; + miTestMap.Caption := MsgMenuServLaunch; // "Справка": - miMenuHelp.Caption := _lc[I_MENU_HELP]; - miAbout.Caption := _lc[I_MENU_HELP_ABOUT]; + miMenuHelp.Caption := MsgMenuHelp; + miAbout.Caption := MsgMenuHelpAbout; // Панель инструментов: - tbNewMap.Hint := _lc[I_MENU_TB_NEW]; - tbOpenMap.Hint := _lc[I_MENU_TB_OPEN]; - tbSaveMap.Hint := _lc[I_MENU_TB_SAVE]; - tbOpenWadMap.Hint := _lc[I_MENU_TB_OPEN_WAD]; - tbShowMap.Hint := _lc[I_MENU_TB_MINIMAP]; - tbShow.Hint := _lc[I_MENU_TB_LAYERS]; - tbGridOn.Hint := _lc[I_MENU_TB_GRID]; - tbGrid.Hint := _lc[I_MENU_TB_GRID_STEP]; - tbTestMap.Hint := _lc[I_MENU_TB_LAUNCH]; + tbNewMap.Hint := MsgMenuTbNew; + tbOpenMap.Hint := MsgMenuTbOpen; + tbSaveMap.Hint := MsgMenuTbSave; + tbOpenWadMap.Hint := MsgMenuTbOpenWad; + tbShowMap.Hint := MsgMenuTbMinimap; + tbShow.Hint := MsgMenuTbLayers; + tbGridOn.Hint := MsgMenuTbGrid; + tbGrid.Hint := MsgMenuTbGridStep; + tbTestMap.Hint := MsgMenuTbLaunch; // Всплывающее меню для кнопки слоев: - miLayerP1.Caption := _lc[I_MENU_LAYER_BACK]; - miLayerP2.Caption := _lc[I_MENU_LAYER_WALL]; - miLayerP3.Caption := _lc[I_MENU_LAYER_FORE]; - miLayerP4.Caption := _lc[I_MENU_LAYER_STAIR]; - miLayerP5.Caption := _lc[I_MENU_LAYER_WATER]; - miLayerP6.Caption := _lc[I_MENU_LAYER_ITEM]; - miLayerP7.Caption := _lc[I_MENU_LAYER_MONSTER]; - miLayerP8.Caption := _lc[I_MENU_LAYER_AREA]; - miLayerP9.Caption := _lc[I_MENU_LAYER_TRIGGER]; + miLayerP1.Caption := MsgMenuLayerBack; + miLayerP2.Caption := MsgMenuLayerWall; + miLayerP3.Caption := MsgMenuLayerFore; + miLayerP4.Caption := MsgMenuLayerStair; + miLayerP5.Caption := MsgMenuLayerWater; + miLayerP6.Caption := MsgMenuLayerItem; + miLayerP7.Caption := MsgMenuLayerMonster; + miLayerP8.Caption := MsgMenuLayerArea; + miLayerP9.Caption := MsgMenuLayerTrigger; // Кнопка применения свойств: - bApplyProperty.Caption := _lc[I_BTN_APPLY_PROPS]; + bApplyProperty.Caption := MsgBtnApplyProps; // Редактор свойств объектов: - vleObjectProperty.TitleCaptions[0] := _lc[I_CTRL_PROP_KEY]; - vleObjectProperty.TitleCaptions[1] := _lc[I_CTRL_PROP_VALUE]; + vleObjectProperty.TitleCaptions[0] := MsgCtrlPropKey; + vleObjectProperty.TitleCaptions[1] := MsgCtrlPropValue; // Вкладка "Панели": - tsPanels.Caption := _lc[I_CTRL_PANELS]; - lbPanelType.Hint := _lc[I_PROP_PANEL_TYPE]; - lbTextureList.Hint := _lc[I_CTRL_LIST_TEXTURE]; + tsPanels.Caption := MsgCtrlPanels; + lbPanelType.Hint := MsgPropPanelType; + lbTextureList.Hint := MsgCtrlListTexture; // Панель настройки текстур: - LabelTxW.Caption := _lc[I_LAB_TEX_WIDTH]; - LabelTxH.Caption := _lc[I_LAB_TEX_HEIGHT]; - cbPreview.Caption := _lc[I_CTRL_PREVIEW]; - bbAddTexture.Hint := _lc[I_BTN_TEXTURE_ADD]; - bbRemoveTexture.Hint := _lc[I_BTN_TEXTURE_DELETE]; - bClearTexture.Hint := _lc[I_BTN_TEXTURE_EMPTY]; + LabelTxW.Caption := MsgLabTexWidth; + LabelTxH.Caption := MsgLabTexHeight; + cbPreview.Caption := MsgCtrlPreview; + bbAddTexture.Hint := MsgBtnTextureAdd; + bbRemoveTexture.Hint := MsgBtnTextureDelete; + bClearTexture.Hint := MsgBtnTextureEmpty; // Вкладка "Предметы": - tsItems.Caption := _lc[I_CTRL_ITEMS]; - lbItemList.Hint := _lc[I_CTRL_LIST_ITEM]; - cbOnlyDM.Caption := _lc[I_CTRL_ITEM_DM]; - cbFall.Caption := _lc[I_CTRL_ITEM_FALLS]; + tsItems.Caption := MsgCtrlItems; + lbItemList.Hint := MsgCtrlListItem; + cbOnlyDM.Caption := MsgCtrlItemDm; + cbFall.Caption := MsgCtrlItemFalls; // Вкладка "Монстры": - tsMonsters.Caption := _lc[I_CTRL_MONSTERS]; - lbMonsterList.Hint := _lc[I_CTRL_LIST_MONSTER]; - rbMonsterLeft.Caption := _lc[I_CTRL_LEFT]; - rbMonsterRight.Caption := _lc[I_CTRL_RIGHT]; + tsMonsters.Caption := MsgCtrlMonsters; + lbMonsterList.Hint := MsgCtrlListMonster; + rbMonsterLeft.Caption := MsgCtrlLeft; + rbMonsterRight.Caption := MsgCtrlRight; // Вкладка "Области": - tsAreas.Caption := _lc[I_CTRL_AREAS]; - lbAreasList.Hint := _lc[I_CTRL_LIST_AREA]; - rbAreaLeft.Caption := _lc[I_CTRL_LEFT]; - rbAreaRight.Caption := _lc[I_CTRL_RIGHT]; + tsAreas.Caption := MsgCtrlAreas; + lbAreasList.Hint := MsgCtrlListArea; + rbAreaLeft.Caption := MsgCtrlLeft; + rbAreaRight.Caption := MsgCtrlRight; // Вкладка "Триггеры": - tsTriggers.Caption := _lc[I_CTRL_TRIGGERS]; - lbTriggersList.Hint := _lc[I_CTRL_LIST_TRIGGER]; - clbActivationType.Hint := _lc[I_CTRL_LIST_ACTIVE]; - clbKeys.Hint := _lc[I_CTRL_LIST_KEYS]; + tsTriggers.Caption := MsgCtrlTriggers; + lbTriggersList.Hint := MsgCtrlListTrigger; + clbActivationType.Hint := MsgCtrlListActive; + clbKeys.Hint := MsgCtrlListKeys; end; // Форма "О программе": with AboutForm do begin - Caption := _lc[I_CAP_ABOUT]; - LabelTitle.Caption := _lc[I_EDITOR_TITLE]; - LabelVer.Caption := _lc[I_LAB_ABOUT_VER]; - LabelAuthor.Caption := _lc[I_LAB_ABOUT_AUTHOR]; - LabelAuthor2.Caption := _lc[I_LAB_ABOUT_AUTHOR_2]; - LabelMail.Caption := _lc[I_LAB_ABOUT_MAIL]; - LabelMail2.Caption := _lc[I_LAB_ABOUT_MAIL_2]; - LabelSite.Caption := _lc[I_LAB_ABOUT_SITE]; - LabelHttp.Caption := _lc[I_LAB_ABOUT_HTTP]; + Caption := MsgCapAbout; + LabelTitle.Caption := MsgEditorTitle; + LabelVer.Caption := MsgLabAboutVer; + LabelAuthor.Caption := MsgLabAboutAuthor; + LabelAuthor2.Caption := MsgLabAboutAuthor2; + LabelMail.Caption := MsgLabAboutMail; + LabelMail2.Caption := MsgLabAboutMail2; + LabelSite.Caption := MsgLabAboutSite; + LabelHttp.Caption := MsgLabAboutHttp; end; // Форма "Тип активации": with ActivationTypeForm do begin - Caption := _lc[I_CAP_ACT]; - cbPlayerCollide.Caption := _lc[I_CTRL_ACT_PLAYER_CLOSE]; - cbMonsterCollide.Caption := _lc[I_CTRL_ACT_MONSTER_CLOSE]; - cbPlayerPress.Caption := _lc[I_CTRL_ACT_PLAYER_PRESS]; - cbMonsterPress.Caption := _lc[I_CTRL_ACT_MONSTER_PRESS]; - cbShot.Caption := _lc[I_CTRL_ACT_SHOT]; - cbNoMonster.Caption := _lc[I_CTRL_ACT_NO_MONSTER]; - bOK.Caption := _lc[I_BTN_OK]; + Caption := MsgCapAct; + cbPlayerCollide.Caption := MsgCtrlActPlayerClose; + cbMonsterCollide.Caption := MsgCtrlActMonsterClose; + cbPlayerPress.Caption := MsgCtrlActPlayerPress; + cbMonsterPress.Caption := MsgCtrlActMonsterPress; + cbShot.Caption := MsgCtrlActShot; + cbNoMonster.Caption := MsgCtrlActNoMonster; + bOK.Caption := MsgBtnOk; end; // Форма "Выбор текстуры для неба": with AddSkyForm do begin - Caption := _lc[I_CAP_ADD_SKY]; - LabelWADs.Caption := _lc[I_LAB_ADD_WADS]; - LabelSections.Caption := _lc[I_LAB_ADD_SECTIONS]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + Caption := MsgCapAddSky; + LabelWADs.Caption := MsgLabAddWads; + LabelSections.Caption := MsgLabAddSections; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; // Форма "Выбор звука или музыки": with AddSoundForm do begin - Caption := _lc[I_CAP_ADD_SOUND]; - LabelWADs.Caption := _lc[I_LAB_ADD_WADS]; - LabelSections.Caption := _lc[I_LAB_ADD_SECTIONS]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; - bEmpty.Caption := _lc[I_BTN_NO_SOUND]; + Caption := MsgCapAddSound; + LabelWADs.Caption := MsgLabAddWads; + LabelSections.Caption := MsgLabAddSections; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; + bEmpty.Caption := MsgBtnNoSound; end; // Форма "Выбор текстуры": with AddTextureForm do begin - Caption := _lc[I_CAP_ADD_TEXTURE]; - LabelWADs.Caption := _lc[I_LAB_ADD_WADS]; - LabelSections.Caption := _lc[I_LAB_ADD_SECTIONS]; - bAddTexture.Caption := _lc[I_BTN_ADD]; - bClose.Caption := _lc[I_BTN_CLOSE]; - bAddClose.Caption := _lc[I_BTN_ADD_CLOSE]; + Caption := MsgCapAddTexture; + LabelWADs.Caption := MsgLabAddWads; + LabelSections.Caption := MsgLabAddSections; + bAddTexture.Caption := MsgBtnAdd; + bClose.Caption := MsgBtnClose; + bAddClose.Caption := MsgBtnAddClose; end; // Форма "Выбор типа монстра" / "Выбор типа предмета": - ChooseTypeForm.bOK.Caption := _lc[I_BTN_OK]; + ChooseTypeForm.bOK.Caption := MsgBtnOk; // Форма "Ключи": with KeysForm do begin - Caption := _lc[I_CAP_KEYS]; - cbRedKey.Caption := _lc[I_CTRL_KEYS_RED]; - cbGreenKey.Caption := _lc[I_CTRL_KEYS_GREEN]; - cbBlueKey.Caption := _lc[I_CTRL_KEYS_BLUE]; - cbRedTeam.Caption := _lc[I_CTRL_KEYS_TEAM_RED]; - cbBlueTeam.Caption := _lc[I_CTRL_KEYS_TEAM_BLUE]; - bOK.Caption := _lc[I_BTN_OK]; + Caption := MsgCapKeys; + cbRedKey.Caption := MsgCtrlKeysRed; + cbGreenKey.Caption := MsgCtrlKeysGreen; + cbBlueKey.Caption := MsgCtrlKeysBlue; + cbRedTeam.Caption := MsgCtrlKeysTeamRed; + cbBlueTeam.Caption := MsgCtrlKeysTeamBlue; + bOK.Caption := MsgBtnOk; end; // Форма "Проверка карты": with MapCheckForm do begin - Caption := _lc[I_CAP_TEST]; - bCheckMap.Caption := _lc[I_BTN_TEST_AGAIN]; - bClose.Caption := _lc[I_BTN_CLOSE]; + Caption := MsgCapTest; + bCheckMap.Caption := MsgBtnTestAgain; + bClose.Caption := MsgBtnClose; end; // Форма "Оптимизация карты": with MapOptimizationForm do begin - Caption := _lc[I_CAP_OPT]; + Caption := MsgCapOpt; // Выбор оптимизации: - GroupBoxOpt.Caption := _lc[I_CTRL_OPT_GB]; - rbTexturesOptimization.Caption := _lc[I_CTRL_OPT_TEXTURE]; - rbPanelsOptimization.Caption := _lc[I_CTRL_OPT_PANEL]; + GroupBoxOpt.Caption := MsgCtrlOptGb; + rbTexturesOptimization.Caption := MsgCtrlOptTexture; + rbPanelsOptimization.Caption := MsgCtrlOptPanel; // Оптимизация текстур: - bBeginTextureOptimization.Caption := _lc[I_BTN_START]; + bBeginTextureOptimization.Caption := MsgBtnStart; // Оптимизация панелей: - cbOptimizeWalls.Caption := _lc[I_CTRL_OPT_WALL]; - cbOptimizeForeGround.Caption := _lc[I_CTRL_OPT_FORE]; - cbOptimizeBackGround.Caption := _lc[I_CTRL_OPT_BACK]; - cbOptimizeSteps.Caption := _lc[I_CTRL_OPT_STAIR]; - cbOptimizeWater.Caption := _lc[I_CTRL_OPT_WATER]; - cbOptimizeAcid1.Caption := _lc[I_CTRL_OPT_ACID1]; - cbOptimizeAcid2.Caption := _lc[I_CTRL_OPT_ACID2]; - cbOptimizeLift.Caption := _lc[I_CTRL_OPT_LIFT]; - cbOptimizeBlockMon.Caption := _lc[I_CTRL_OPT_BLOCKMON]; - bBeginPanelsOptimization.Caption := _lc[I_BTN_START]; + cbOptimizeWalls.Caption := MsgCtrlOptWall; + cbOptimizeForeGround.Caption := MsgCtrlOptFore; + cbOptimizeBackGround.Caption := MsgCtrlOptBack; + cbOptimizeSteps.Caption := MsgCtrlOptStair; + cbOptimizeWater.Caption := MsgCtrlOptWater; + cbOptimizeAcid1.Caption := MsgCtrlOptAcid1; + cbOptimizeAcid2.Caption := MsgCtrlOptAcid2; + cbOptimizeLift.Caption := MsgCtrlOptLift; + cbOptimizeBlockMon.Caption := MsgCtrlOptBlockmon; + bBeginPanelsOptimization.Caption := MsgBtnStart; end; // Форма "Параметры карты": with MapOptionsForm do begin - Caption := _lc[I_CAP_SETS]; + Caption := MsgCapSets; // Основные параметры: - LabelName.Caption := _lc[I_LAB_SETS_NAME]; - LabelDesc.Caption := _lc[I_LAB_SETS_DESC]; - LabelAuthor.Caption := _lc[I_LAB_SETS_AUTHOR]; - LabelBack.Caption := _lc[I_LAB_SETS_BACK]; - LabelMusic.Caption := _lc[I_LAB_SETS_MUSIC]; + LabelName.Caption := MsgLabSetsName; + LabelDesc.Caption := MsgLabSetsDesc; + LabelAuthor.Caption := MsgLabSetsAuthor; + LabelBack.Caption := MsgLabSetsBack; + LabelMusic.Caption := MsgLabSetsMusic; // Статистика: - GBStats.Caption := _lc[I_CTRL_SETS_STATS]; - LabelTexs.Caption := _lc[I_LAB_SETS_TEXTURES]; - LabelPanels.Caption := _lc[I_LAB_SETS_PANELS]; - LabelItems.Caption := _lc[I_LAB_SETS_ITEMS]; - LabelMonsters.Caption := _lc[I_LAB_SETS_MONSTERS]; - LabelAreas.Caption := _lc[I_LAB_SETS_AREAS]; - LabelTriggers.Caption := _lc[I_LAB_SETS_TRIGGERS]; + GBStats.Caption := MsgCtrlSetsStats; + LabelTexs.Caption := MsgLabSetsTextures; + LabelPanels.Caption := MsgLabSetsPanels; + LabelItems.Caption := MsgLabSetsItems; + LabelMonsters.Caption := MsgLabSetsMonsters; + LabelAreas.Caption := MsgLabSetsAreas; + LabelTriggers.Caption := MsgLabSetsTriggers; // Размеры: - GBSizes.Caption := _lc[I_CTRL_SETS_SIZES]; - LabelWidth.Caption := _lc[I_LAB_SETS_WIDTH]; - LabelHeight.Caption := _lc[I_LAB_SETS_HEIGHT]; - LabelCurSize.Caption := _lc[I_LAB_SETS_SIZES]; - LabelMapMove.Caption := _lc[I_LAB_SETS_MAPMOVE]; - cbSnapping.Caption := _lc[I_LAB_SETS_SNAPPING]; + GBSizes.Caption := MsgCtrlSetsSizes; + LabelWidth.Caption := MsgLabSetsWidth; + LabelHeight.Caption := MsgLabSetsHeight; + LabelCurSize.Caption := MsgLabSetsSizes; + LabelMapMove.Caption := MsgLabSetsMapmove; + cbSnapping.Caption := MsgLabSetsSnapping; // Кнопки: - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; // From "Editor settings": with OptionsForm do begin - Caption := _lc[I_CAP_ES]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + Caption := MsgCapEs; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; // TabGeneral: - cbShowDots.Caption := _lc[I_CTRL_ES_GRID]; - cbShowTexture.Caption := _lc[I_CTRL_ES_TEXTURE]; - cbShowSize.Caption := _lc[I_CTRL_ES_PANEL_SIZE]; - cbCheckerboard.Caption := _lc[I_CTRL_ES_CHECKERBOARD]; - LabelGrid.Caption := _lc[I_LAB_ES_GRID]; - LabelGridCol.Caption := _lc[I_LAB_ES_GRID_COLOR]; - LabelGridSize.Caption := _lc[I_LAB_ES_GRID_SIZE]; - LabelBack.Caption := _lc[I_LAB_ES_BACK]; - LabelPreview.Caption := _lc[I_LAB_ES_PREVIEW]; - LabelMinimap.Caption := _lc[I_LAB_ES_MINIMAP]; - LabelLanguage.Caption := _lc[I_LAB_ES_LANGUAGE]; + cbShowDots.Caption := MsgCtrlEsGrid; + cbShowTexture.Caption := MsgCtrlEsTexture; + cbShowSize.Caption := MsgCtrlEsPanelSize; + cbCheckerboard.Caption := MsgCtrlEsCheckerboard; + LabelGrid.Caption := MsgLabEsGrid; + LabelGridCol.Caption := MsgLabEsGridColor; + LabelGridSize.Caption := MsgLabEsGridSize; + LabelBack.Caption := MsgLabEsBack; + LabelPreview.Caption := MsgLabEsPreview; + LabelMinimap.Caption := MsgLabEsMinimap; + LabelLanguage.Caption := MsgLabEsLanguage; // TabFiles: - cbCompress.Caption := _lc[I_LAB_ES_COMPRESS]; - cbBackup.Caption := _lc[I_LAB_ES_BACKUP]; - LabelRecent.Caption := _lc[I_LAB_ES_RECENT]; + cbCompress.Caption := MsgLabEsCompress; + cbBackup.Caption := MsgLabEsBackup; + LabelRecent.Caption := MsgLabEsRecent; // TabTesting: - rbDM.Caption := _lc[I_CTRL_LAUNCH_DM]; - rbTDM.Caption := _lc[I_CTRL_LAUNCH_TDM]; - rbCTF.Caption := _lc[I_CTRL_LAUNCH_CTF]; - rbCOOP.Caption := _lc[I_CTRL_LAUNCH_COOP]; - cbTwoPlayers.Caption := _lc[I_CTRL_LAUNCH_2P]; - cbTeamDamage.Caption := _lc[I_CTRL_LAUNCH_FF]; - cbAllowExit.Caption := _lc[I_CTRL_LAUNCH_EXIT]; - cbWeaponStay.Caption := _lc[I_CTRL_LAUNCH_WEAPONS]; - cbMonstersDM.Caption := _lc[I_CTRL_LAUNCH_MONSTERS]; - cbMapOnce.Caption := _lc[I_CTRL_LAUNCH_CLOSE]; - LabelTime.Caption := _lc[I_LAB_LAUNCH_TIME]; - LabelSecs.Caption := _lc[I_LAB_LAUNCH_SECS]; - LabelScore.Caption := _lc[I_LAB_LAUNCH_SCORE]; - LabelPath.Caption := _lc[I_LAB_LAUNCH_PATH]; - FindD2dDialog.Title := _lc[I_CTRL_LAUNCH_OPEN]; - LabelArgs.Caption := _lc[I_LAB_LAUNCH_ARGS]; + rbDM.Caption := MsgCtrlLaunchDm; + rbTDM.Caption := MsgCtrlLaunchTdm; + rbCTF.Caption := MsgCtrlLaunchCtf; + rbCOOP.Caption := MsgCtrlLaunchCoop; + cbTwoPlayers.Caption := MsgCtrlLaunch2p; + cbTeamDamage.Caption := MsgCtrlLaunchFf; + cbAllowExit.Caption := MsgCtrlLaunchExit; + cbWeaponStay.Caption := MsgCtrlLaunchWeapons; + cbMonstersDM.Caption := MsgCtrlLaunchMonsters; + cbMapOnce.Caption := MsgCtrlLaunchClose; + LabelTime.Caption := MsgLabLaunchTime; + LabelSecs.Caption := MsgLabLaunchSecs; + LabelScore.Caption := MsgLabLaunchScore; + LabelPath.Caption := MsgLabLaunchPath; + FindD2dDialog.Title := MsgCtrlLaunchOpen; + LabelArgs.Caption := MsgLabLaunchArgs; end; // Форма "Упаковать карту": with PackMapForm do begin - Caption := _lc[I_CAP_PACK]; - bPack.Caption := _lc[I_BTN_PACK]; - LabelSaveTo.Caption := _lc[I_LAB_PACK_SAVE_TO]; - LabelMapName.Caption := _lc[I_LAB_PACK_MAP_NAME]; + Caption := MsgCapPack; + bPack.Caption := MsgBtnPack; + LabelSaveTo.Caption := MsgLabPackSaveTo; + LabelMapName.Caption := MsgLabPackMapName; // Что упаковывать: - cbTextrures.Caption := _lc[I_CTRL_PACK_TEXTURES]; - LabelTextures.Caption := _lc[I_LAB_PACK_TEXTURES]; - cbSky.Caption := _lc[I_CTRL_PACK_SKY]; - LabelSky.Caption := _lc[I_LAB_PACK_SKY]; - cbMusic.Caption := _lc[I_CTRL_PACK_MUSIC]; - LabelMusic.Caption := _lc[I_LAB_PACK_MUSIC]; - cbAdd.Caption := _lc[I_CTRL_PACK_ADD]; - cbNonStandart.Caption := _lc[I_CTRL_PACK_NON_STD]; + cbTextrures.Caption := MsgCtrlPackTextures; + LabelTextures.Caption := MsgLabPackTextures; + cbSky.Caption := MsgCtrlPackSky; + LabelSky.Caption := MsgLabPackSky; + cbMusic.Caption := MsgCtrlPackMusic; + LabelMusic.Caption := MsgLabPackMusic; + cbAdd.Caption := MsgCtrlPackAdd; + cbNonStandart.Caption := MsgCtrlPackNonStd; end; // Форма "Сохранить карту": with SaveMapForm do begin - Caption := _lc[I_CAP_SAVE]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + Caption := MsgCapSave; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; // Форма "Сохранить мини-карту": with SaveMiniMapForm do begin - Caption := _lc[I_CAP_MINI]; - LabelScale.Caption := _lc[I_LAB_MINI_SCALE]; - bSave.Caption := _lc[I_BTN_SAVE]; - bClose.Caption := _lc[I_BTN_CLOSE]; + Caption := MsgCapMini; + LabelScale.Caption := MsgLabMiniScale; + bSave.Caption := MsgBtnSave; + bClose.Caption := MsgBtnClose; end; // Форма "Выбор карты": with SelectMapForm do begin - Caption := _lc[I_CAP_SELECT]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + Caption := MsgCapSelect; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; // Заголовок приложения: - Application.Title := _lc[I_EDITOR_TITLE]; -end; - -procedure g_Language_Load(fileName: String); -var - F: TextFile; - key, value: String; - i: TStrings_Locale; - k: Integer; - ok: Boolean; - -begin -// Значения по-умолчанию: - for i := Low(TStrings_Locale) to High(TStrings_Locale) do - _lc[i] := g_lang_default[i][LANGUAGE_ENGLISH_N]; - - if FileExists(fileName) then - begin - AssignFile(F, fileName); - ReSet(F); - k := 0; - - // Читаем файл: - while not EoF(F) do - begin - // Читаем строку: - ReadLn(F, key); - key := Trim(key); - - // Строка - ключ перевода: - if (key <> '') and - (key[1] = '[') and - (Pos(']', key) > 2) then - begin - key := UpperCase(Copy(key, 2, Pos(']', key)-2)); - - // Пропускаем пустые строки до строки - перевода: - value := ''; - while (not EoF(F)) and (value = '') do - begin - ReadLn(F, value); - value := Trim(value); - end; - - // Есть строка - перевод: - if value <> '' then - begin - // Ищем индекс ключа перевода: - ok := False; - i := TStrings_Locale(k); - - // От текущего к первому: - while i > Low(TStrings_Locale) do - begin - if g_lang_default[i][1] = key then - begin - _lc[i] := value; - ok := True; - Break; - end; - - Dec(i); - end; - - // Первый: - if not ok then - begin - i := Low(TStrings_Locale); - - if (g_lang_default[i][1] = key) then - begin - _lc[i] := value; - ok := True; - end; - end; - - // От следующего за текущим до последнего: - if not ok then - begin - i := TStrings_Locale(k); - - while i < High(TStrings_Locale) do - begin - Inc(i); - - if g_lang_default[i][1] = key then - begin - _lc[i] := value; - Break; - end; - end; - end; - end; - - Inc(k); - end; - end; - - CloseFile(F); - end - else - e_WriteLog('Language file "'+fileName+'" not found!', MSG_WARNING); - - SetupArrays(); - SetupCaptions(); - RemoveSelectFromObjects(); + Application.Title := MsgEditorTitle; end; procedure g_Language_Set(lang: String); -var - i: TStrings_Locale; - n: Byte; - + var syslang, fallbacklang: String; begin - if lang = LANGUAGE_ENGLISH then - n := LANGUAGE_ENGLISH_N - else - n := LANGUAGE_RUSSIAN_N; - - for i := Low(TStrings_Locale) to High(TStrings_Locale) do - begin - _lc[i] := g_lang_default[i][n]; - // have to cache a CP1251 version for GL text - _glc[i] := utf8to1251(g_lang_default[i][n]); + e_WriteLog('g_Language_Set: requested lang is "' + lang + '"', MSG_NOTIFY); + GetLanguageIDs(syslang, fallbacklang); + if lang = '' then lang := syslang; + + ResetResourceTables; + try + e_WriteLog('g_Language_Set: try language "' + lang + '"', MSG_NOTIFY); + TranslateResourceStrings('data/lang/editor.' + lang + '.mo'); + except + try + e_WriteLog('g_Language_Set: try system language "' + syslang + '"', MSG_NOTIFY); + TranslateResourceStrings('data/lang/editor.' + syslang + '.mo'); + except + try + e_WriteLog('g_Language_Set: try fallback language "' + fallbacklang + '"', MSG_NOTIFY); + TranslateResourceStrings('data/lang/editor.' + fallbacklang + '.mo'); + except + e_WriteLog('g_Language_Set: use default strings', MSG_NOTIFY); + end; + end; end; - + e_WriteLog('g_Language_Set: ok', MSG_NOTIFY); SetupArrays(); SetupCaptions(); RemoveSelectFromObjects(); end; -procedure g_Language_Dump(fileName: String); -var - F: TextFile; - i: TStrings_Locale; - -begin - AssignFile(F, fileName); - ReWrite(F); - - for i := Low(TStrings_Locale) to High(TStrings_Locale) do - WriteLn(F, _lc[i]); - - CloseFile(F); -end; - End. diff --git a/src/editor/g_map.pas b/src/editor/g_map.pas index 3f3b58d..0c35d48 100644 --- a/src/editor/g_map.pas +++ b/src/editor/g_map.pas @@ -1404,7 +1404,7 @@ begin NH := 0; MainForm.pbLoad.Position := 0; - MainForm.lLoad.Caption := _lc[I_LOAD_WAD]; + MainForm.lLoad.Caption := MsgLoadWad; Application.ProcessMessages(); // Читаем ресурс карты @@ -1414,7 +1414,7 @@ begin MapReader := TMapReader_1.Create(); - MainForm.lLoad.Caption := _lc[I_LOAD_MAP]; + MainForm.lLoad.Caption := MsgLoadMap; Application.ProcessMessages(); MapReader.LoadMap(pData); @@ -1426,7 +1426,7 @@ begin begin MainForm.pbLoad.Position := 0; MainForm.pbLoad.Max := Length(textures); - MainForm.lLoad.Caption := _lc[I_LOAD_TEXTURES]; + MainForm.lLoad.Caption := MsgLoadTextures; for a := 0 to High(textures) do begin @@ -1488,7 +1488,7 @@ begin begin MainForm.pbLoad.Position := 0; MainForm.pbLoad.Max := Length(panels); - MainForm.lLoad.Caption := _lc[I_LOAD_PANELS]; + MainForm.lLoad.Caption := MsgLoadPanels; for a := 0 to High(panels) do begin @@ -1567,7 +1567,7 @@ begin begin MainForm.pbLoad.Position := 0; MainForm.pbLoad.Max := Length(items); - MainForm.lLoad.Caption := _lc[I_LOAD_ITEMS]; + MainForm.lLoad.Caption := MsgLoadItems; for a := 0 to High(items) do begin @@ -1591,7 +1591,7 @@ begin begin MainForm.pbLoad.Position := 0; MainForm.pbLoad.Max := Length(monsters); - MainForm.lLoad.Caption := _lc[I_LOAD_MONSTERS]; + MainForm.lLoad.Caption := MsgLoadMonsters; for a := 0 to High(monsters) do begin @@ -1614,7 +1614,7 @@ begin begin MainForm.pbLoad.Position := 0; MainForm.pbLoad.Max := Length(areas); - MainForm.lLoad.Caption := _lc[I_LOAD_AREAS]; + MainForm.lLoad.Caption := MsgLoadAreas; for a := 0 to High(areas) do begin @@ -1637,7 +1637,7 @@ begin begin MainForm.pbLoad.Position := 0; MainForm.pbLoad.Max := Length(triggers); - MainForm.lLoad.Caption := _lc[I_LOAD_TRIGGERS]; + MainForm.lLoad.Caption := MsgLoadTriggers; for a := 0 to High(triggers) do begin @@ -1713,7 +1713,7 @@ begin // Открытие карты: MainForm.pbLoad.Position := 0; - MainForm.lLoad.Caption := _lc[I_LOAD_MAP];; + MainForm.lLoad.Caption := MsgLoadMap;; Application.ProcessMessages(); map := TConfig.CreateFile(_FileName); @@ -1723,7 +1723,7 @@ begin MainForm.pbLoad.Max := i; MainForm.pbLoad.Position := 0; - MainForm.lLoad.Caption := _lc[I_LOAD_TEXTURES]; + MainForm.lLoad.Caption := MsgLoadTextures; for a := 1 to i do begin @@ -1753,7 +1753,7 @@ begin MainForm.pbLoad.Max := i; MainForm.pbLoad.Position := 0; - MainForm.lLoad.Caption := _lc[I_LOAD_PANELS]; + MainForm.lLoad.Caption := MsgLoadPanels; for a := 1 to i do begin @@ -1844,7 +1844,7 @@ begin MainForm.pbLoad.Max := i; MainForm.pbLoad.Position := 0; - MainForm.lLoad.Caption := _lc[I_LOAD_ITEMS]; + MainForm.lLoad.Caption := MsgLoadItems; for a := 1 to i do begin @@ -1874,7 +1874,7 @@ begin MainForm.pbLoad.Max := i; MainForm.pbLoad.Position := 0; - MainForm.lLoad.Caption := _lc[I_LOAD_AREAS]; + MainForm.lLoad.Caption := MsgLoadAreas; for a := 1 to i do begin diff --git a/src/editor/g_options.pas b/src/editor/g_options.pas index d1593e1..6f000d4 100644 --- a/src/editor/g_options.pas +++ b/src/editor/g_options.pas @@ -11,6 +11,7 @@ interface EditorWad: AnsiString; WadsDir: AnsiString; MapsDir: AnsiString; + LangDir: AnsiString; implementation diff --git a/src/editor/spectrum.pas b/src/editor/spectrum.pas index fcedd73..f7dfe35 100644 --- a/src/editor/spectrum.pas +++ b/src/editor/spectrum.pas @@ -194,7 +194,7 @@ begin begin FBuffer.Canvas.Font.Color := clWhite; ARect := BoundsRect; - DrawText(FBuffer.Canvas.Handle, PChar(_lc[I_LAB_SPECTRUM]), -1, ARect, + DrawText(FBuffer.Canvas.Handle, PChar(MsgLabSpectrum), -1, ARect, DT_WORDBREAK or DT_NOPREFIX or DT_VCENTER or DT_CENTER); end; -- 2.29.2