summaryrefslogtreecommitdiff
path: root/src/koopatlas/player.h
blob: 70d6bf5eb126c73fbfe7aeb24c0440e5aadfe1e6 (plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef __KOOPATLAS_PLAYER_H
#define __KOOPATLAS_PLAYER_H

#include "koopatlas/core.h"
#include "poweruphax.h"
#include <playerAnim.h>


class daWMPlayer_c : public dActor_c {
	public:
		dPlayerModelHandler_c *modelHandler;

		int onCreate();
		int onDelete();
		int onExecute();
		int onDraw();

		int currentAnim;
		float currentFrame;
		float currentUnk;
		float currentUpdateRate;

		bool hasEffect;
		const char *effectName;
		bool hasSound;
		bool step;
		int soundName;

		int timer;

		float jumpOffset;

		mEf::es2 effect;
		dHammerSuitRenderer_c hammerSuit;

		void startAnimation(int id, float frame, float unk, float updateRate);

		static daWMPlayer_c *build();
		static daWMPlayer_c *instance;

		struct state_s {
			Vec pos, scale;
			S16Vec rot;
			const char *repeatedEffect, *nowEffect;
			int repeatedSound, nowSound;
			int anim;
			float animFrame, animUnk, animUpdateRate;
			float jumpOffset;
		};

		bool stateHistoryBuilt;
		static const int SUBPLAYER_DISTANCE = 15;
		static const int STATE_COUNT = (SUBPLAYER_DISTANCE * 3) + 1;
		state_s stateHistory[STATE_COUNT];

		int nextNowSound;
		const char *nextNowEffect;
};

#endif