-
Notifications
You must be signed in to change notification settings - Fork 0
/
NPC.h
30 lines (28 loc) · 1.37 KB
/
NPC.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once
#include "SpaCE\applikation.h"
#include "SpaCE\objekt.h"
#include "GameStats.h"
#include "Node.h"
#include "AdjacencyList.h"
enum DirectionEnum { DIR_NONE, DIR_LEFTDOWN, DIR_LEFTUP, DIR_RIGHTDOWN, DIR_RIGHTUP };
class NPC : public objekt
{
public:
NPC(Node ArgCurNode);
bool isMoving; // Bewegt sich der NPC?
bool isWaiting; // Wartet der NPC?
bool FirstMoveDone;
DirectionEnum MoveDirection; // aktuelle Richtung
int FramesPerJump; // Anzahl der Frames, die ein Sprung dauert -> umso kleiner, desto schneller
int FramesPerWait; // Anzahl der Frames, die der NPC warten muss
int FramesJumped;
int FramesWaited;
Node CurNode; // Knoten, auf dem der NPC steht
Node TargetNode; // nächster Knoten
void Move(DirectionEnum direction); // NPC räumlich in eine bestimmte Richtung bewegen
virtual void InitGraphics(const char *TexName) = 0; // Modell und Texturen laden
virtual void Step(applikation &myqbert, const AdjacencyList &adjacency_list, GameStats &stats, const Node qbert_cur_node, const Node qbert_tar_node); // bewegt den NPC, prüft Kollisionen, kümmert sich um Feldeffekte
virtual void Collision(applikation &myqbert, GameStats &stats) {}; // wird aufgerufen, wenn eine Kollision aufgetreten ist
virtual void NodeEffect(GameStats &stats) {} // wird aufgerufen, wenn der NPC auf ein Feld kommt
virtual void SetTexture(void) = 0; // Allgemein
};