- Added keys on the automap for Heretic in easy mode, courtesy of Gez.

SVN r3356 (trunk)
This commit is contained in:
Randy Heit 2012-02-12 02:45:48 +00:00
parent 540473cbe0
commit 5a95c997d1
5 changed files with 76 additions and 2 deletions

View file

@ -308,6 +308,7 @@ struct islope_t
static TArray<mline_t> MapArrow; static TArray<mline_t> MapArrow;
static TArray<mline_t> CheatMapArrow; static TArray<mline_t> CheatMapArrow;
static TArray<mline_t> CheatKey; static TArray<mline_t> CheatKey;
static TArray<mline_t> EasyKey;
#define R (MAPUNIT) #define R (MAPUNIT)
// [RH] Avoid lots of warnings without compiler-specific #pragmas // [RH] Avoid lots of warnings without compiler-specific #pragmas
@ -536,10 +537,12 @@ void AM_StaticInit()
MapArrow.Clear(); MapArrow.Clear();
CheatMapArrow.Clear(); CheatMapArrow.Clear();
CheatKey.Clear(); CheatKey.Clear();
EasyKey.Clear();
if (gameinfo.mMapArrow.IsNotEmpty()) AM_ParseArrow(MapArrow, gameinfo.mMapArrow); if (gameinfo.mMapArrow.IsNotEmpty()) AM_ParseArrow(MapArrow, gameinfo.mMapArrow);
if (gameinfo.mCheatMapArrow.IsNotEmpty()) AM_ParseArrow(CheatMapArrow, gameinfo.mCheatMapArrow); if (gameinfo.mCheatMapArrow.IsNotEmpty()) AM_ParseArrow(CheatMapArrow, gameinfo.mCheatMapArrow);
AM_ParseArrow(CheatKey, "maparrows/key.txt"); AM_ParseArrow(CheatKey, "maparrows/key.txt");
AM_ParseArrow(EasyKey, "maparrows/ravenkey.txt");
if (MapArrow.Size() == 0) I_FatalError("No automap arrow defined"); if (MapArrow.Size() == 0) I_FatalError("No automap arrow defined");
char namebuf[9]; char namebuf[9];
@ -2261,6 +2264,49 @@ void AM_drawPlayers ()
// //
//============================================================================= //=============================================================================
void AM_drawKeys ()
{
AMColor color;
mpoint_t p;
angle_t angle;
TThinkerIterator<AKey> it;
AKey *key;
while ((key = it.Next()) != NULL)
{
p.x = key->x >> FRACTOMAPBITS;
p.y = key->y >> FRACTOMAPBITS;
angle = key->angle;
if (am_rotate == 1 || (am_rotate == 2 && viewactive))
{
AM_rotatePoint (&p.x, &p.y);
angle += ANG90 - players[consoleplayer].camera->angle;
}
color = ThingColor;
if (key->flags & MF_SPECIAL)
{
// Find the key's own color.
// Only works correctly if single-key locks have lower numbers than any-key locks.
// That is the case for all default keys, however.
int P_GetMapColorForKey (AInventory * key);
int c = P_GetMapColorForKey(key);
if (c >= 0) color.FromRGB(RPART(c), GPART(c), BPART(c));
else color = ThingColor_CountItem;
AM_drawLineCharacter(&EasyKey[0], EasyKey.Size(), 0, 0, color, p.x, p.y);
}
}
}
//=============================================================================
//
//
//
//=============================================================================
void AM_drawThings () void AM_drawThings ()
{ {
AMColor color; AMColor color;
@ -2299,7 +2345,12 @@ void AM_drawThings ()
// That is the case for all default keys, however. // That is the case for all default keys, however.
if (t->IsKindOf(RUNTIME_CLASS(AKey))) if (t->IsKindOf(RUNTIME_CLASS(AKey)))
{ {
if (am_showkeys) if (G_SkillProperty(SKILLP_EasyKey))
{
// Already drawn by AM_drawKeys(), so don't draw again
color.Index = -1;
}
else if (am_showkeys)
{ {
int P_GetMapColorForKey (AInventory * key); int P_GetMapColorForKey (AInventory * key);
int c = P_GetMapColorForKey(static_cast<AKey *>(t)); int c = P_GetMapColorForKey(static_cast<AKey *>(t));
@ -2521,6 +2572,8 @@ void AM_Drawer ()
AM_drawWalls(allmap); AM_drawWalls(allmap);
AM_drawPlayers(); AM_drawPlayers();
if (G_SkillProperty(SKILLP_EasyKey))
AM_drawKeys();
if (am_cheat >= 2 || allthings) if (am_cheat >= 2 || allthings)
AM_drawThings(); AM_drawThings();

View file

@ -545,7 +545,8 @@ enum ESkillProperty
SKILLP_MonsterHealth, SKILLP_MonsterHealth,
SKILLP_FriendlyHealth, SKILLP_FriendlyHealth,
SKILLP_NoPain, SKILLP_NoPain,
SKILLP_ArmorFactor SKILLP_ArmorFactor,
SKILLP_EasyKey,
}; };
int G_SkillProperty(ESkillProperty prop); int G_SkillProperty(ESkillProperty prop);
const char * G_SkillName(); const char * G_SkillName();
@ -564,6 +565,7 @@ struct FSkillInfo
bool AutoUseHealth; bool AutoUseHealth;
bool EasyBossBrain; bool EasyBossBrain;
bool EasyKey;
int RespawnCounter; int RespawnCounter;
int RespawnLimit; int RespawnLimit;
fixed_t Aggressiveness; fixed_t Aggressiveness;

View file

@ -66,6 +66,7 @@ void FMapInfoParser::ParseSkill ()
skill.FastMonsters = false; skill.FastMonsters = false;
skill.DisableCheats = false; skill.DisableCheats = false;
skill.EasyBossBrain = false; skill.EasyBossBrain = false;
skill.EasyKey = false;
skill.AutoUseHealth = false; skill.AutoUseHealth = false;
skill.RespawnCounter = 0; skill.RespawnCounter = 0;
skill.RespawnLimit = 0; skill.RespawnLimit = 0;
@ -125,6 +126,10 @@ void FMapInfoParser::ParseSkill ()
{ {
skill.EasyBossBrain = true; skill.EasyBossBrain = true;
} }
else if (sc.Compare ("easykey"))
{
skill.EasyKey = true;
}
else if (sc.Compare("autousehealth")) else if (sc.Compare("autousehealth"))
{ {
skill.AutoUseHealth = true; skill.AutoUseHealth = true;
@ -351,6 +356,9 @@ int G_SkillProperty(ESkillProperty prop)
case SKILLP_EasyBossBrain: case SKILLP_EasyBossBrain:
return AllSkills[gameskill].EasyBossBrain; return AllSkills[gameskill].EasyBossBrain;
case SKILLP_EasyKey:
return AllSkills[gameskill].EasyKey;
case SKILLP_SpawnFilter: case SKILLP_SpawnFilter:
return AllSkills[gameskill].SpawnFilter; return AllSkills[gameskill].SpawnFilter;
@ -428,6 +436,7 @@ FSkillInfo &FSkillInfo::operator=(const FSkillInfo &other)
DisableCheats = other.DisableCheats; DisableCheats = other.DisableCheats;
AutoUseHealth = other.AutoUseHealth; AutoUseHealth = other.AutoUseHealth;
EasyBossBrain = other.EasyBossBrain; EasyBossBrain = other.EasyBossBrain;
EasyKey = other.EasyKey;
RespawnCounter= other.RespawnCounter; RespawnCounter= other.RespawnCounter;
RespawnLimit= other.RespawnLimit; RespawnLimit= other.RespawnLimit;
Aggressiveness= other.Aggressiveness; Aggressiveness= other.Aggressiveness;

View file

@ -0,0 +1,9 @@
( 0, 0 ), ( 0.25, -0.5 )
( 0.25, -0.5 ), ( 0.5, -0.5 )
( 0.5, -0.5 ), ( 0.5, 0.5 )
( 0.5, 0.5 ), ( 0.25, 0.5 )
( 0.25, 0.5 ), ( 0, 0 ) // handle part type thing
( 0, 0 ), ( -1, 0 ) // stem
( -1, 0 ), ( -1, -0.5 ) // end lockpick part
( -0.75, 0 ), ( -0.75, -0.25 )

View file

@ -75,6 +75,7 @@ skill baby
EasyBossBrain EasyBossBrain
SpawnFilter = Baby SpawnFilter = Baby
Name = "$MNU_WETNURSE" Name = "$MNU_WETNURSE"
EasyKey
} }
skill easy skill easy