Show personal map records on join and replay
This commit is contained in:
@@ -175,18 +175,16 @@ show_help()
|
||||
}
|
||||
|
||||
// An undefined snapshot is the explicit unavailable view for manual requests.
|
||||
show_record(snapshot)
|
||||
show_record(snapshot, personal)
|
||||
{
|
||||
if (isDefined(level.tws_service_ended))
|
||||
return;
|
||||
self service_ensure();
|
||||
state = self.tws_service;
|
||||
service_advance(state, getTime());
|
||||
count = 0;
|
||||
if (isDefined(snapshot))
|
||||
count = snapshot.lines.size;
|
||||
state.generation++;
|
||||
state.record = service_request("record", service_page_count(count, 3), state.generation);
|
||||
state.record = service_request("record", 1, state.generation);
|
||||
state.record.personal = personal;
|
||||
state.record.snapshot = snapshot;
|
||||
service_render(state);
|
||||
}
|
||||
@@ -344,12 +342,21 @@ service_ensure()
|
||||
self thread service_end_game(state);
|
||||
}
|
||||
|
||||
service_record_rows(request)
|
||||
{
|
||||
if (request.kind == "reminder")
|
||||
return 1;
|
||||
if (request.kind == "record" && isDefined(request.snapshot) && request.snapshot.round > 0)
|
||||
return request.snapshot.lines.size;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Allocate only the active view. Alpha-zero elements still occupy HUD slots.
|
||||
service_view_create(state, request)
|
||||
{
|
||||
service_view_destroy(state);
|
||||
state.view_kind = request.kind;
|
||||
state.view_paged = request.pages > 1;
|
||||
state.view_paged = request.kind == "help" && request.pages > 1;
|
||||
if (state.view_paged)
|
||||
state.page_counter = service_text(self, state, level.hud_service_right,
|
||||
level.hud_service_title_y, "right", 1.0, "", level.hud_c_dim);
|
||||
@@ -375,15 +382,16 @@ service_view_create(state, request)
|
||||
|
||||
state.record_title = service_text(self, state, level.hud_service_right,
|
||||
level.hud_service_record_y, "right", 1.1, "", level.hud_c_count);
|
||||
rows = 3;
|
||||
if (request.kind == "reminder")
|
||||
rows = 1;
|
||||
rows = service_record_rows(request);
|
||||
for (i = 0; i < rows; i++)
|
||||
state.rows[i] = service_text(self, state, level.hud_service_right,
|
||||
level.hud_service_holders_y + i * level.hud_service_holders_pitch,
|
||||
"right", 1.05, "", level.hud_c_label);
|
||||
if (isDefined(state.page_counter))
|
||||
state.page_counter.y = level.hud_service_holders_y + 3 * level.hud_service_holders_pitch;
|
||||
// Give the personal record its own heading after every holder and a blank row.
|
||||
if (isDefined(request.personal))
|
||||
state.personal_title = service_text(self, state, level.hud_service_right,
|
||||
level.hud_service_holders_y + (rows + 1) * level.hud_service_holders_pitch,
|
||||
"right", 1.1, "", level.hud_c_count);
|
||||
}
|
||||
|
||||
service_view_destroy(state)
|
||||
@@ -401,6 +409,8 @@ service_view_destroy(state)
|
||||
state.command_rows = [];
|
||||
state.description_rows = [];
|
||||
state.record_title = undefined;
|
||||
state.personal_title = undefined;
|
||||
state.personal_text = undefined;
|
||||
state.rows = [];
|
||||
state.page_text = undefined;
|
||||
state.record_header_text = undefined;
|
||||
@@ -441,8 +451,10 @@ service_render(state)
|
||||
service_view_destroy(state);
|
||||
return;
|
||||
}
|
||||
paged = request.pages > 1;
|
||||
if (!isDefined(state.view_kind) || state.view_kind != request.kind || state.view_paged != paged)
|
||||
paged = request.kind == "help" && request.pages > 1;
|
||||
if (!isDefined(state.view_kind) || state.view_kind != request.kind || state.view_paged != paged ||
|
||||
state.rows.size != service_record_rows(request) ||
|
||||
isDefined(state.personal_title) != isDefined(request.personal))
|
||||
service_view_create(state, request);
|
||||
for (i = 0; i < state.elems.size; i++)
|
||||
state.elems[i].alpha = 0;
|
||||
@@ -478,13 +490,13 @@ service_render(state)
|
||||
return;
|
||||
}
|
||||
|
||||
header = "Map record unavailable";
|
||||
header = "Map Record unavailable";
|
||||
snapshot = request.snapshot;
|
||||
if (isDefined(snapshot))
|
||||
{
|
||||
header = "No recorded high round yet";
|
||||
if (snapshot.round > 0)
|
||||
header = "Map record | Round " + snapshot.round;
|
||||
header = "Map Record | Round " + snapshot.round;
|
||||
}
|
||||
if (!isDefined(state.record_header_text) || state.record_header_text != header)
|
||||
{
|
||||
@@ -492,6 +504,15 @@ service_render(state)
|
||||
state.record_header_text = header;
|
||||
}
|
||||
state.record_title.alpha = 1;
|
||||
if (isDefined(request.personal))
|
||||
{
|
||||
if (!isDefined(state.personal_text) || state.personal_text != request.personal)
|
||||
{
|
||||
state.personal_title SetText(request.personal);
|
||||
state.personal_text = request.personal;
|
||||
}
|
||||
state.personal_title.alpha = 1;
|
||||
}
|
||||
if (!isDefined(snapshot) || snapshot.round == 0)
|
||||
return;
|
||||
if (request.kind == "reminder")
|
||||
@@ -500,9 +521,9 @@ service_render(state)
|
||||
state.rows[0].alpha = 1;
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < state.rows.size; i++)
|
||||
{
|
||||
index = page * 3 + i;
|
||||
index = i;
|
||||
if (index < snapshot.lines.size)
|
||||
{
|
||||
text = snapshot.lines[index];
|
||||
|
||||
Reference in New Issue
Block a user