mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-23 02:40:26 +01:00
108 lines
4.3 KiB
C++
108 lines
4.3 KiB
C++
|
407
|
||
|
%{
|
||
|
#include "Entities/StdH/StdH.h"
|
||
|
%}
|
||
|
|
||
|
uses "Entities/Marker";
|
||
|
uses "Entities/Player";
|
||
|
|
||
|
enum PlayerAutoAction {
|
||
|
1 PAA_RUN "Run", // run to this marker
|
||
|
2 PAA_WAIT "Wait", // wait given time
|
||
|
3 PAA_USEITEM "UseItem", // use some item here
|
||
|
4 PAA_STOREWEAPON "StoreWeapon", // put current weapon away
|
||
|
5 PAA_DRAWWEAPON "DrawWeapon", // put current weapon back in hand
|
||
|
6 PAA_LOOKAROUND "LookAround", // wait given time and look around
|
||
|
7 PAA_RUNANDSTOP "RunAndStop", // run to this marker and stop at it
|
||
|
8 PAA_RECORDSTATS "RecordStats", // before end of level animation - record statistics
|
||
|
9 PAA_ENDOFGAME "EndOfGame", // the game has ended - go to computer, then to menu
|
||
|
10 PAA_SHOWSTATS "ShowStats", // after end of level animation - show statistics
|
||
|
11 PAA_APPEARING "Appearing", // appearing with stardust effect
|
||
|
12 PAA_WAITFOREVER "WaitForever", // wait trigger
|
||
|
13 PAA_TELEPORT "Teleport", // teleport to new location
|
||
|
14 PAA_PICKITEM "PickItem", // pick item
|
||
|
15 PAA_FALLDOWN "FallDown", // falling from broken bridge
|
||
|
16 PAA_FALLTOABYSS "FallToAbyss", // falling down into an abyss
|
||
|
17 PAA_RELEASEPLAYER "ReleasePlayer", // return control to player from camera and similar
|
||
|
18 PAA_STARTCOMPUTER "StartComputer", // invoke netricsa
|
||
|
19 PAA_TRAVELING_IN_BEAM "TravelingInBeam", // traveling in space shpi beam
|
||
|
20 PAA_LOGO_FIRE_MINIGUN "LogoFireMinigun", // fire minigun in logo sequence
|
||
|
21 PAA_STARTCREDITS "StartCredits", // start credits printout
|
||
|
22 PAA_STARTINTROSCROLL "StartIntroScroll", // start intro text scroll
|
||
|
23 PAA_STOPSCROLLER "StopScroller", // stop intro scroll, or end-of-game credits
|
||
|
24 PAA_NOGRAVITY "NoGravity", // deactivate gravity influence for player
|
||
|
25 PAA_TURNONGRAVITY "TurnOnGravity", // turn on gravity
|
||
|
};
|
||
|
|
||
|
class CPlayerActionMarker: CMarker {
|
||
|
name "PlayerActionMarker";
|
||
|
thumbnail "Thumbnails\\PlayerActionMarker.tbn";
|
||
|
|
||
|
properties:
|
||
|
1 enum PlayerAutoAction m_paaAction "Action" 'A' = PAA_RUN, // what to do here
|
||
|
2 FLOAT m_tmWait "Wait" 'W' = 0.0f, // how long to wait (if wait action)
|
||
|
3 CEntityPointer m_penDoorController "Door for item" 'D', // where to use the item (if use action)
|
||
|
4 CEntityPointer m_penTrigger "Trigger" 'G', // triggered when player gets here
|
||
|
5 FLOAT m_fSpeed "Speed" 'S' = 1.0f, // how fast to run towards marker
|
||
|
6 CEntityPointer m_penItem "Item to pick" 'I',
|
||
|
|
||
|
components:
|
||
|
1 model MODEL_MARKER "Models\\Editor\\PlayerActionMarker.mdl",
|
||
|
2 texture TEXTURE_MARKER "Models\\Editor\\PlayerActionMarker.tex",
|
||
|
|
||
|
functions:
|
||
|
const CTString &GetDescription(void) const {
|
||
|
CTString strAction = PlayerAutoAction_enum.NameForValue(INDEX(m_paaAction));
|
||
|
if (m_penTarget==NULL) {
|
||
|
((CTString&)m_strDescription).PrintF("%s (%s)-><none>", (const char*)m_strName, (const char*)strAction);
|
||
|
} else {
|
||
|
((CTString&)m_strDescription).PrintF("%s (%s)->%s", (const char*)m_strName, (const char*)strAction,
|
||
|
(const char*)m_penTarget->GetName());
|
||
|
}
|
||
|
return m_strDescription;
|
||
|
}
|
||
|
|
||
|
/* Check if entity can drop marker for making linked route. */
|
||
|
BOOL DropsMarker(CTFileName &fnmMarkerClass, CTString &strTargetProperty) const {
|
||
|
fnmMarkerClass = CTFILENAME("Classes\\PlayerActionMarker.ecl");
|
||
|
strTargetProperty = "Target";
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
/* Handle an event, return false if the event is not handled. */
|
||
|
BOOL HandleEvent(const CEntityEvent &ee)
|
||
|
{
|
||
|
// if triggered
|
||
|
if (ee.ee_slEvent==EVENTCODE_ETrigger) {
|
||
|
ETrigger &eTrigger = (ETrigger &)ee;
|
||
|
// if triggered by a player
|
||
|
if( IsDerivedFromClass(eTrigger.penCaused, "Player")) {
|
||
|
// send it event to start auto actions from here
|
||
|
EAutoAction eAutoAction;
|
||
|
eAutoAction.penFirstMarker = this;
|
||
|
eTrigger.penCaused->SendEvent(eAutoAction);
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
|
||
|
procedures:
|
||
|
Main()
|
||
|
{
|
||
|
InitAsEditorModel();
|
||
|
SetPhysicsFlags(EPF_MODEL_IMMATERIAL);
|
||
|
SetCollisionFlags(ECF_IMMATERIAL);
|
||
|
|
||
|
// set appearance
|
||
|
SetModel(MODEL_MARKER);
|
||
|
SetModelMainTexture(TEXTURE_MARKER);
|
||
|
|
||
|
m_tmWait = ClampDn(m_tmWait, 0.05f);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
};
|
||
|
|