mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-01-18 15:11:46 +00:00
- Added text color options to menu code so that the skill definitions can set
the color of the menu's text. - Externalized skill settings to ZDoom.pk3 SVN r559 (trunk)
This commit is contained in:
parent
52e5f8b8e1
commit
659107cacf
10 changed files with 266 additions and 176 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
November 3, 2007 (Changes by Graf Zahl)
|
||||||
|
- Added text color options to menu code so that the skill definitions can set
|
||||||
|
the color of the menu's text.
|
||||||
|
- Externalized skill settings to ZDoom.pk3
|
||||||
|
|
||||||
November 2, 2007 (Changes by Graf Zahl)
|
November 2, 2007 (Changes by Graf Zahl)
|
||||||
- Added skill definitions to MAPINFO.
|
- Added skill definitions to MAPINFO.
|
||||||
|
|
||||||
|
|
127
src/g_level.cpp
127
src/g_level.cpp
|
@ -103,7 +103,6 @@ static void ClearLevelInfoStrings (level_info_t *linfo);
|
||||||
static void ClearClusterInfoStrings (cluster_info_t *cinfo);
|
static void ClearClusterInfoStrings (cluster_info_t *cinfo);
|
||||||
static void ParseSkill ();
|
static void ParseSkill ();
|
||||||
static void G_VerifySkill();
|
static void G_VerifySkill();
|
||||||
static void InitializeDefaultSkills();
|
|
||||||
|
|
||||||
static FRandom pr_classchoice ("RandomPlayerClassChoice");
|
static FRandom pr_classchoice ("RandomPlayerClassChoice");
|
||||||
|
|
||||||
|
@ -524,12 +523,12 @@ void G_ParseMapInfo ()
|
||||||
int lump, lastlump = 0;
|
int lump, lastlump = 0;
|
||||||
|
|
||||||
atterm (G_UnloadMapInfo);
|
atterm (G_UnloadMapInfo);
|
||||||
InitializeDefaultSkills();
|
|
||||||
|
|
||||||
// Parse the default MAPINFO for the current game.
|
// Parse the default MAPINFO for the current game.
|
||||||
switch (gameinfo.gametype)
|
switch (gameinfo.gametype)
|
||||||
{
|
{
|
||||||
case GAME_Doom:
|
case GAME_Doom:
|
||||||
|
G_DoParseMapInfo (Wads.GetNumForFullName ("mapinfo/doomcommon.txt"));
|
||||||
switch (gamemission)
|
switch (gamemission)
|
||||||
{
|
{
|
||||||
case doom:
|
case doom:
|
||||||
|
@ -576,7 +575,7 @@ void G_ParseMapInfo ()
|
||||||
}
|
}
|
||||||
if (AllSkills.Size()==0)
|
if (AllSkills.Size()==0)
|
||||||
{
|
{
|
||||||
InitializeDefaultSkills();
|
I_FatalError ("You cannot use clearskills in a MAPINFO if you do not define any new skills after it.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -590,7 +589,7 @@ static void G_DoParseMapInfo (int lump)
|
||||||
QWORD levelflags;
|
QWORD levelflags;
|
||||||
|
|
||||||
SetLevelDefaults (&defaultinfo);
|
SetLevelDefaults (&defaultinfo);
|
||||||
SC_OpenLumpNum (lump, "MAPINFO");
|
SC_OpenLumpNum (lump, Wads.GetLumpFullName(lump));
|
||||||
HexenHack = false;
|
HexenHack = false;
|
||||||
|
|
||||||
while (SC_GetString ())
|
while (SC_GetString ())
|
||||||
|
@ -3050,6 +3049,7 @@ static void ParseSkill ()
|
||||||
skill.MenuNameIsLump = false;
|
skill.MenuNameIsLump = false;
|
||||||
skill.MustConfirm = false;
|
skill.MustConfirm = false;
|
||||||
skill.shortcut=0;
|
skill.shortcut=0;
|
||||||
|
skill.textcolor = CR_UNTRANSLATED;
|
||||||
|
|
||||||
SC_MustGetString();
|
SC_MustGetString();
|
||||||
skill.name = sc_String;
|
skill.name = sc_String;
|
||||||
|
@ -3111,6 +3111,13 @@ static void ParseSkill ()
|
||||||
skill.MenuName = sc_String;
|
skill.MenuName = sc_String;
|
||||||
skill.MenuNameIsLump = false;
|
skill.MenuNameIsLump = false;
|
||||||
}
|
}
|
||||||
|
else if (SC_Compare("PlayerClassName"))
|
||||||
|
{
|
||||||
|
SC_MustGetString ();
|
||||||
|
FName pc = sc_String;
|
||||||
|
SC_MustGetString ();
|
||||||
|
skill.MenuNamesForPlayerClass[pc]=sc_String;
|
||||||
|
}
|
||||||
else if (SC_Compare("MenuLump"))
|
else if (SC_Compare("MenuLump"))
|
||||||
{
|
{
|
||||||
SC_MustGetString ();
|
SC_MustGetString ();
|
||||||
|
@ -3121,6 +3128,24 @@ static void ParseSkill ()
|
||||||
{
|
{
|
||||||
skill.MustConfirm = true;
|
skill.MustConfirm = true;
|
||||||
}
|
}
|
||||||
|
else if (SC_Compare("Shortcut"))
|
||||||
|
{
|
||||||
|
SC_MustGetString();
|
||||||
|
skill.shortcut = tolower(sc_String[0]);
|
||||||
|
}
|
||||||
|
else if (SC_Compare("TextColor"))
|
||||||
|
{
|
||||||
|
SC_MustGetString();
|
||||||
|
FString c;
|
||||||
|
c.Format("[%s]", sc_String);
|
||||||
|
const BYTE * cp = (BYTE*)c.GetChars();
|
||||||
|
skill.textcolor = V_ParseFontColor(cp, 0, 0);
|
||||||
|
if (skill.textcolor == CR_UNDEFINED)
|
||||||
|
{
|
||||||
|
Printf("Undefined color '%s' in definition of skill %s\n", sc_String, skill.name.GetChars());
|
||||||
|
skill.textcolor = CR_UNTRANSLATED;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SC_UnGet ();
|
SC_UnGet ();
|
||||||
|
@ -3180,100 +3205,6 @@ int G_SkillProperty(ESkillProperty prop)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void InitializeDefaultSkills()
|
|
||||||
{
|
|
||||||
FSkillInfo skill;
|
|
||||||
EGameType g = gameinfo.gametype;
|
|
||||||
|
|
||||||
skill.shortcut=0;
|
|
||||||
|
|
||||||
// sk_baby
|
|
||||||
skill.name = "baby";
|
|
||||||
skill.AmmoFactor = (g & GAME_DoomStrife) ? FRACUNIT*2 : FRACUNIT*3/2;
|
|
||||||
skill.DamageFactor = FRACUNIT/2;
|
|
||||||
skill.FastMonsters = false;
|
|
||||||
skill.DisableCheats = false;
|
|
||||||
skill.EasyBossBrain = true;
|
|
||||||
skill.AutoUseHealth = true;
|
|
||||||
skill.RespawnCounter = 0;
|
|
||||||
skill.Aggressiveness = FRACUNIT;
|
|
||||||
skill.SpawnFilter = MTF_EASY;
|
|
||||||
skill.ACSReturn = 0;
|
|
||||||
skill.MenuName = g&GAME_DoomStrife ? "M_JKILL" : "MNU_WETNURSE";
|
|
||||||
skill.MenuNameIsLump = !!(g&GAME_DoomStrife);
|
|
||||||
skill.MustConfirm = false;
|
|
||||||
if (g & GAME_Hexen)
|
|
||||||
{
|
|
||||||
skill.MenuNamesForPlayerClass["fighter"] = "MNU_SQUIRE";
|
|
||||||
skill.MenuNamesForPlayerClass["cleric"] = "MNU_ALTARBOY";
|
|
||||||
skill.MenuNamesForPlayerClass["mage"] = "MNU_APPRENTICE";
|
|
||||||
}
|
|
||||||
AllSkills.Push(skill);
|
|
||||||
|
|
||||||
// sk_easy
|
|
||||||
skill.name = "easy";
|
|
||||||
skill.AmmoFactor = FRACUNIT;
|
|
||||||
skill.DamageFactor = FRACUNIT;
|
|
||||||
skill.EasyBossBrain = false;
|
|
||||||
skill.AutoUseHealth = false;
|
|
||||||
skill.RespawnCounter = 0;
|
|
||||||
skill.Aggressiveness = FRACUNIT;
|
|
||||||
skill.SpawnFilter = MTF_EASY;
|
|
||||||
skill.ACSReturn = 1;
|
|
||||||
skill.MenuName = g&GAME_DoomStrife ? "M_ROUGH" : "MNU_YELLOWBELLIES";
|
|
||||||
if (g & GAME_Hexen)
|
|
||||||
{
|
|
||||||
skill.MenuNamesForPlayerClass["fighter"] = "MNU_KNIGHT";
|
|
||||||
skill.MenuNamesForPlayerClass["cleric"] = "MNU_ACOLYTE";
|
|
||||||
skill.MenuNamesForPlayerClass["mage"] = "MNU_ENCHANTER";
|
|
||||||
}
|
|
||||||
AllSkills.Push(skill);
|
|
||||||
|
|
||||||
// sk_normal
|
|
||||||
skill.name = "normal";
|
|
||||||
skill.SpawnFilter = MTF_NORMAL;
|
|
||||||
skill.ACSReturn = 2;
|
|
||||||
skill.MenuName = g&GAME_DoomStrife ? "M_HURT" : "MNU_BRINGEST";
|
|
||||||
if (g & GAME_Hexen)
|
|
||||||
{
|
|
||||||
skill.MenuNamesForPlayerClass["fighter"] = "MNU_WARRIOR";
|
|
||||||
skill.MenuNamesForPlayerClass["cleric"] = "MNU_PRIEST";
|
|
||||||
skill.MenuNamesForPlayerClass["mage"] = "MNU_SORCERER";
|
|
||||||
}
|
|
||||||
AllSkills.Push(skill);
|
|
||||||
|
|
||||||
// sk_hard
|
|
||||||
skill.name = "hard";
|
|
||||||
skill.SpawnFilter = MTF_HARD;
|
|
||||||
skill.ACSReturn = 3;
|
|
||||||
skill.MenuName = g&GAME_DoomStrife ? "M_ULTRA" : "MNU_SMITE";
|
|
||||||
if (g & GAME_Hexen)
|
|
||||||
{
|
|
||||||
skill.MenuNamesForPlayerClass["fighter"] = "MNU_BERSERKER";
|
|
||||||
skill.MenuNamesForPlayerClass["cleric"] = "MNU_CARDINAL";
|
|
||||||
skill.MenuNamesForPlayerClass["mage"] = "MNU_WARLOCK";
|
|
||||||
}
|
|
||||||
AllSkills.Push(skill);
|
|
||||||
|
|
||||||
// sk_nightmare
|
|
||||||
skill.name = "nightmare";
|
|
||||||
skill.AmmoFactor = (g & GAME_DoomStrife) ? FRACUNIT*2 : FRACUNIT*3/2;
|
|
||||||
skill.DamageFactor = FRACUNIT;
|
|
||||||
skill.FastMonsters = true;
|
|
||||||
skill.DisableCheats = true;
|
|
||||||
skill.RespawnCounter = (g & GAME_Raven)? 0 : TICRATE * (g != GAME_Strife ? 12 : 16);
|
|
||||||
skill.Aggressiveness = FRACUNIT;
|
|
||||||
skill.ACSReturn = 4;
|
|
||||||
skill.MenuName = g&GAME_DoomStrife ? "M_NMARE" : "MNU_BLACKPLAGUE";
|
|
||||||
skill.MustConfirm = true;
|
|
||||||
if (g & GAME_Hexen)
|
|
||||||
{
|
|
||||||
skill.MenuNamesForPlayerClass["fighter"] = "MNU_TITAN";
|
|
||||||
skill.MenuNamesForPlayerClass["cleric"] = "MNU_POPE";
|
|
||||||
skill.MenuNamesForPlayerClass["mage"] = "MNU_ARCHMAGE";
|
|
||||||
}
|
|
||||||
AllSkills.Push(skill);
|
|
||||||
}
|
|
||||||
|
|
||||||
void G_VerifySkill()
|
void G_VerifySkill()
|
||||||
{
|
{
|
||||||
|
|
|
@ -390,6 +390,7 @@ struct FSkillInfo
|
||||||
bool MenuNameIsLump;
|
bool MenuNameIsLump;
|
||||||
bool MustConfirm;
|
bool MustConfirm;
|
||||||
char shortcut;
|
char shortcut;
|
||||||
|
int textcolor;
|
||||||
|
|
||||||
FSkillInfo() {}
|
FSkillInfo() {}
|
||||||
FSkillInfo(const FSkillInfo &other)
|
FSkillInfo(const FSkillInfo &other)
|
||||||
|
@ -414,6 +415,7 @@ struct FSkillInfo
|
||||||
MenuNameIsLump = other.MenuNameIsLump;
|
MenuNameIsLump = other.MenuNameIsLump;
|
||||||
MustConfirm = other.MustConfirm;
|
MustConfirm = other.MustConfirm;
|
||||||
shortcut = other.shortcut;
|
shortcut = other.shortcut;
|
||||||
|
textcolor = other.textcolor;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
164
src/m_menu.cpp
164
src/m_menu.cpp
|
@ -248,12 +248,12 @@ static int epi; // Selected episode
|
||||||
//
|
//
|
||||||
static oldmenuitem_t MainMenu[]=
|
static oldmenuitem_t MainMenu[]=
|
||||||
{
|
{
|
||||||
{1,0,'n',"M_NGAME",M_NewGame},
|
{1,0,'n',"M_NGAME",M_NewGame, CR_UNTRANSLATED},
|
||||||
{1,0,'l',"M_LOADG",M_LoadGame},
|
{1,0,'l',"M_LOADG",M_LoadGame, CR_UNTRANSLATED},
|
||||||
{1,0,'s',"M_SAVEG",M_SaveGame},
|
{1,0,'s',"M_SAVEG",M_SaveGame, CR_UNTRANSLATED},
|
||||||
{1,0,'o',"M_OPTION",M_Options}, // [RH] Moved
|
{1,0,'o',"M_OPTION",M_Options, CR_UNTRANSLATED}, // [RH] Moved
|
||||||
{1,0,'r',"M_RDTHIS",M_ReadThis}, // Another hickup with Special edition.
|
{1,0,'r',"M_RDTHIS",M_ReadThis, CR_UNTRANSLATED}, // Another hickup with Special edition.
|
||||||
{1,0,'q',"M_QUITG",M_QuitDOOM}
|
{1,0,'q',"M_QUITG",M_QuitDOOM, CR_UNTRANSLATED}
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t MainDef =
|
static oldmenu_t MainDef =
|
||||||
|
@ -270,11 +270,11 @@ static oldmenu_t MainDef =
|
||||||
//
|
//
|
||||||
static oldmenuitem_t HereticMainMenu[] =
|
static oldmenuitem_t HereticMainMenu[] =
|
||||||
{
|
{
|
||||||
{1,1,'n',"MNU_NEWGAME",M_NewGame},
|
{1,1,'n',"MNU_NEWGAME",M_NewGame, CR_UNTRANSLATED},
|
||||||
{1,1,'o',"MNU_OPTIONS",M_Options},
|
{1,1,'o',"MNU_OPTIONS",M_Options, CR_UNTRANSLATED},
|
||||||
{1,1,'f',"MNU_GAMEFILES",M_GameFiles},
|
{1,1,'f',"MNU_GAMEFILES",M_GameFiles, CR_UNTRANSLATED},
|
||||||
{1,1,'i',"MNU_INFO",M_ReadThis},
|
{1,1,'i',"MNU_INFO",M_ReadThis, CR_UNTRANSLATED},
|
||||||
{1,1,'q',"MNU_QUITGAME",M_QuitDOOM}
|
{1,1,'q',"MNU_QUITGAME",M_QuitDOOM, CR_UNTRANSLATED}
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t HereticMainDef =
|
static oldmenu_t HereticMainDef =
|
||||||
|
@ -291,10 +291,10 @@ static oldmenu_t HereticMainDef =
|
||||||
//
|
//
|
||||||
static oldmenuitem_t ClassItems[] =
|
static oldmenuitem_t ClassItems[] =
|
||||||
{
|
{
|
||||||
{ 1,1, 'f', "MNU_FIGHTER", SCClass },
|
{ 1,1, 'f', "MNU_FIGHTER", SCClass, CR_UNTRANSLATED },
|
||||||
{ 1,1, 'c', "MNU_CLERIC", SCClass },
|
{ 1,1, 'c', "MNU_CLERIC", SCClass, CR_UNTRANSLATED },
|
||||||
{ 1,1, 'm', "MNU_MAGE", SCClass },
|
{ 1,1, 'm', "MNU_MAGE", SCClass, CR_UNTRANSLATED },
|
||||||
{ 1,1, 'r', "MNU_RANDOM", SCClass } // [RH]
|
{ 1,1, 'r', "MNU_RANDOM", SCClass, CR_UNTRANSLATED } // [RH]
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t ClassMenu =
|
static oldmenu_t ClassMenu =
|
||||||
|
@ -310,14 +310,14 @@ static oldmenu_t ClassMenu =
|
||||||
//
|
//
|
||||||
oldmenuitem_t ClassMenuItems[8] =
|
oldmenuitem_t ClassMenuItems[8] =
|
||||||
{
|
{
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
{1,1,0, NULL, M_ChooseClass },
|
{1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED },
|
||||||
};
|
};
|
||||||
|
|
||||||
oldmenu_t ClassMenuDef =
|
oldmenu_t ClassMenuDef =
|
||||||
|
@ -334,14 +334,14 @@ oldmenu_t ClassMenuDef =
|
||||||
//
|
//
|
||||||
oldmenuitem_t EpisodeMenu[MAX_EPISODES] =
|
oldmenuitem_t EpisodeMenu[MAX_EPISODES] =
|
||||||
{
|
{
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
{1,0,0, NULL, M_Episode},
|
{1,0,0, NULL, M_Episode, CR_UNTRANSLATED},
|
||||||
};
|
};
|
||||||
|
|
||||||
char EpisodeMaps[MAX_EPISODES][8];
|
char EpisodeMaps[MAX_EPISODES][8];
|
||||||
|
@ -361,8 +361,8 @@ oldmenu_t EpiDef =
|
||||||
//
|
//
|
||||||
static oldmenuitem_t FilesItems[] =
|
static oldmenuitem_t FilesItems[] =
|
||||||
{
|
{
|
||||||
{1,1,'l',"MNU_LOADGAME",M_LoadGame},
|
{1,1,'l',"MNU_LOADGAME",M_LoadGame, CR_UNTRANSLATED},
|
||||||
{1,1,'s',"MNU_SAVEGAME",M_SaveGame}
|
{1,1,'s',"MNU_SAVEGAME",M_SaveGame, CR_UNTRANSLATED}
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t FilesMenu =
|
static oldmenu_t FilesMenu =
|
||||||
|
@ -378,14 +378,14 @@ static oldmenu_t FilesMenu =
|
||||||
// DOOM SKILL SELECT
|
// DOOM SKILL SELECT
|
||||||
//
|
//
|
||||||
static oldmenuitem_t SkillSelectMenu[]={
|
static oldmenuitem_t SkillSelectMenu[]={
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
{ 1, 0, 0, "", M_ChooseSkill},
|
{ 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED},
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t SkillDef =
|
static oldmenu_t SkillDef =
|
||||||
|
@ -413,6 +413,17 @@ void M_StartupSkillMenu(const char *playerclass)
|
||||||
{
|
{
|
||||||
SkillDef.x = 38;
|
SkillDef.x = 38;
|
||||||
SkillDef.y = 30;
|
SkillDef.y = 30;
|
||||||
|
|
||||||
|
if (gameinfo.gametype == GAME_Hexen)
|
||||||
|
{
|
||||||
|
HexenSkillMenu.x = 38;
|
||||||
|
if (playerclass != NULL)
|
||||||
|
{
|
||||||
|
if (!stricmp(playerclass, "fighter")) HexenSkillMenu.x = 120;
|
||||||
|
else if (!stricmp(playerclass, "cleric")) HexenSkillMenu.x = 116;
|
||||||
|
else if (!stricmp(playerclass, "mage")) HexenSkillMenu.x = 112;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SkillDef.numitems = HexenSkillMenu.numitems = 0;
|
SkillDef.numitems = HexenSkillMenu.numitems = 0;
|
||||||
for(int i=0;i<AllSkills.Size() && i<8;i++)
|
for(int i=0;i<AllSkills.Size() && i<8;i++)
|
||||||
|
@ -422,15 +433,18 @@ void M_StartupSkillMenu(const char *playerclass)
|
||||||
SkillSelectMenu[i].name = skill.MenuName;
|
SkillSelectMenu[i].name = skill.MenuName;
|
||||||
SkillSelectMenu[i].fulltext = !skill.MenuNameIsLump;
|
SkillSelectMenu[i].fulltext = !skill.MenuNameIsLump;
|
||||||
SkillSelectMenu[i].alphaKey = skill.MenuNameIsLump? skill.shortcut : tolower(SkillSelectMenu[i].name[0]);
|
SkillSelectMenu[i].alphaKey = skill.MenuNameIsLump? skill.shortcut : tolower(SkillSelectMenu[i].name[0]);
|
||||||
|
SkillSelectMenu[i].textcolor = skill.textcolor;
|
||||||
|
SkillSelectMenu[i].alphaKey = skill.shortcut;
|
||||||
|
|
||||||
if (playerclass != NULL)
|
if (playerclass != NULL)
|
||||||
{
|
{
|
||||||
FString * pmnm = skill.MenuNamesForPlayerClass.CheckKey(playerclass);
|
FString * pmnm = skill.MenuNamesForPlayerClass.CheckKey(playerclass);
|
||||||
if (pmnm != NULL)
|
if (pmnm != NULL)
|
||||||
{
|
{
|
||||||
SkillSelectMenu[i].name = *pmnm;
|
SkillSelectMenu[i].name = GStrings(*pmnm);
|
||||||
SkillSelectMenu[i].fulltext = true;
|
SkillSelectMenu[i].fulltext = true;
|
||||||
SkillSelectMenu[i].alphaKey = tolower(pmnm->GetChars()[0]);
|
if (skill.shortcut==0)
|
||||||
|
SkillSelectMenu[i].alphaKey = tolower(SkillSelectMenu[i].name[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SkillDef.numitems++;
|
SkillDef.numitems++;
|
||||||
|
@ -439,11 +453,6 @@ void M_StartupSkillMenu(const char *playerclass)
|
||||||
// Hexen needs some manual coordinate adjustments based on player class
|
// Hexen needs some manual coordinate adjustments based on player class
|
||||||
if (gameinfo.gametype == GAME_Hexen)
|
if (gameinfo.gametype == GAME_Hexen)
|
||||||
{
|
{
|
||||||
if (!stricmp(playerclass, "fighter")) HexenSkillMenu.x = 120;
|
|
||||||
else if (!stricmp(playerclass, "cleric")) HexenSkillMenu.x = 116;
|
|
||||||
else if (!stricmp(playerclass, "mage")) HexenSkillMenu.x = 112;
|
|
||||||
else HexenSkillMenu.x = 38;
|
|
||||||
|
|
||||||
M_SetupNextMenu(&HexenSkillMenu);
|
M_SetupNextMenu(&HexenSkillMenu);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -456,15 +465,15 @@ void M_StartupSkillMenu(const char *playerclass)
|
||||||
//
|
//
|
||||||
static oldmenuitem_t PlayerSetupMenu[] =
|
static oldmenuitem_t PlayerSetupMenu[] =
|
||||||
{
|
{
|
||||||
{ 1,0,'n',NULL,M_EditPlayerName},
|
{ 1,0,'n',NULL,M_EditPlayerName, CR_UNTRANSLATED},
|
||||||
{ 2,0,'t',NULL,M_ChangePlayerTeam},
|
{ 2,0,'t',NULL,M_ChangePlayerTeam, CR_UNTRANSLATED},
|
||||||
{ 2,0,'r',NULL,M_SlidePlayerRed},
|
{ 2,0,'r',NULL,M_SlidePlayerRed, CR_UNTRANSLATED},
|
||||||
{ 2,0,'g',NULL,M_SlidePlayerGreen},
|
{ 2,0,'g',NULL,M_SlidePlayerGreen, CR_UNTRANSLATED},
|
||||||
{ 2,0,'b',NULL,M_SlidePlayerBlue},
|
{ 2,0,'b',NULL,M_SlidePlayerBlue, CR_UNTRANSLATED},
|
||||||
{ 2,0,'c',NULL,M_ChangeClass},
|
{ 2,0,'c',NULL,M_ChangeClass, CR_UNTRANSLATED},
|
||||||
{ 2,0,'s',NULL,M_ChangeSkin},
|
{ 2,0,'s',NULL,M_ChangeSkin, CR_UNTRANSLATED},
|
||||||
{ 2,0,'e',NULL,M_ChangeGender},
|
{ 2,0,'e',NULL,M_ChangeGender, CR_UNTRANSLATED},
|
||||||
{ 2,0,'a',NULL,M_ChangeAutoAim}
|
{ 2,0,'a',NULL,M_ChangeAutoAim, CR_UNTRANSLATED}
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t PSetupDef =
|
static oldmenu_t PSetupDef =
|
||||||
|
@ -498,14 +507,14 @@ static oldmenu_t ReadDef =
|
||||||
//
|
//
|
||||||
static oldmenuitem_t LoadMenu[]=
|
static oldmenuitem_t LoadMenu[]=
|
||||||
{
|
{
|
||||||
{1,0,'1',NULL, NULL},
|
{1,0,'1',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'2',NULL, NULL},
|
{1,0,'2',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'3',NULL, NULL},
|
{1,0,'3',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'4',NULL, NULL},
|
{1,0,'4',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'5',NULL, NULL},
|
{1,0,'5',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'6',NULL, NULL},
|
{1,0,'6',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'7',NULL, NULL},
|
{1,0,'7',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'8',NULL, NULL},
|
{1,0,'8',NULL, NULL, CR_UNTRANSLATED},
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t LoadDef =
|
static oldmenu_t LoadDef =
|
||||||
|
@ -522,14 +531,14 @@ static oldmenu_t LoadDef =
|
||||||
//
|
//
|
||||||
static oldmenuitem_t SaveMenu[] =
|
static oldmenuitem_t SaveMenu[] =
|
||||||
{
|
{
|
||||||
{1,0,'1',NULL, NULL},
|
{1,0,'1',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'2',NULL, NULL},
|
{1,0,'2',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'3',NULL, NULL},
|
{1,0,'3',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'4',NULL, NULL},
|
{1,0,'4',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'5',NULL, NULL},
|
{1,0,'5',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'6',NULL, NULL},
|
{1,0,'6',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'7',NULL, NULL},
|
{1,0,'7',NULL, NULL, CR_UNTRANSLATED},
|
||||||
{1,0,'8',NULL, NULL},
|
{1,0,'8',NULL, NULL, CR_UNTRANSLATED},
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t SaveDef =
|
static oldmenu_t SaveDef =
|
||||||
|
@ -3129,12 +3138,15 @@ void M_Drawer ()
|
||||||
{
|
{
|
||||||
if (currentMenu->menuitems[i].fulltext)
|
if (currentMenu->menuitems[i].fulltext)
|
||||||
{
|
{
|
||||||
int color = CR_UNTRANSLATED;
|
int color = currentMenu->menuitems[i].textcolor;
|
||||||
if ((currentMenu == &EpiDef || currentMenu == &ClassMenuDef) &&
|
if (color == CR_UNTRANSLATED)
|
||||||
gameinfo.gametype == GAME_Doom)
|
{
|
||||||
|
// The default DBIGFONT is white but Doom's default should be red.
|
||||||
|
if (gameinfo.gametype == GAME_Doom)
|
||||||
{
|
{
|
||||||
color = CR_RED;
|
color = CR_RED;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
screen->DrawText (color, x, y,
|
screen->DrawText (color, x, y,
|
||||||
GStrings(currentMenu->menuitems[i].name),
|
GStrings(currentMenu->menuitems[i].name),
|
||||||
DTA_Clean, true, TAG_DONE);
|
DTA_Clean, true, TAG_DONE);
|
||||||
|
|
|
@ -189,6 +189,7 @@ typedef struct
|
||||||
// if status = 2,
|
// if status = 2,
|
||||||
// choice=0:leftarrow,1:rightarrow
|
// choice=0:leftarrow,1:rightarrow
|
||||||
void (*routine)(int choice);
|
void (*routine)(int choice);
|
||||||
|
int textcolor;
|
||||||
} oldmenuitem_t;
|
} oldmenuitem_t;
|
||||||
|
|
||||||
typedef struct oldmenu_s
|
typedef struct oldmenu_s
|
||||||
|
|
32
wadsrc/mapinfo/doomcommon.txt
Normal file
32
wadsrc/mapinfo/doomcommon.txt
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
skill baby
|
||||||
|
AmmoFactor 2
|
||||||
|
DamageFactor 0.5
|
||||||
|
EasyBossBrain
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuLump "M_JKILL"
|
||||||
|
Shortcut i
|
||||||
|
|
||||||
|
skill easy
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuLump "M_ROUGH"
|
||||||
|
Shortcut h
|
||||||
|
|
||||||
|
skill normal
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuLump "M_HURT"
|
||||||
|
Shortcut h
|
||||||
|
|
||||||
|
skill hard
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuLump "M_ULTRA"
|
||||||
|
Shortcut u
|
||||||
|
|
||||||
|
skill nightmare
|
||||||
|
AmmoFactor 2
|
||||||
|
FastMonsters
|
||||||
|
DisableCheats
|
||||||
|
RespawnTime 12
|
||||||
|
SpawnFilter "Hard"
|
||||||
|
MenuLump "M_NMARE"
|
||||||
|
MustConfirm
|
||||||
|
Shortcut n
|
|
@ -1,5 +1,34 @@
|
||||||
// MAPINFO for Heretic (Shareware and Retail)
|
// MAPINFO for Heretic (Shareware and Retail)
|
||||||
|
|
||||||
|
skill baby
|
||||||
|
AmmoFactor 1.5
|
||||||
|
DamageFactor 0.5
|
||||||
|
EasyBossBrain
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuName "MNU_WETNURSE"
|
||||||
|
|
||||||
|
skill easy
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuName "MNU_YELLOWBELLIES"
|
||||||
|
|
||||||
|
skill normal
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuName "MNU_BRINGEST"
|
||||||
|
|
||||||
|
skill hard
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuName "MNU_SMITE"
|
||||||
|
|
||||||
|
skill nightmare
|
||||||
|
AmmoFactor 1.5
|
||||||
|
FastMonsters
|
||||||
|
DisableCheats
|
||||||
|
SpawnFilter "Hard"
|
||||||
|
MenuName "MNU_BLACKPLAGUE"
|
||||||
|
MustConfirm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Episode 1
|
// Episode 1
|
||||||
|
|
||||||
map E1M1 lookup HHUSTR_E1M1
|
map E1M1 lookup HHUSTR_E1M1
|
||||||
|
|
|
@ -1,6 +1,50 @@
|
||||||
// A bare-bones MAPINFO for Hexen.
|
// A bare-bones MAPINFO for Hexen.
|
||||||
// Most of the MAPINFO is still in hexen.wad.
|
// Most of the MAPINFO is still in hexen.wad.
|
||||||
|
|
||||||
|
skill baby
|
||||||
|
AmmoFactor 1.5
|
||||||
|
DamageFactor 0.5
|
||||||
|
EasyBossBrain
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuName "MNU_WETNURSE"
|
||||||
|
PlayerClassName "fighter" "MNU_SQUIRE"
|
||||||
|
PlayerClassName "cleric" "MNU_ALTARBOY"
|
||||||
|
PlayerClassName "mage" "MNU_APPRENTICE"
|
||||||
|
|
||||||
|
|
||||||
|
skill easy
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuName "MNU_YELLOWBELLIES"
|
||||||
|
PlayerClassName "fighter" "MNU_KNIGHT"
|
||||||
|
PlayerClassName "cleric" "MNU_ACOLYTE"
|
||||||
|
PlayerClassName "mage" "MNU_ENCHANTER"
|
||||||
|
|
||||||
|
skill normal
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuName "MNU_BRINGEST"
|
||||||
|
PlayerClassName "fighter" "MNU_WARRIOR"
|
||||||
|
PlayerClassName "cleric" "MNU_PRIEST"
|
||||||
|
PlayerClassName "mage" "MNU_SORCERER"
|
||||||
|
|
||||||
|
skill hard
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuName "MNU_SMITE"
|
||||||
|
PlayerClassName "fighter" "MNU_BERSERKER"
|
||||||
|
PlayerClassName "cleric" "MNU_CARDINAL"
|
||||||
|
PlayerClassName "mage" "MNU_WARLOCK"
|
||||||
|
|
||||||
|
skill nightmare
|
||||||
|
AmmoFactor 1.5
|
||||||
|
FastMonsters
|
||||||
|
DisableCheats
|
||||||
|
SpawnFilter "Hard"
|
||||||
|
MenuName "MNU_BLACKPLAGUE"
|
||||||
|
PlayerClassName "fighter" "MNU_TITAN"
|
||||||
|
PlayerClassName "cleric" "MNU_POPE"
|
||||||
|
PlayerClassName "mage" "MNU_ARCHMAGE"
|
||||||
|
MustConfirm
|
||||||
|
|
||||||
|
|
||||||
clusterdef 1
|
clusterdef 1
|
||||||
hub
|
hub
|
||||||
exittext clus1msg
|
exittext clus1msg
|
||||||
|
|
|
@ -1,5 +1,38 @@
|
||||||
// MAPINFO for Strife (full version and teaser)
|
// MAPINFO for Strife (full version and teaser)
|
||||||
|
|
||||||
|
skill baby
|
||||||
|
AmmoFactor 2
|
||||||
|
DamageFactor 0.5
|
||||||
|
EasyBossBrain
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuLump "M_JKILL"
|
||||||
|
Shortcut t
|
||||||
|
|
||||||
|
skill easy
|
||||||
|
SpawnFilter "Easy"
|
||||||
|
MenuLump "M_ROUGH"
|
||||||
|
Shortcut r
|
||||||
|
|
||||||
|
skill normal
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuLump "M_HURT"
|
||||||
|
Shortcut v
|
||||||
|
|
||||||
|
skill hard
|
||||||
|
SpawnFilter "Normal"
|
||||||
|
MenuLump "M_ULTRA"
|
||||||
|
Shortcut e
|
||||||
|
|
||||||
|
skill nightmare
|
||||||
|
AmmoFactor 2
|
||||||
|
FastMonsters
|
||||||
|
DisableCheats
|
||||||
|
RespawnTime 16
|
||||||
|
SpawnFilter "Hard"
|
||||||
|
MenuLump "M_NMARE"
|
||||||
|
MustConfirm
|
||||||
|
Shortcut b
|
||||||
|
|
||||||
defaultmap
|
defaultmap
|
||||||
forcenoskystretch
|
forcenoskystretch
|
||||||
strifefallingdamage
|
strifefallingdamage
|
||||||
|
|
|
@ -221,6 +221,7 @@ sounds/railgf1.flac railgunfire.flac
|
||||||
========
|
========
|
||||||
# Mapinfos
|
# Mapinfos
|
||||||
|
|
||||||
|
mapinfo/doomcommon.txt mapinfo/doomcommon.txt
|
||||||
mapinfo/doom1.txt mapinfo/doom1.txt
|
mapinfo/doom1.txt mapinfo/doom1.txt
|
||||||
mapinfo/doom2.txt mapinfo/doom2.txt
|
mapinfo/doom2.txt mapinfo/doom2.txt
|
||||||
mapinfo/plutonia.txt mapinfo/plutonia.txt
|
mapinfo/plutonia.txt mapinfo/plutonia.txt
|
||||||
|
|
Loading…
Reference in a new issue