summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCriticalFlaw <[email protected]>2021-07-01 15:19:03 -0400
committerCriticalFlaw <[email protected]>2021-07-01 15:19:03 -0400
commit90572a5be5d690c578f6bd6fcbe21dada75a1d81 (patch)
tree93e77f097f12eb61534550e4b59a0d12cb90a593
parent37603a8118b9793c9c545e01479992d1b09d2afc (diff)
Added Training Mode panels
-rw-r--r--resource/ui/training/basictraining/classdetails.res215
-rw-r--r--resource/ui/training/basictraining/classpanel.res52
-rw-r--r--resource/ui/training/main.res275
-rw-r--r--resource/ui/training/modeselection/modepanel.res111
-rw-r--r--resource/ui/training/offlinepractice/mapselection.res265
-rw-r--r--resource/ui/training/offlinepractice/practicemodeselection.res168
6 files changed, 1086 insertions, 0 deletions
diff --git a/resource/ui/training/basictraining/classdetails.res b/resource/ui/training/basictraining/classdetails.res
new file mode 100644
index 0000000..0b5a08d
--- /dev/null
+++ b/resource/ui/training/basictraining/classdetails.res
@@ -0,0 +1,215 @@
+"Resource/training/basictraining/classdetails.res"
+{
+ "StartTrainingButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "StartTrainingButton"
+ "xpos" "145"
+ "ypos" "210"
+ "wide" "160"
+ "tall" "25"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#TF_Training_StartTraining"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "50"
+ "dulltext" "0"
+ "brighttext" "0"
+ "Command" "startbasictraining"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "OverlayPanel"
+ {
+ "ControlName" "EditablePanel"
+ "fieldName" "OverlayPanel"
+ "xpos" "20"
+ "ypos" "0"
+ "wide" "300"
+ "tall" "200"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "paintbackground" "1"
+ "bgcolor_override" "DarkGrey"
+ "paintbackgroundtype" "2"
+
+ "ClassNameLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "ClassNameLabel"
+ "font" "HudFontMediumBold"
+ "labelText" "%classname%"
+ "textAlignment" "left"
+ "xpos" "10"
+ "ypos" "5"
+ "zpos" "1"
+ "wide" "430"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ }
+
+ "DescLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "DescLabel"
+ "font" "HudFontSmallest"
+ "labelText" "%description%"
+ "textAlignment" "left"
+ "xpos" "10"
+ "ypos" "1"
+ "wide" "280"
+ "tall" "100"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "1"
+ }
+
+ "WeaponSetLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "WeaponSetLabel"
+ "font" "HudFontSmallest"
+ "labelText" "#TR_StandardWeaponSet"
+ "textAlignment" "center"
+ "xpos" "10"
+ "ypos" "100"
+ "wide" "300"
+ "tall" "15"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "fgcolor_override" "TanLight"
+ }
+
+ "WeaponImage0"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "WeaponImage0"
+ "xpos" "15"
+ "ypos" "110"
+ "wide" "70"
+ "tall" "70"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ }
+
+ "WeaponImage1"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "WeaponImage1"
+ "xpos" "115"
+ "ypos" "110"
+ "wide" "70"
+ "tall" "70"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ }
+
+ "WeaponImage2"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "WeaponImage2"
+ "xpos" "215"
+ "ypos" "110"
+ "wide" "70"
+ "tall" "70"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ }
+
+ "PrimaryLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "PrimaryLabel"
+ "font" "HudFontSmallest"
+ "labelText" "#TR_Primary"
+ "textAlignment" "center"
+ "xpos" "15"
+ "ypos" "175"
+ "wide" "70"
+ "tall" "15"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ }
+
+ "SecondaryLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "SecondaryLabel"
+ "font" "HudFontSmallest"
+ "labelText" "#TR_Secondary"
+ "textAlignment" "center"
+ "xpos" "115"
+ "ypos" "175"
+ "wide" "70"
+ "tall" "15"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ }
+
+ "MeleeLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "MeleeLabel"
+ "font" "HudFontSmallest"
+ "labelText" "#TR_Melee"
+ "textAlignment" "center"
+ "xpos" "215"
+ "ypos" "175"
+ "wide" "70"
+ "tall" "15"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ }
+ }
+
+ "ClassImage"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "ClassImage"
+ "xpos" "325"
+ "ypos" "20"
+ "zpos" "1"
+ "wide" "100"
+ "tall" "200"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ }
+
+ "ClassIconImage"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "ClassIconImage"
+ "xpos" "375"
+ "ypos" "20"
+ "wide" "50"
+ "tall" "50"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "alpha" "32"
+ }
+} \ No newline at end of file
diff --git a/resource/ui/training/basictraining/classpanel.res b/resource/ui/training/basictraining/classpanel.res
new file mode 100644
index 0000000..7193004
--- /dev/null
+++ b/resource/ui/training/basictraining/classpanel.res
@@ -0,0 +1,52 @@
+"Resource/training/basictraining/classpanel.res"
+{
+ "Image"
+ {
+ "ControlName" "ImagePanel"
+ "fieldName" "Image"
+ "visible" "1"
+ "enabled" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "image" "illustrations/training_basic"
+ }
+
+ "SelectButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "SelectButton"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "%selectbuttontext%"
+ "font" "HudFontSmall"
+ "textAlignment" "center"
+ "textinsetx" "50"
+ "dulltext" "0"
+ "brighttext" "0"
+ "Command" "%selectcommand%"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "ProgressLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "ProgressLabel"
+ "font" "HudFontSmallest"
+ "labelText" ""
+ "textAlignment" "center"
+ "xpos" "0"
+ "ypos" "241"
+ "wide" "30"
+ "tall" "15"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "0"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "201 79 57 255"
+ }
+} \ No newline at end of file
diff --git a/resource/ui/training/main.res b/resource/ui/training/main.res
new file mode 100644
index 0000000..d09d0bc
--- /dev/null
+++ b/resource/ui/training/main.res
@@ -0,0 +1,275 @@
+"Resource/training/main.res"
+{
+ "TrainingDialog"
+ {
+ "ControlName" "CTrainingDialog"
+ "fieldName" "TrainingDialog"
+ "xpos" "0"
+ "ypos" "0"
+ "wide" "f0"
+ "tall" "480"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "bgcolor_override" "Transparent"
+ }
+
+ "Container"
+ {
+ "ControlName" "EditablePanel"
+ "fieldName" "Container"
+ "xpos" "c-225"
+ "ypos" "c-180"
+ "zpos" "0"
+ "wide" "450"
+ "tall" "360"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "paintbackground" "1"
+ "border" "CyanBorderThick"
+
+ "GradientBgPanel"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "GradientBgPanel"
+ "xpos" "10"
+ "ypos" "135"
+ "zpos" "1"
+ "wide" "0"
+ "tall" "0"
+ "visible" "0"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "image" "training/gradient"
+ "border" "ButtonBorder"
+ "paintbackgroundtype" "2"
+ "paintbackground" "1"
+ }
+
+ "Background"
+ {
+ "ControlName" "EditablePanel"
+ "fieldName" "Background"
+ "xpos" "0"
+ "ypos" "0"
+ "wide" "450"
+ "tall" "500"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "bgcolor_override" "DarkerGrey"
+ }
+
+ "TitleLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "TitleLabel"
+ "font" "HudFontMediumBold"
+ "labelText" "%title%"
+ "textAlignment" "center"
+ "xpos" "0"
+ "ypos" "15"
+ "zpos" "1"
+ "wide" "450"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "fgcolor" "TanLight"
+ }
+
+ "SubTitleLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "SubTitleLabel"
+ "font" "HudFontMediumSmall"
+ "labelText" "%subtitle%"
+ "textAlignment" "center"
+ "xpos" "0"
+ "ypos" "35"
+ "zpos" "1"
+ "wide" "450"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "0"
+ "enabled" "1"
+ }
+
+ "BackButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "BackButton"
+ "ypos" "320"
+ "zpos" "20"
+ "wide" "100"
+ "tall" "25"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "0"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#TF_BackCarat"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "50"
+ "dulltext" "0"
+ "brighttext" "0"
+ "Command" "prevpage"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "CancelButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "CancelButton"
+ "ypos" "320"
+ "zpos" "20"
+ "wide" "100"
+ "tall" "25"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#Cancel"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "50"
+ "dulltext" "0"
+ "brighttext" "0"
+ "Command" "cancel"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "ModeSelectionPanel"
+ {
+ "ControlName" "CModeSelectionPanel"
+ "fieldName" "ModeSelectionPanel"
+ "xpos" "0"
+ "ypos" "60"
+ "zpos" "2"
+ "wide" "500"
+ "tall" "400"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "paintBackground" "0"
+ "TrainingTitle" "#TF_Training_Title"
+ }
+
+ "BasicTraining_ClassSelectionPanel"
+ {
+ "ControlName" "CBasicTraining_ClassSelectionPanel"
+ "fieldName" "BasicTraining_ClassSelectionPanel"
+ "xpos" "10"
+ "ypos" "40"
+ "zpos" "2"
+ "wide" "430"
+ "tall" "400"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "0"
+ "enabled" "1"
+ "tabPosition" "0"
+ "paintBackground" "0"
+
+ "TrainingTitle" "#TR_AttackDefense"
+ "TrainingSubTitle" "#TF_SelectAClass"
+
+ "Class0Token" "#TF_Soldier"
+ "Class1Token" "#TF_Demoman"
+ "Class2Token" "#TF_Spy"
+ "Class3Token" "#TF_Engineer"
+
+ "Class0Image" "training/class_soldier"
+ "Class1Image" "training/class_demoman"
+ "Class2Image" "training/class_spy"
+ "Class3Image" "training/class_engineer"
+
+ "Class0Command" "basictraining_classselection_soldier"
+ "Class1Command" "basictraining_classselection_demoman"
+ "Class2Command" "basictraining_classselection_spy"
+ "Class3Command" "basictraining_classselection_engineer"
+ }
+
+ "BasicTraining_ClassDetailsPanel"
+ {
+ "ControlName" "CBasicTraining_ClassDetailsPanel"
+ "fieldName" "BasicTraining_ClassDetailsPanel"
+ "xpos" "0"
+ "ypos" "80"
+ "zpos" "2"
+ "wide" "450"
+ "tall" "500"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "0"
+ "enabled" "1"
+ "tabPosition" "0"
+ "paintBackground" "0"
+ "TrainingTitle" "#TR_AttackDefense"
+ }
+
+ "OfflinePractice_ModeSelectionPanel"
+ {
+ "ControlName" "COfflinePractice_ModeSelectionPanel"
+ "fieldName" "OfflinePractice_ModeSelectionPanel"
+ "xpos" "0"
+ "ypos" "60"
+ "wide" "450"
+ "tall" "500"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "0"
+ "enabled" "1"
+ "tabPosition" "0"
+ "paintBackground" "0"
+ "TrainingTitle" "#TR_PracticeModeSelectTitle"
+
+ "Mode0Token" "#Gametype_CP"
+ "Desc0Token" "#TF_GameModeDesc_CP"
+ "Image0Path" "illustrations/gamemode_cp"
+ "Mode0Id" "0"
+
+ "Mode1Token" "#Gametype_Koth"
+ "Desc1Token" "#TF_GameModeDesc_Koth"
+ "Image1Path" "illustrations/gamemode_koth"
+ "Mode1Id" "1"
+
+ "Mode2Token" "#Gametype_Escort"
+ "Desc2Token" "#TF_GameModeDesc_Escort"
+ "Image2Path" "illustrations/gamemode_payload"
+ "Mode2Id" "2"
+ }
+
+ "OfflinePractice_MapSelectionPanel"
+ {
+ "ControlName" "COfflinePractice_MapSelectionPanel"
+ "fieldName" "OfflinePractice_MapSelectionPanel"
+ "xpos" "0"
+ "ypos" "60"
+ "wide" "450"
+ "tall" "500"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "0"
+ "enabled" "1"
+ "tabPosition" "0"
+ "paintBackground" "0"
+ "TrainingTitle" "#TR_PracticeMapSelectTitle"
+ }
+ }
+} \ No newline at end of file
diff --git a/resource/ui/training/modeselection/modepanel.res b/resource/ui/training/modeselection/modepanel.res
new file mode 100644
index 0000000..f73b50b
--- /dev/null
+++ b/resource/ui/training/modeselection/modepanel.res
@@ -0,0 +1,111 @@
+"Resource/training/modeselection/modepanel.res"
+{
+ "ModeInfoContainer"
+ {
+ "ControlName" "EditablePanel"
+ "fieldName" "ModeInfoContainer"
+ "xpos" "0"
+ "ypos" "0"
+ "wide" "225"
+ "tall" "205"
+ "visible" "1"
+ "enabled" "1"
+ "border" "CyanBorder"
+
+ "ModeNameLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "ModeNameLabel"
+ "font" "HudFontMediumSmall"
+ "labelText" "%modename%"
+ "textAlignment" "center"
+ "xpos" "0"
+ "ypos" "5"
+ "zpos" "2"
+ "wide" "225"
+ "tall" "25"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "mouseinputenabled" "0"
+ "fgcolor_override" "TanLight"
+ }
+
+ "DescLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "DescLabel"
+ "font" "HudFontSmallest"
+ "labelText" "%description%"
+ "textAlignment" "north"
+ "xpos" "0"
+ "ypos" "30"
+ "zpos" "2"
+ "wide" "225"
+ "tall" "55"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "fgcolor_override" "TanLight"
+ "auto_wide_tocontents" "0"
+ "wrap" "1"
+ "centerwrap" "1"
+ }
+
+ "ImageFrame"
+ {
+ "ControlName" "EditablePanel"
+ "fieldName" "ImageFrame"
+ "xpos" "10"
+ "ypos" "25"
+ "wide" "205"
+ "tall" "205"
+ "visible" "1"
+ "enabled" "1"
+ "border" "NoBorder"
+ }
+
+ // Parented to ImageFrame in code.
+ "Image"
+ {
+ "ControlName" "ImagePanel"
+ "fieldName" "Image"
+ "xpos" "10"
+ "ypos" "32"
+ "wide" "185"
+ "tall" "185"
+ "visible" "1"
+ "enabled" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "image" ""
+ }
+ }
+
+ "StartButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "StartButton"
+ "xpos" "0"
+ "ypos" "0"
+ "wide" "225"
+ "tall" "205"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" ""
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "paintbackground" "0"
+ "textinsetx" "50"
+ "dulltext" "0"
+ "brighttext" "0"
+ "Command" "%startcommand%"
+ "sound_armed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+} \ No newline at end of file
diff --git a/resource/ui/training/offlinepractice/mapselection.res b/resource/ui/training/offlinepractice/mapselection.res
new file mode 100644
index 0000000..30047a7
--- /dev/null
+++ b/resource/ui/training/offlinepractice/mapselection.res
@@ -0,0 +1,265 @@
+"Resource/training/offlinepractice/mapselection.res"
+{
+ "MapImagePanel"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "MapImagePanel"
+ "xpos" "60"
+ "zpos" "0"
+ "wide" "330"
+ "tall" "330"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "border" "ButtonBorder"
+ "paintbackgroundtype" "2"
+ "paintbackground" "1"
+ }
+
+ "GradientPanel"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "GradientPanel"
+ "xpos" "60"
+ "ypos" "107"
+ "zpos" "1"
+ "wide" "330"
+ "tall" "80"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "image" "training/gradient_black"
+ }
+
+ "PrevButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "PrevButton"
+ "xpos" "36"
+ "ypos" "65"
+ "zpos" "20"
+ "wide" "18"
+ "tall" "43"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#TF_LessThan"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "0"
+ "dulltext" "0"
+ "brighttext" "0"
+ "paintbackground" "0"
+ "Command" "goprev"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "NextButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "NextButton"
+ "xpos" "396"
+ "ypos" "65"
+ "zpos" "20"
+ "wide" "18"
+ "tall" "43"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#TF_GreaterThan"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "0"
+ "dulltext" "0"
+ "brighttext" "0"
+ "paintbackground" "0"
+ "Command" "gonext"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "MapNameLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "MapNameLabel"
+ "font" "HudFontMediumSmall"
+ "labelText" "%mapname%"
+ "textAlignment" "center"
+ "xpos" "60"
+ "ypos" "155"
+ "zpos" "2"
+ "wide" "330"
+ "tall" "40"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "TanLight"
+ }
+
+ "CurPageLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "CurPageLabel"
+ "font" "HudFontMediumSmallBold"
+ "labelText" "%curpage%"
+ "textAlignment" "west"
+ "xpos" "65"
+ "ypos" "155"
+ "zpos" "100"
+ "wide" "33"
+ "tall" "40"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "TanLight"
+ }
+
+ "StartOfflinePracticeButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "StartOfflinePracticeButton"
+ "xpos" "150"
+ "ypos" "235"
+ "wide" "150"
+ "tall" "30"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#TF_StartPractice"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "50"
+ "dulltext" "0"
+ "brighttext" "0"
+ "Command" "startofflinepractice"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "DifficultyLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "DifficultyLabel"
+ "font" "HudFontMediumSmall"
+ "labelText" "#TF_Bot_Difficulty"
+ "textAlignment" "west"
+ "xpos" "65"
+ "ypos" "200"
+ "wide" "190"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "TanLight"
+ }
+
+ "DifficultyComboBox"
+ {
+ "ControlName" "ComboBox"
+ "fieldName" "DifficultyComboBox"
+ "Font" "HudFontSmallestBold"
+ "xpos" "130"
+ "ypos" "200"
+ "zpos" "1"
+ "wide" "80"
+ "tall" "20"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "1"
+ "textHidden" "0"
+ "editable" "0"
+ "maxchars" "-1"
+ "NumericInputOnly" "0"
+ "unicode" "0"
+ "textinsetx" "50"
+
+ "fgcolor_override" "TanLight"
+ "bgcolor_override" "DarkGrey"
+
+ "disabledFgColor_override" "235 226 202 255"
+ "disabledBgColor_override" "51 47 46 255"
+ "selectionColor_override" "51 47 46 255"
+ "selectionTextColor_override" "235 226 202 255"
+ "defaultSelectionBG2Color_override" "51 47 46 255"
+ }
+
+ "PlayersLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "PlayersLabel"
+ "font" "HudFontMediumSmall"
+ "labelText" "#IT_BotAddition_Title"
+ "textAlignment" "west"
+ "xpos" "230"
+ "ypos" "200"
+ "wide" "190"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "TanLight"
+ }
+
+ "NumPlayersTextEntry"
+ {
+ "ControlName" "TextEntry"
+ "fieldName" "NumPlayersTextEntry"
+ "font" "HudFontSmallest"
+ "textHidden" "0"
+ "textAlignment" "west"
+ "unicode" "1"
+ "wrap" "0"
+ "xpos" "267"
+ "ypos" "203"
+ "zpos" "50"
+ "wide" "22"
+ "tall" "15"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "maxchars" "2"
+ "NumericInputOnly" "1"
+ "selectallonfirstfocus" "1"
+ "bgcolor_override" "DarkGrey"
+ "fgcolor_override" "TanLight"
+ }
+
+ "SuggestedPlayerCountLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "SuggestedPlayerCountLabel"
+ "font" "HudFontSmallest"
+ "labelText" ""
+ "textAlignment" "west"
+ "xpos" "295"
+ "ypos" "200"
+ "zpos" "2"
+ "wide" "100"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "TanLight"
+ }
+} \ No newline at end of file
diff --git a/resource/ui/training/offlinepractice/practicemodeselection.res b/resource/ui/training/offlinepractice/practicemodeselection.res
new file mode 100644
index 0000000..12d13d6
--- /dev/null
+++ b/resource/ui/training/offlinepractice/practicemodeselection.res
@@ -0,0 +1,168 @@
+"Resource/training/offlinepractice/practicemodeselection.res"
+{
+ "GameModeImagePanel"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "GameModeImagePanel"
+ "xpos" "60"
+ "ypos" "15"
+ "wide" "250"
+ "tall" "250"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "paintbackgroundtype" "2"
+ "paintbackground" "1"
+ }
+
+ "GameModeImageBgPanel"
+ {
+ "ControlName" "ImagePanel"
+ "FieldName" "GameModeImageBgPanel"
+ "xpos" "60"
+ "ypos" "0"
+ "wide" "330"
+ "tall" "255"
+ "visible" "1"
+ "tileImage" "0"
+ "scaleImage" "1"
+ "image" ""
+ "border" "CyanBorder"
+ }
+
+ "PrevButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "PrevButton"
+ "xpos" "36"
+ "ypos" "105"
+ "zpos" "20"
+ "wide" "18"
+ "tall" "43"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#TF_LessThan"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "0"
+ "dulltext" "0"
+ "brighttext" "0"
+ "paintbackground" "0"
+ "Command" "goprev"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "NextButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "NextButton"
+ "xpos" "396"
+ "ypos" "105"
+ "zpos" "20"
+ "wide" "18"
+ "tall" "43"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" "#TF_GreaterThan"
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "0"
+ "dulltext" "0"
+ "brighttext" "0"
+ "paintbackground" "0"
+ "Command" "gonext"
+ "sound_depressed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+
+ "GameModeLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "GameModeLabel"
+ "font" "HudFontMediumSmall"
+ "labelText" "%gamemode%"
+ "textAlignment" "center"
+ "xpos" "60"
+ "ypos" "10"
+ "wide" "330"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "TanLight"
+ }
+
+ "CurPageLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "CurPageLabel"
+ "font" "HudFontSmallBold"
+ "labelText" "%curpage%"
+ "textAlignment" "north"
+ "xpos" "70"
+ "ypos" "10"
+ "zpos" "1"
+ "wide" "40"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "1"
+ "fgcolor_override" "TanLight"
+ }
+
+ "DescLabel"
+ {
+ "ControlName" "CExLabel"
+ "fieldName" "DescLabel"
+ "font" "HudFontSmallest"
+ "labelText" "%description%"
+ "textAlignment" "center"
+ "xpos" "60"
+ "ypos" "230"
+ "wide" "330"
+ "tall" "20"
+ "autoResize" "1"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "wrap" "0"
+ "fgcolor_override" "TanLight"
+ }
+
+ "SelectCurrentGameModeButton"
+ {
+ "ControlName" "CExButton"
+ "fieldName" "SelectCurrentGameModeButton"
+ "xpos" "60"
+ "ypos" "0"
+ "zpos" "1"
+ "wide" "330"
+ "tall" "255"
+ "autoResize" "0"
+ "pinCorner" "0"
+ "visible" "1"
+ "enabled" "1"
+ "tabPosition" "0"
+ "labelText" ""
+ "font" "HudFontMediumSmall"
+ "textAlignment" "center"
+ "textinsetx" "50"
+ "dulltext" "0"
+ "brighttext" "0"
+ "paintbackground" "0"
+ "Command" "selectcurrentgamemode"
+ "sound_armed" "UI/buttonclick.wav"
+ "sound_released" "UI/buttonclickrelease.wav"
+ }
+} \ No newline at end of file