2098506f85a9b1bda94da5d4ff14cb3d18a3b0af
[rocksndiamonds.git] / src / game_mm / mm_game.h
1 // ============================================================================
2 // Mirror Magic -- McDuffin's Revenge
3 // ----------------------------------------------------------------------------
4 // (c) 1994-2017 by Artsoft Entertainment
5 //                  Holger Schemel
6 //                  info@artsoft.org
7 //                  http://www.artsoft.org/
8 // ----------------------------------------------------------------------------
9 // mm_game.h
10 // ============================================================================
11
12 #ifndef MM_GAME_H
13 #define MM_GAME_H
14
15 #include "main_mm.h"
16
17 /* score for elements (also used by editor.c) */
18 #define SC_EDELSTEIN            0
19 #define SC_DIAMANT              1
20 #define SC_KAEFER               2
21 #define SC_FLIEGER              3
22 #define SC_MAMPFER              4
23 #define SC_ROBOT                5
24 #define SC_PACMAN               6
25 #define SC_KOKOSNUSS            7
26 #define SC_DYNAMIT              8
27 #define SC_KEY                  9
28 #define SC_ZEITBONUS            10
29
30 void GetPlayerConfig(void);
31 void InitGame(void);
32 void InitMovDir(int, int);
33 void InitAmoebaNr(int, int);
34 void GameWon(void);
35 int NewHiScore(void);
36 void InitMovingField(int, int, int);
37 void Moving2Blocked(int, int, int *, int *);
38 void Blocked2Moving(int, int, int *, int *);
39 int MovingOrBlocked2Element(int, int);
40 void RemoveMovingField(int, int);
41
42
43
44
45
46 void Blurb(int, int);
47 void Impact(int, int);
48 void TurnRound(int, int);
49 void StartMoving(int, int);
50 void ContinueMoving(int, int);
51 int AmoebeNachbarNr(int, int);
52 void AmoebeUmwandeln(int, int);
53 void AmoebeUmwandelnBD(int, int, int);
54 void AmoebeWaechst(int, int);
55 void AmoebeAbleger(int, int);
56 void Life(int, int);
57 void Ablenk(int, int);
58 void Blubber(int, int);
59 void NussKnacken(int, int);
60 void SiebAktivieren(int, int, int);
61 void AusgangstuerPruefen(int, int);
62 void AusgangstuerOeffnen(int, int);
63 void AusgangstuerBlinken(int, int);
64 void EdelsteinFunkeln(int, int);
65 void MauerWaechst(int, int);
66 void MauerAbleger(int, int);
67
68
69
70 boolean MoveFigureOneStep(struct PlayerInfo *, int, int, int, int);
71 boolean MoveFigure(struct PlayerInfo *, int, int);
72 void ScrollFigure(struct PlayerInfo *, int);
73 void ScrollScreen(struct PlayerInfo *, int);
74
75 void TestIfGoodThingHitsBadThing(int, int);
76 void TestIfBadThingHitsGoodThing(int, int);
77 void TestIfHeroHitsBadThing(int, int);
78 void TestIfBadThingHitsHero(int, int);
79 void TestIfFriendHitsBadThing(int, int);
80 void TestIfBadThingHitsFriend(int, int);
81 void TestIfBadThingHitsOtherBadThing(int, int);
82 void KillHero(struct PlayerInfo *);
83 void BuryHero(struct PlayerInfo *);
84 void RemoveHero(struct PlayerInfo *);
85 int DigField(struct PlayerInfo *, int, int, int, int, int);
86 boolean SnapField(struct PlayerInfo *, int, int);
87 boolean PlaceBomb(struct PlayerInfo *);
88 void PlaySoundLevel(int, int, int);
89 void RaiseScore(int);
90 void RaiseScoreElement(int);
91
92 void CreateGameButtons();
93 void UnmapGameButtons();
94
95
96 void InitGame(void);
97 void AddLaserEdge(int, int);
98 void AddDamagedField(int, int);
99 void ScanLaser(void);
100 void DrawLaser(int, int);
101 boolean HitElement(int, int);
102 boolean HitOnlyAnEdge(int, int);
103 boolean HitPolarizer(int, int);
104 boolean HitBlock(int, int);
105 boolean HitLaserSource(int, int);
106 boolean HitLaserDestination(int, int);
107 boolean HitReflectingWalls(int, int);
108 boolean HitAbsorbingWalls(int, int);
109 void Bang(int, int);
110 void ClickElement(int, int, int);
111 void RotateMirror(int, int, int);
112 boolean ObjHit(int, int, int);
113 void DeletePacMan(int, int);
114
115 void ColorCycling(void);
116 void GameActions(void);
117 void MovePacMen(void);
118
119 #endif