-
Notifications
You must be signed in to change notification settings - Fork 5
/
summary.c
130 lines (117 loc) · 2.38 KB
/
summary.c
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "updateInput.h"
#include "playSound.h"
#include "mapAsm.h"
#include "util.h"
#include "p_enemy.h"
#include "vicdoom.h"
#pragma staticlocals(on)
extern char *caLevelNames[];
extern char level;
void __fastcall__ waitASecond(void)
{
char i = 60;
do
{
if (PEEK(198) == 0)
{
waitForRaster(1);
}
--i;
}
while (i > 0);
}
void __fastcall__ rollInPercentage(char pc, int scr)
{
signed char i = -4;
POKE(scr + 3,'%');
do
{
i += 4;
if (i > pc) i = pc;
print3DigitNumToScreen(i, scr);
playSound(SOUND_PISTOL);
if (PEEK(198) == 0)
{
waitForRaster(2);
}
}
while (i < pc);
}
void __fastcall__ rollInTime(int t, int scr)
{
int i = -5;
char ih, il;
POKE(scr + 2,':');
do
{
i += 5;
if (i > t) i = t;
ih = i / 60;
il = i - 60 * ih;
print2DigitNumToScreen(ih, scr);
print2DigitNumToScreen(il, scr + 3);
playSound(SOUND_PISTOL);
if (PEEK(198) == 0)
{
waitForRaster(2);
}
}
while (i < t);
}
void __fastcall__ summaryScreen(void)
{
// display kills, items, secrets, time
// like this
// MAP NAME
// FINISHED
// KILLS %
// ITEMS %
// SECRET %
// TIME 00:00
// PAR 00:00
char kills = p_enemy_getKillPercentage();
char items = getItemPercentage();
char secret = (100*getNumVisitedSecrets())/getNumSecrets();
int time = getMapTime();
int par = getParTime();
// clear screen
clearScreen();
textcolor(1);
printCentered(caLevelNames[level-1], 1);
textcolor(2);
printCentered("finished", 2);
cputsxy(4, 5, "kills");
cputsxy(4, 7, "items");
cputsxy(4, 9, "secret");
cputsxy(4, 12, "time");
cputsxy(4, 14, "par");
setTextColor(2);
POKE(198, 0);
rollInPercentage(kills, 0x1000+22*5+14);
waitASecond();
rollInPercentage(items, 0x1000+22*7+14);
waitASecond();
rollInPercentage(secret, 0x1000+22*9+14);
waitASecond();
if (time > 10*60-1)
{
cputsxy(13,12,"sucks");
playSound(SOUND_PISTOL);
}
else
{
rollInTime(time, 0x1000+22*12+13);
}
waitASecond();
rollInTime(par, 0x1000+22*14+13);
waitASecond();
printCentered("press a key", 20);
POKE(198, 0);
while (PEEK(198) == 0) ;
// clear screen
clearScreen();
}