This commit is contained in:
parent
ec8ff7ed5b
commit
396949c907
13 changed files with 142 additions and 6 deletions
|
@ -124,7 +124,8 @@ platform_src := platform \
|
||||||
pclam \
|
pclam \
|
||||||
pfishhk3 \
|
pfishhk3 \
|
||||||
prbridge \
|
prbridge \
|
||||||
pbaloon
|
pbaloon \
|
||||||
|
ptrpdoor
|
||||||
|
|
||||||
hazard_src := hazard \
|
hazard_src := hazard \
|
||||||
hfalling \
|
hfalling \
|
||||||
|
@ -144,7 +145,8 @@ hazard_src := hazard \
|
||||||
hrrock \
|
hrrock \
|
||||||
hflytrap \
|
hflytrap \
|
||||||
hrweight \
|
hrweight \
|
||||||
hrwheel
|
hrwheel \
|
||||||
|
hpswitch
|
||||||
|
|
||||||
fx_src := fx \
|
fx_src := fx \
|
||||||
fxbaseanim \
|
fxbaseanim \
|
||||||
|
|
|
@ -103,6 +103,10 @@
|
||||||
#include "hazard\hrwheel.h"
|
#include "hazard\hrwheel.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __HAZARD_HPSWITCH_H__
|
||||||
|
#include "hazard\hpswitch.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@ -126,6 +130,7 @@ CNpcHazard::NPC_HAZARD_UNIT_TYPE CNpcHazard::mapEditConvertTable[NPC_HAZARD_TYPE
|
||||||
NPC_FLY_TRAP_HAZARD,
|
NPC_FLY_TRAP_HAZARD,
|
||||||
NPC_RISING_WEIGHT_HAZARD,
|
NPC_RISING_WEIGHT_HAZARD,
|
||||||
NPC_RISING_WEIGHT_WHEEL_HAZARD,
|
NPC_RISING_WEIGHT_WHEEL_HAZARD,
|
||||||
|
NPC_PRESSURE_SWITCH_HAZARD,
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -246,6 +251,12 @@ CNpcHazard *CNpcHazard::Create(sThingHazard *ThisHazard)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPC_PRESSURE_SWITCH_HAZARD:
|
||||||
|
{
|
||||||
|
hazard = new ("pressure switch hazard") CNpcPressureSwitchHazard;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
hazard = NULL;
|
hazard = NULL;
|
||||||
|
|
|
@ -54,6 +54,7 @@ public:
|
||||||
NPC_FLY_TRAP_HAZARD,
|
NPC_FLY_TRAP_HAZARD,
|
||||||
NPC_RISING_WEIGHT_HAZARD,
|
NPC_RISING_WEIGHT_HAZARD,
|
||||||
NPC_RISING_WEIGHT_WHEEL_HAZARD,
|
NPC_RISING_WEIGHT_WHEEL_HAZARD,
|
||||||
|
NPC_PRESSURE_SWITCH_HAZARD,
|
||||||
|
|
||||||
NPC_HAZARD_TYPE_MAX,
|
NPC_HAZARD_TYPE_MAX,
|
||||||
};
|
};
|
||||||
|
|
|
@ -555,6 +555,7 @@ void CLevel::initThings(int _respawningLevel)
|
||||||
CJellyfishGenerator::init();
|
CJellyfishGenerator::init();
|
||||||
CThingManager::initAllThings();
|
CThingManager::initAllThings();
|
||||||
CThingManager::matchWheelsAndWeights();
|
CThingManager::matchWheelsAndWeights();
|
||||||
|
CThingManager::matchPressureSwitches();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -395,6 +395,18 @@ CNpcPlatform::NPC_PLATFORM_DATA CNpcPlatform::m_data[NPC_PLATFORM_TYPE_MAX] =
|
||||||
NPC_PLATFORM_TIMER_NONE,
|
NPC_PLATFORM_TIMER_NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // NPC_TRAPDOOR_PLATFORM
|
||||||
|
3,
|
||||||
|
128,
|
||||||
|
true,
|
||||||
|
DAMAGE__NONE,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
NPC_PLATFORM_INFINITE_LIFE,
|
||||||
|
0,
|
||||||
|
NPC_PLATFORM_TIMER_NONE,
|
||||||
|
},
|
||||||
|
|
||||||
{ // NPC_PLAYER_BUBBLE_PLATFORM
|
{ // NPC_PLAYER_BUBBLE_PLATFORM
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
|
@ -451,6 +463,7 @@ CNpcPlatform::NPC_PLATFORM_UNIT_TYPE CNpcPlatform::mapEditConvertTable[NPC_PLATF
|
||||||
NPC_FISH_HOOK_3_PLATFORM,
|
NPC_FISH_HOOK_3_PLATFORM,
|
||||||
NPC_RISING_BRIDGE_PLATFORM,
|
NPC_RISING_BRIDGE_PLATFORM,
|
||||||
NPC_BALLOON_BRIDGE_PLATFORM,
|
NPC_BALLOON_BRIDGE_PLATFORM,
|
||||||
|
NPC_TRAPDOOR_PLATFORM,
|
||||||
NPC_PLAYER_BUBBLE_PLATFORM,
|
NPC_PLAYER_BUBBLE_PLATFORM,
|
||||||
NPC_CLAM_PLATFORM,
|
NPC_CLAM_PLATFORM,
|
||||||
};
|
};
|
||||||
|
|
|
@ -155,6 +155,10 @@
|
||||||
#include "platform\pbaloon.h"
|
#include "platform\pbaloon.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PLATFORM_PTRPDOOR_H__
|
||||||
|
#include "platform\ptrpdoor.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "fx\fx.h"
|
#include "fx\fx.h"
|
||||||
#include "fx\fxjfish.h"
|
#include "fx\fxjfish.h"
|
||||||
|
|
||||||
|
@ -364,6 +368,12 @@ CNpcPlatform *CNpcPlatform::Create(sThingPlatform *ThisPlatform)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPC_TRAPDOOR_PLATFORM:
|
||||||
|
{
|
||||||
|
platform = new ("trapdoor platform") CNpcTrapdoorPlatform;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
ASSERT( 0 );
|
ASSERT( 0 );
|
||||||
|
@ -1077,11 +1087,20 @@ int CNpcPlatform::getHeightFromPlatformAtPosition(int _x,int _y, int offsetX, in
|
||||||
|
|
||||||
// Rotate backwards to find height at current position
|
// Rotate backwards to find height at current position
|
||||||
|
|
||||||
int hypotenuse = ( ( top.vx - _x ) << 12 ) / rcos( angle );
|
s16 cosVal = rcos( angle );
|
||||||
|
|
||||||
int angleHeight = -( hypotenuse * rsin( angle ) ) >> 12;
|
if ( !cosVal )
|
||||||
|
{
|
||||||
|
return( top.vy - _y );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int hypotenuse = ( ( top.vx - _x ) << 12 ) / cosVal;
|
||||||
|
|
||||||
return( ( top.vy - _y ) + angleHeight );
|
int angleHeight = -( hypotenuse * rsin( angle ) ) >> 12;
|
||||||
|
|
||||||
|
return( ( top.vy - _y ) + angleHeight );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,7 @@ public:
|
||||||
NPC_FISH_HOOK_3_PLATFORM,
|
NPC_FISH_HOOK_3_PLATFORM,
|
||||||
NPC_RISING_BRIDGE_PLATFORM,
|
NPC_RISING_BRIDGE_PLATFORM,
|
||||||
NPC_BALLOON_BRIDGE_PLATFORM,
|
NPC_BALLOON_BRIDGE_PLATFORM,
|
||||||
|
NPC_TRAPDOOR_PLATFORM,
|
||||||
NPC_PLAYER_BUBBLE_PLATFORM,
|
NPC_PLAYER_BUBBLE_PLATFORM,
|
||||||
NPC_CLAM_PLATFORM,
|
NPC_CLAM_PLATFORM,
|
||||||
NPC_PLATFORM_TYPE_MAX,
|
NPC_PLATFORM_TYPE_MAX,
|
||||||
|
@ -108,6 +109,7 @@ public:
|
||||||
void setGraphic( u8 graphicNum );
|
void setGraphic( u8 graphicNum );
|
||||||
virtual void setWaypoints( sThingPlatform *ThisPlatform );
|
virtual void setWaypoints( sThingPlatform *ThisPlatform );
|
||||||
virtual void trigger() {;}
|
virtual void trigger() {;}
|
||||||
|
NPC_PLATFORM_UNIT_TYPE getType() {return( m_type );}
|
||||||
|
|
||||||
static NPC_PLATFORM_UNIT_TYPE getTypeFromMapEdit( u16 newType );
|
static NPC_PLATFORM_UNIT_TYPE getTypeFromMapEdit( u16 newType );
|
||||||
static CNpcPlatform *Create(sThingPlatform *ThisPlatform);
|
static CNpcPlatform *Create(sThingPlatform *ThisPlatform);
|
||||||
|
|
|
@ -43,6 +43,10 @@
|
||||||
#include "hazard\hrwheel.h"
|
#include "hazard\hrwheel.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __HAZARD_HPSWITCH_H__
|
||||||
|
#include "hazard\hpswitch.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -189,6 +193,53 @@ void CThingManager::initAllThings()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void CThingManager::matchPressureSwitches()
|
||||||
|
{
|
||||||
|
CNpcHazard *hazard;
|
||||||
|
|
||||||
|
hazard = (CNpcHazard *) s_thingLists[CThing::TYPE_HAZARD];
|
||||||
|
|
||||||
|
while( hazard )
|
||||||
|
{
|
||||||
|
if ( hazard->getType() == CNpcHazard::NPC_PRESSURE_SWITCH_HAZARD )
|
||||||
|
{
|
||||||
|
CNpcPressureSwitchHazard *switchHazard = (CNpcPressureSwitchHazard *) hazard;
|
||||||
|
|
||||||
|
DVECTOR triggerPos = switchHazard->getTriggerPos();
|
||||||
|
|
||||||
|
CNpcPlatform *platform;
|
||||||
|
|
||||||
|
platform = (CNpcPlatform *) s_thingLists[CThing::TYPE_PLATFORM];
|
||||||
|
|
||||||
|
while( platform )
|
||||||
|
{
|
||||||
|
if ( platform->getType() == CNpcPlatform::NPC_TRAPDOOR_PLATFORM )
|
||||||
|
{
|
||||||
|
CNpcTrapdoorPlatform *trapdoor = (CNpcTrapdoorPlatform *) platform;
|
||||||
|
|
||||||
|
DVECTOR testPos = trapdoor->getTriggerPos();
|
||||||
|
|
||||||
|
if ( testPos.vx == triggerPos.vx && testPos.vy == triggerPos.vy )
|
||||||
|
{
|
||||||
|
switchHazard->linkToPlatform( trapdoor );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
platform = (CNpcPlatform *) platform->m_nextListThing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hazard = (CNpcHazard *) hazard->m_nextListThing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
Purpose:
|
Purpose:
|
||||||
|
|
|
@ -63,6 +63,7 @@ public:
|
||||||
static CThing* checkCollisionAreaAgainstThings(CRECT *_area,int _type,int _continue);
|
static CThing* checkCollisionAreaAgainstThings(CRECT *_area,int _type,int _continue);
|
||||||
static void initCollision();
|
static void initCollision();
|
||||||
static void matchWheelsAndWeights();
|
static void matchWheelsAndWeights();
|
||||||
|
static void matchPressureSwitches();
|
||||||
|
|
||||||
static sBBox &getRenderBBox() {return(m_RenderBBox);}
|
static sBBox &getRenderBBox() {return(m_RenderBBox);}
|
||||||
static sBBox &getThinkBBox() {return(m_ThinkBBox);}
|
static sBBox &getThinkBBox() {return(m_ThinkBBox);}
|
||||||
|
|
|
@ -112,6 +112,8 @@ Retracting=6
|
||||||
RollingOildrumPlatform=24
|
RollingOildrumPlatform=24
|
||||||
RisingBridge=27
|
RisingBridge=27
|
||||||
BalloonBridge=28
|
BalloonBridge=28
|
||||||
|
TrapdoorLeft=29
|
||||||
|
TrapdoorRight=29
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
# Triggers
|
# Triggers
|
||||||
|
@ -153,3 +155,4 @@ BouncingRock=12
|
||||||
FlyTrap=15
|
FlyTrap=15
|
||||||
RisingWeight=16
|
RisingWeight=16
|
||||||
RisingWeightWheel=17
|
RisingWeightWheel=17
|
||||||
|
PressureSwitch=18
|
|
@ -219,3 +219,13 @@ Collision=0
|
||||||
Health=0
|
Health=0
|
||||||
AttackStrength=0
|
AttackStrength=0
|
||||||
Respawn=2
|
Respawn=2
|
||||||
|
|
||||||
|
[PressureSwitch]
|
||||||
|
Gfx=..\..\graphics\hazards\pressureswitch\pressureswitch.gin
|
||||||
|
Waypoints=1
|
||||||
|
Speed=0
|
||||||
|
TurnRate=0
|
||||||
|
Collision=0
|
||||||
|
Health=0
|
||||||
|
AttackStrength=0
|
||||||
|
Respawn=2
|
||||||
|
|
|
@ -111,3 +111,9 @@ Gfx=..\..\Graphics\platforms\seesaw\seesaw_wooden.gin
|
||||||
|
|
||||||
[BalloonBridge]
|
[BalloonBridge]
|
||||||
Gfx=..\..\Graphics\platforms\seesaw\seesaw_wooden.gin
|
Gfx=..\..\Graphics\platforms\seesaw\seesaw_wooden.gin
|
||||||
|
|
||||||
|
[TrapdoorLeft]
|
||||||
|
Gfx=..\..\Graphics\platforms\trapdoor_wooden\trapdoor_woodenl.gin
|
||||||
|
|
||||||
|
[TrapdoorRight]
|
||||||
|
Gfx=..\..\Graphics\platforms\trapdoor_wooden\trapdoor_woodenr.gin
|
|
@ -917,6 +917,14 @@ SOURCE=..\..\..\source\hazard\hpendulm.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\hazard\hpswitch.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\hazard\hpswitch.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\source\hazard\hrrock.cpp
|
SOURCE=..\..\..\source\hazard\hrrock.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -1451,6 +1459,14 @@ SOURCE=..\..\..\source\platform\pseesaw.cpp
|
||||||
|
|
||||||
SOURCE=..\..\..\source\platform\pseesaw.h
|
SOURCE=..\..\..\source\platform\pseesaw.h
|
||||||
# End Source File
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\platform\ptrpdoor.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\platform\ptrpdoor.h
|
||||||
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "player"
|
# Begin Group "player"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue