This commit is contained in:
Charles 2001-05-23 23:16:43 +00:00
parent ec8ff7ed5b
commit 396949c907
13 changed files with 142 additions and 6 deletions

View file

@ -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 \

View file

@ -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;

View file

@ -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,
}; };

View file

@ -555,6 +555,7 @@ void CLevel::initThings(int _respawningLevel)
CJellyfishGenerator::init(); CJellyfishGenerator::init();
CThingManager::initAllThings(); CThingManager::initAllThings();
CThingManager::matchWheelsAndWeights(); CThingManager::matchWheelsAndWeights();
CThingManager::matchPressureSwitches();
} }

View file

@ -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,
}; };

View file

@ -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,12 +1087,21 @@ 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 );
if ( !cosVal )
{
return( top.vy - _y );
}
else
{
int hypotenuse = ( ( top.vx - _x ) << 12 ) / cosVal;
int angleHeight = -( hypotenuse * rsin( angle ) ) >> 12; int angleHeight = -( hypotenuse * rsin( angle ) ) >> 12;
return( ( top.vy - _y ) + angleHeight ); return( ( top.vy - _y ) + angleHeight );
} }
}
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View file

@ -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);

View file

@ -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:

View file

@ -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);}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"