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
|
#include "killLog.h"
#include "game.h"
#include "entity.h"
void initKillLog(KillLog * killLog) {
killLog->killCount = 0;
}
void pushKill(KillLog * killLog, Entity entity) {
int i;
Kill kill = (Kill){
.type = entity.type,
.id = entity.id,
.fingerPrint = entity.fingerprint,
.timeAtKill = GetTime()
};
++killLog->killCount;
// Push shit back if at max size.
if (killLog->killCount > KILL_LOG_MAX) {
for (i = 0; i < KILL_LOG_MAX - 1; ++i)
killLog->kills[i] = killLog->kills[i + 1];
killLog->killCount = KILL_LOG_MAX;
}
killLog->kills[killLog->killCount - 1] = kill;
}
void formatKillMessage(char killMessage[KILL_MESSAGE_MAX], Kill kill) {
// Get time since kill in minutes and seconds.
double timeSinceKill = GetTime() - kill.timeAtKill;
int minutes = timeSinceKill / 60;
int seconds = (int)timeSinceKill % 60;
// Nicely format.
snprintf(killMessage, KILL_MESSAGE_MAX, "%s@%x %d:%d", entityTypeInfo[kill.type].name, kill.fingerPrint, minutes, seconds);
}
void drawKillLog(KillLog * killLog, Vector2 position) {
int i;
char killMessage[KILL_MESSAGE_MAX];
// Format and draw each kill.
for (i = 0; i < killLog->killCount; ++i) {
formatKillMessage(killMessage, killLog->kills[i]);
DrawText(
killMessage,
position.x,
position.y + (KILL_LOG_FONT_SIZE * i),
KILL_LOG_FONT_SIZE,
WHITE
);
}
}
void resetKillLog(KillLog * killLog) {
killLog->killCount = 0;
}
|