summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 6440b72)
raw | patch | inline | side by side (parent: 6440b72)
author | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Fri, 26 May 2023 22:19:21 +0000 (01:19 +0300) | ||
committer | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Fri, 26 May 2023 22:19:21 +0000 (01:19 +0300) |
20 files changed:
diff --git a/lang/editor.en_US.po b/lang/editor.en_US.po
--- /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 "<MAP WAD-FILE>"
+msgstr ""
+
+#: g_language:msgwadspecialtexs
+msgid "<EXTRA TEXTURES>"
+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
--- /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 "<MAP WAD-FILE>"
+msgstr "<WAD-ФАЙЛ КАРТЫ>"
+
+#: g_language:msgwadspecialtexs
+msgid "<EXTRA TEXTURES>"
+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 1246516f954c714d0183b4f35976c14c6915ced7..1ca2d20f5378c543ada9d7d268f207fec2b88100 100644 (file)
--- a/src/editor/Editor.lpr
+++ b/src/editor/Editor.lpr
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}
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}
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}
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;
Application.CreateForm(TSaveMiniMapForm, SaveMiniMapForm);
Application.CreateForm(TPackMapForm, PackMapForm);
Application.CreateForm(TChooseTypeForm, ChooseTypeForm);
- Application.CreateForm(TSelectLanguageForm, SelectLanguageForm);
+
+ g_Language_Set(gLanguage);
CheckParamFiles;
index f738384273e0e92aa8d74d2656175ef08389f274..103d9b031f3165cb39920cd042a8f4d56c5dcf3f 100644 (file)
// 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;
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 *)
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 *)
index e4a0f44fd86d0fd26a16b09a37572f0773f75e5b..bb4fa10e2ed6a12d92c739c050b3ea0577d5367c 100644 (file)
g_ProcessResourceStr(FSetResource, FileName, SectionName, ResourceName);
if FileName = '' then
- FileName := _lc[I_WAD_SPECIAL_MAP];
+ FileName := MsgWadSpecialMap;
if SectionName = '' then
SectionName := '..';
index 15ea34df25db38089339dacd558aafa618435ba1..914f0beccecb9f40143ec24eb9a23836c968da7a 100644 (file)
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;
g_ProcessResourceStr(FSetResource, FileName, SectionName, ResourceName);
if FileName = '' then
- FileName := _lc[I_WAD_SPECIAL_MAP];
+ FileName := MsgWadSpecialMap;
if SectionName = '' then
SectionName := '..';
index cdd06218b5338bd8c18fc4713f31b29986f30f8f..927017e6de9d6cfba12566faae8c9b5e51eb9d87 100644 (file)
Inherited;
lStats.Caption := '';
- cbWADList.Items.Add(_lc[I_WAD_SPECIAL_TEXS]);
+ cbWADList.Items.Add(MsgWadSpecialTexs);
eTextureName.Text := '';
iPreview.Canvas.FillRect(iPreview.Canvas.ClipRect);
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);
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);
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('..');
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 790a646a334b9ff69700d3237260483e6baf427b..86ec6b4f7681bfe84d94c061e20eaaeeea963337 100644 (file)
--- a/src/editor/f_main.pas
+++ b/src/editor/f_main.pas
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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
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;
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;
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;
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;
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;
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;
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
MapName: String;
idx: Integer;
begin
- SelectMapForm.Caption := _lc[I_CAP_OPEN];
+ SelectMapForm.Caption := MsgCapOpen;
SelectMapForm.GetMaps(FileName);
if (FileName = OpenedWAD) and
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();
tbShowMap.Down := ShowMap;
tbGridOn.Down := DotEnable;
pcObjects.ActivePageIndex := 0;
- Application.Title := _lc[I_EDITOR_TITLE];
+ Application.Title := MsgEditorTitle;
Application.OnIdle := OnIdle;
end;
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;
// Подсказка при выборе точки появления:
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;
// Подсказка при выборе панели двери:
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;
// Подсказка при выборе панели с текстурой:
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;
// Подсказка при выборе панели индикации выстрела:
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;
// Подсказка при выборе панели лифта:
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;
// Подсказка при выборе монстра:
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;
// Подсказка при выборе области воздействия:
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;
// Рисуем текстуры, если чертим панель:
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 // Растягиваем существующий
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;
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;
end;
2:
if lbMonsterList.ItemIndex = -1 then
- ErrorMessageBox(_lc[I_MSG_CHOOSE_MONSTER])
+ ErrorMessageBox(MsgMsgChooseMonster)
else
begin
monster.MonsterType := lbMonsterList.ItemIndex + MONSTER_DEMON;
end;
3:
if lbAreasList.ItemIndex = -1 then
- ErrorMessageBox(_lc[I_MSG_CHOOSE_AREA])
+ ErrorMessageBox(MsgMsgChooseArea)
else
if (lbAreasList.ItemIndex + 1) <> AREA_DOMFLAG then
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
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;
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;
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);
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);
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;
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;
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
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;
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;
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
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);
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]);
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
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
end;
// Новая текстура:
- TextureName := vleObjectProperty.Values[_lc[I_PROP_PANEL_TEX]];
+ TextureName := vleObjectProperty.Values[MsgPropPanelTex];
if TextureName <> '' then
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;
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;
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;
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;
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));
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;
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;
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;
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;
if (gPanels[a].PanelType <> 0) and
(gPanels[a].TextureName = SelectedTexture()) then
begin
- ErrorMessageBox(_lc[I_MSG_DEL_TEXTURE_CANT]);
+ ErrorMessageBox(MsgMsgDelTextureCant);
Exit;
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;
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
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
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;
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;
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;
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
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
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
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
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;
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));
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;
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);
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);
procedure TMainForm.aOpenMapExecute(Sender: TObject);
begin
- OpenDialog.Filter := _lc[I_FILE_FILTER_ALL];
+ OpenDialog.Filter := MsgFileFilterAll;
if OpenDialog.Execute() then
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);
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);
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);
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
);
var
idx: Integer;
begin
- SaveDialog.Filter := _lc[I_FILE_FILTER_WAD];
+ SaveDialog.Filter := MsgFileFilterWad;
if not SaveDialog.Execute() then
Exit;
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;
index bcb8ecf9cdfba7c230262dcdcbf7de771e6c30bc..6a562838b73f103f5cec73010193eb4083ea225e 100644 (file)
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;
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;
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;
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;
index efeac7d6dab3c7668fe0d5fd06613cf08495f87c..4986d0e9f9aa1f3ffb738260d9025f6853de99c4 100644 (file)
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(
if MainForm.lbTextureList.Count = 0 then
begin
- mOptimizationResult.Lines.Add(_lc[I_OPT_NO_TEXTURES]);
+ mOptimizationResult.Lines.Add(MsgOptNoTextures);
Exit;
end;
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]);
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;
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;
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.
index 3e331173159df91e493bc4aede3224be0434f7eb..4a7a74662f7017164835aaf1fd230892a7ec8bf2 100644 (file)
--- a/src/editor/f_options.lfm
+++ b/src/editor/f_options.lfm
object OptionsForm: TOptionsForm
- Left = 812
+ Left = 1164
Height = 360
- Top = 429
+ Top = 677
Width = 640
BorderIcons = [biSystemMenu]
BorderStyle = bsSingle
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
Left = 8
Height = 21
Top = 8
- Width = 208
+ Width = 249
Caption = 'Сжимать архив при сохранении'
TabOrder = 2
end
Left = 8
Height = 21
Top = 32
- Width = 218
+ Width = 258
Caption = 'Резервная копия при сохранении'
TabOrder = 3
end
Left = 8
Height = 21
Top = 104
- Width = 91
+ Width = 103
Caption = 'Deathmatch'
Checked = True
TabOrder = 0
Left = 8
Height = 21
Top = 120
- Width = 124
+ Width = 142
Caption = 'Team Deathmatch'
TabOrder = 1
end
Left = 8
Height = 21
Top = 136
- Width = 114
+ Width = 131
Caption = 'Capture the Flag'
TabOrder = 2
end
Left = 8
Height = 21
Top = 152
- Width = 92
+ Width = 102
Caption = 'Cooperative'
TabOrder = 3
end
Left = 168
Height = 21
Top = 104
- Width = 89
+ Width = 101
Caption = 'Два игрока'
TabOrder = 4
end
Left = 168
Height = 21
Top = 120
- Width = 141
+ Width = 164
Caption = 'Урон своей команде'
TabOrder = 5
end
Left = 168
Height = 21
Top = 136
- Width = 122
+ Width = 141
Caption = 'Выход из уровня'
Checked = True
State = cbChecked
Left = 168
Height = 21
Top = 152
- Width = 125
+ Width = 145
Caption = 'Оружие остается'
TabOrder = 7
end
Left = 168
Height = 21
Top = 168
- Width = 103
+ Width = 124
Caption = 'Монстры в DM'
TabOrder = 8
end
Left = 8
Height = 21
Top = 256
- Width = 241
+ Width = 287
Caption = 'Закрыть игру после выхода из карты'
TabOrder = 11
end
index a663bb20d5fc1200c972a87c0cb26eaec9636122..51f2ea698f63a1d6e8f62ebf069195e0fc95923e 100644 (file)
--- a/src/editor/f_options.pas
+++ b/src/editor/f_options.pas
uses
LCLIntf, LCLType, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls,
- ExtCtrls, ComCtrls, Registry, Math, Types;
+ ExtCtrls, ComCtrls, ActnList, Registry, Math, Types;
type
cbCheckerboard: TCheckBox;
cbCompress: TCheckBox;
cbBackup: TCheckBox;
+ cbLanguage: TComboBox;
PageControl: TPageControl;
TabGeneral: TTabSheet;
TabFiles: TTabSheet;
eRecent: TEdit;
UpDown3: TUpDown;
LabelLanguage: TLabel;
- rbRussian: TRadioButton;
- rbEnglish: TRadioButton;
LabelGridSize: TLabel;
cbDotSize: TComboBox;
// Map testing:
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}
end;
procedure TOptionsForm.FormActivate(Sender: TObject);
+ var info: TSearchRec; s: String; i: Integer;
begin
sDotColor.Brush.Color := DotColor;
cbShowDots.Checked := DotEnable;
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
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;
index a8ad07a7eecc8b9120c3e4d9d6f7512b71c793d9..f06f5c8c6b15e7715131a600304fc5abf2f1c7b3 100644 (file)
--- a/src/editor/f_packmap.pas
+++ b/src/editor/f_packmap.pas
procedure TPackMapForm.bSelectWADClick(Sender: TObject);
begin
- SaveDialog.Filter := _lc[I_FILE_FILTER_WAD];
+ SaveDialog.Filter := MsgFileFilterWad;
if SaveDialog.Execute() then
eWAD.Text := SaveDialog.FileName;
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;
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);
index c9fff9e176ad1ad4af64556d727649e390d3111f..a508c24bc2a2240d477dab6a5e650c4b6c041c84 100644 (file)
--- a/src/editor/f_savemap.pas
+++ b/src/editor/f_savemap.pas
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
+++ /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
+++ /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.
index 4d3ae7ed69acbbee655e126627a2d6ae45f6282f..bcb99cabcaa1d79d4a8a60697b569bd088bfad58 100644 (file)
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 = '<MAP WAD-FILE>';
+ MsgWadSpecialTexs = '<EXTRA TEXTURES>';
+
+ 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;
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', '<MAP WAD-FILE>',
- '<WAD-ФАЙЛ КАРТЫ>'),
- ('WAD SPECIAL TEXS', '<EXTRA TEXTURES>',
- '<СПЕЦТЕКСТУРЫ>'),
-
- ('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
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;
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
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 3f3b58d2e734b3d82969b930a6e7730e73a6f418..0c35d481384f5164798248af97a007c9244106b7 100644 (file)
--- a/src/editor/g_map.pas
+++ b/src/editor/g_map.pas
NH := 0;
MainForm.pbLoad.Position := 0;
- MainForm.lLoad.Caption := _lc[I_LOAD_WAD];
+ MainForm.lLoad.Caption := MsgLoadWad;
Application.ProcessMessages();
// Читаем ресурс карты
MapReader := TMapReader_1.Create();
- MainForm.lLoad.Caption := _lc[I_LOAD_MAP];
+ MainForm.lLoad.Caption := MsgLoadMap;
Application.ProcessMessages();
MapReader.LoadMap(pData);
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
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
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
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
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
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
// Открытие карты:
MainForm.pbLoad.Position := 0;
- MainForm.lLoad.Caption := _lc[I_LOAD_MAP];;
+ MainForm.lLoad.Caption := MsgLoadMap;;
Application.ProcessMessages();
map := TConfig.CreateFile(_FileName);
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
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
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
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
index d1593e14f338a4e154fc977f723c6b1cce00e3a2..6f000d459c87bdfd188f018eb19cf4ffc0151535 100644 (file)
--- a/src/editor/g_options.pas
+++ b/src/editor/g_options.pas
EditorWad: AnsiString;
WadsDir: AnsiString;
MapsDir: AnsiString;
+ LangDir: AnsiString;
implementation
index fcedd73783a9c850afc8794bd5d1a351ed40ae94..f7dfe351ba29ae5a77fb711e3cc9c8ade6ced99b 100644 (file)
--- a/src/editor/spectrum.pas
+++ b/src/editor/spectrum.pas
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;