1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// clientextras.cpp: stuff that didn't fit in client.cpp or clientgame.cpp :)
#include "cube.h"
#import "Command.h"
#import "DynamicEntity.h"
#import "Monster.h"
// render players & monsters
// very messy ad-hoc handling of animation frames, should be made more
// configurable
// D D D D' D D D D' A A' P P' I I'
// R, R' E L J J'
|
<
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// clientextras.cpp: stuff that didn't fit in client.cpp or clientgame.cpp :)
#include "cube.h"
#import "Command.h"
#import "Monster.h"
#import "Player.h"
// render players & monsters
// very messy ad-hoc handling of animation frames, should be made more
// configurable
// D D D D' D D D D' A A' P P' I I'
// R, R' E L J J'
|
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
|
void
renderclients()
{
[players enumerateObjectsUsingBlock:^(id player, size_t i, bool *stop) {
if (player != [OFNull null] &&
(!demoplayback || i != democlientnum))
renderclient(player,
isteam(player1.team, [player team]),
@"monster/ogro", false, 1.0f);
}];
}
// creation of scoreboard pseudo-menu
bool scoreson = false;
void
showscores(bool on)
{
scoreson = on;
menuset(((int)on) - 1);
}
static OFMutableArray<OFString *> *scoreLines;
void
renderscore(DynamicEntity *d)
{
OFString *lag = [OFString stringWithFormat:@"%d", d.lag];
OFString *name = [OFString stringWithFormat:@"(%@)", d.name];
OFString *line =
[OFString stringWithFormat:@"%d\t%@\t%d\t%@\t%@", d.frags,
(d.state == CS_LAGGED ? @"LAG" : lag), d.ping, d.team,
(d.state == CS_DEAD ? name : d.name)];
|
|
|
|
|
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
|
void
renderclients()
{
[players enumerateObjectsUsingBlock:^(id player, size_t i, bool *stop) {
if (player != [OFNull null] &&
(!demoplayback || i != democlientnum))
renderclient(player,
isteam(Player.player1.team, [player team]),
@"monster/ogro", false, 1.0f);
}];
}
// creation of scoreboard pseudo-menu
bool scoreson = false;
void
showscores(bool on)
{
scoreson = on;
menuset(((int)on) - 1);
}
static OFMutableArray<OFString *> *scoreLines;
static void
renderscore(Player *d)
{
OFString *lag = [OFString stringWithFormat:@"%d", d.lag];
OFString *name = [OFString stringWithFormat:@"(%@)", d.name];
OFString *line =
[OFString stringWithFormat:@"%d\t%@\t%d\t%@\t%@", d.frags,
(d.state == CS_LAGGED ? @"LAG" : lag), d.ping, d.team,
(d.state == CS_DEAD ? name : d.name)];
|
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
}
#define maxTeams 4
static OFString *teamName[maxTeams];
static int teamScore[maxTeams];
static size_t teamsUsed;
void
addteamscore(DynamicEntity *d)
{
for (size_t i = 0; i < teamsUsed; i++) {
if ([teamName[i] isEqual:d.team]) {
teamScore[i] += d.frags;
return;
}
}
|
|
|
|
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
}
#define maxTeams 4
static OFString *teamName[maxTeams];
static int teamScore[maxTeams];
static size_t teamsUsed;
static void
addteamscore(Player *d)
{
for (size_t i = 0; i < teamsUsed; i++) {
if ([teamName[i] isEqual:d.team]) {
teamScore[i] += d.frags;
return;
}
}
|
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
void
renderscores()
{
if (!scoreson)
return;
[scoreLines removeAllObjects];
if (!demoplayback)
renderscore(player1);
for (id player in players)
if (player != [OFNull null])
renderscore(player);
sortmenu();
if (m_teammode) {
teamsUsed = 0;
for (id player in players)
if (player != [OFNull null])
addteamscore(player);
if (!demoplayback)
addteamscore(player1);
OFMutableString *teamScores = [OFMutableString string];
for (size_t j = 0; j < teamsUsed; j++)
[teamScores appendFormat:@"[ %@: %d ]", teamName[j],
teamScore[j]];
menumanual(0, scoreLines.count, @"");
menumanual(0, scoreLines.count + 1, teamScores);
}
|
|
|
|
|
|
|
|
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
void
renderscores()
{
if (!scoreson)
return;
[scoreLines removeAllObjects];
if (!demoplayback)
renderscore(Player.player1);
for (Player *player in players)
if ([player isKindOfClass:Player.class])
renderscore(player);
sortmenu();
if (m_teammode) {
teamsUsed = 0;
for (Player *player in players)
if ([player isKindOfClass:Player.class])
addteamscore(player);
if (!demoplayback)
addteamscore(Player.player1);
OFMutableString *teamScores = [OFMutableString string];
for (size_t j = 0; j < teamsUsed; j++)
[teamScores appendFormat:@"[ %@: %d ]", teamName[j],
teamScore[j]];
menumanual(0, scoreLines.count, @"");
menumanual(0, scoreLines.count + 1, teamScores);
}
|