Add proximity-based map record reminders
This commit is contained in:
@@ -166,6 +166,9 @@ show_help()
|
||||
self service_ensure();
|
||||
state = self.tws_service;
|
||||
service_advance(state, getTime());
|
||||
// Round-start notices are timely hints, not requests to resume after help.
|
||||
if (isDefined(state.record) && state.record.kind == "reminder")
|
||||
state.record = undefined;
|
||||
state.generation++;
|
||||
state.help = service_request("help", service_page_count(state.commands.size, level.hud_service_help_rows), state.generation);
|
||||
service_render(state);
|
||||
@@ -188,6 +191,29 @@ show_record(snapshot)
|
||||
service_render(state);
|
||||
}
|
||||
|
||||
// Automatic round-start hints yield to any existing service and never queue.
|
||||
show_record_reminder(snapshot, message)
|
||||
{
|
||||
if (isDefined(level.tws_service_ended) || !isDefined(snapshot) ||
|
||||
!isDefined(snapshot.round) || snapshot.round <= 0 ||
|
||||
!isDefined(message) || message == "")
|
||||
return false;
|
||||
self service_ensure();
|
||||
state = self.tws_service;
|
||||
if (state.closed)
|
||||
return false;
|
||||
service_advance(state, getTime());
|
||||
if (isDefined(state.help) || isDefined(state.record))
|
||||
return false;
|
||||
|
||||
state.generation++;
|
||||
state.record = service_request("reminder", 1, state.generation);
|
||||
state.record.snapshot = snapshot;
|
||||
state.record.message = message;
|
||||
service_render(state);
|
||||
return true;
|
||||
}
|
||||
|
||||
service_page_count(count, rows)
|
||||
{
|
||||
return int((max(count, 1) + rows - 1) / rows);
|
||||
@@ -201,6 +227,8 @@ service_request(kind, pages, generation)
|
||||
request.page = 0;
|
||||
request.pages = pages;
|
||||
request.remaining = 12000;
|
||||
if (kind == "reminder")
|
||||
request.remaining = 6000;
|
||||
return request;
|
||||
}
|
||||
|
||||
@@ -347,7 +375,10 @@ 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);
|
||||
for (i = 0; i < 3; i++)
|
||||
rows = 3;
|
||||
if (request.kind == "reminder")
|
||||
rows = 1;
|
||||
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);
|
||||
@@ -463,6 +494,12 @@ service_render(state)
|
||||
state.record_title.alpha = 1;
|
||||
if (!isDefined(snapshot) || snapshot.round == 0)
|
||||
return;
|
||||
if (request.kind == "reminder")
|
||||
{
|
||||
state.rows[0] SetText(request.message);
|
||||
state.rows[0].alpha = 1;
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
index = page * 3 + i;
|
||||
|
||||
Reference in New Issue
Block a user