Skip to content

Commit b7887c1

Browse files
authored
Fix multiple circles
1 parent d73c37b commit b7887c1

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

circleProgress.inc

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,15 @@ static enum CIRCLE_ENUM {
4141
// Colors
4242
E_CIRCLEDRAW_COLOR,
4343
E_CIRCLEDRAW_BACKGROUND,
44+
E_CIRCLEDRAW_POLYGONS_COUNT,
4445
4546
// Draws
47+
bool:E_CIRCLEDRAW_CREATED[MAX_CIRCLES_POLYGONS + 1],
4648
PlayerText:E_CIRCLEDRAW_POINTS[MAX_CIRCLES_POLYGONS + 1]
4749
};
4850
49-
static
50-
Iterator:Circles[MAX_PLAYERS]<MAX_CIRCLES_DRAW>,
51-
Iterator:CirclesPointers[MAX_PLAYERS]<MAX_CIRCLES_DRAW, MAX_CIRCLES_POLYGONS>;
52-
5351
static
52+
Iterator:Circles[MAX_PLAYERS]<MAX_CIRCLES_DRAW>,
5453
e_CircleDraw[MAX_PLAYERS][MAX_CIRCLES_DRAW][CIRCLE_ENUM];
5554
5655
@@ -106,11 +105,10 @@ stock DestroyPlayerCircleProgress(playerid, id) {
106105
if(!Iter_Contains(Circles[playerid], id))
107106
return false;
108107
109-
foreach(new i: CirclesPointers[playerid]<id>) {
108+
for(new i = 0; i < e_CircleDraw[playerid][id][E_CIRCLEDRAW_POLYGONS_COUNT]; i++) {
110109
PlayerTextDrawDestroy(playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][i]);
111110
e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][i] = PlayerText:INVALID_TEXT_DRAW;
112-
113-
Iter_Remove(CirclesPointers[playerid]<id>, i);
111+
e_CircleDraw[playerid][id][E_CIRCLEDRAW_CREATED][i] = false;
114112
}
115113
116114
Iter_Remove(Circles[playerid], id);
@@ -167,13 +165,13 @@ stock UpdatePlayerCircleProgress(playerid, id, value) {
167165
for(new Float:v = 0.0; v < 360.0; v += preValue) {
168166
ctd(v + 180.0, e_CircleDraw[playerid][id][E_CIRCLEDRAW_SIZE], e_CircleDraw[playerid][id][E_CIRCLEDRAW_POSITION][0], e_CircleDraw[playerid][id][E_CIRCLEDRAW_POSITION][1], x, y);
169167
170-
if(!Iter_Contains(CirclesPointers[playerid]<id>, index)) {
168+
if(!e_CircleDraw[playerid][id][E_CIRCLEDRAW_CREATED][index]) {
171169
e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index] = CreatePlayerTextDraw(playerid, x, y, ".");
172170
PlayerTextDrawAlignment(playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], 2);
173171
PlayerTextDrawLetterSize(playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], e_CircleDraw[playerid][id][E_CIRCLEDRAW_THICKNESS], e_CircleDraw[playerid][id][E_CIRCLEDRAW_THICKNESS] + (e_CircleDraw[playerid][id][E_CIRCLEDRAW_THICKNESS] * 2));
174172
PlayerTextDrawSetShadow(playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], 0);
175173
176-
Iter_Add(CirclesPointers[playerid]<id>, index);
174+
e_CircleDraw[playerid][id][E_CIRCLEDRAW_CREATED][index] = true;
177175
}
178176
179177
PlayerTextDrawColor(playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][index], percent <= index ? (e_CircleDraw[playerid][id][E_CIRCLEDRAW_BACKGROUND]) : (e_CircleDraw[playerid][id][E_CIRCLEDRAW_COLOR]));
@@ -182,9 +180,10 @@ stock UpdatePlayerCircleProgress(playerid, id, value) {
182180
183181
/* Security Update */
184182
e_CircleDraw[playerid][id][E_CIRCLEDRAW_VALUE] = value;
183+
e_CircleDraw[playerid][id][E_CIRCLEDRAW_POLYGONS_COUNT] = index;
185184
186185
/* Update */
187-
foreach(new i: CirclesPointers[playerid]<id>)
186+
for(new i = 0; i < value; i++)
188187
PlayerTextDrawShow(playerid, e_CircleDraw[playerid][id][E_CIRCLEDRAW_POINTS][i]);
189188
190189
return true;

0 commit comments

Comments
 (0)