Hide marker _ when buffer full

This commit is contained in:
Kp 2014-12-22 04:35:48 +00:00
parent a9998476a9
commit bf97634b27
4 changed files with 13 additions and 7 deletions

View file

@ -42,6 +42,7 @@ extern array<ubyte, MAX_SEGMENTS> Automap_visited;
#if defined(DXX_BUILD_DESCENT_II)
#include "objnum.h"
#include "ntstring.h"
struct vms_vector;
@ -51,7 +52,7 @@ window_event_result MarkerInputMessage(int key);
static const std::size_t NUM_MARKERS = 16;
static const std::size_t MARKER_MESSAGE_LEN = 40;
struct marker_message_text_t : public array<char, MARKER_MESSAGE_LEN> {};
struct marker_message_text_t : ntstring<MARKER_MESSAGE_LEN - 1> {};
struct marker_messages_array_t : public array<marker_message_text_t, NUM_MARKERS> {};
extern marker_message_text_t Marker_input;

View file

@ -1415,7 +1415,7 @@ void automap_build_edge_list(automap *am, int add_all_edges)
}
#if defined(DXX_BUILD_DESCENT_II)
int Marker_index=0;
static unsigned Marker_index;
ubyte DefiningMarkerMessage=0;
ubyte MarkerBeingDefined;
ubyte LastMarkerDropped;
@ -1483,7 +1483,7 @@ window_event_result MarkerInputMessage(int key)
{
int ascii = key_ascii();
if ((ascii < 255 ))
if (Marker_index < 38 )
if (Marker_index < Marker_input.size() - 1)
{
Marker_input[Marker_index++] = ascii;
Marker_input[Marker_index] = 0;

View file

@ -76,9 +76,8 @@ static void game_draw_marker_message()
{
gr_set_curfont(GAME_FONT);
gr_set_fontcolor(BM_XRGB(0,63,0),-1);
gr_printf(0x8000, (LINE_SPACING*5)+FSPACY(1), "Marker: %s_", &Marker_input[0] );
gr_printf(0x8000, (LINE_SPACING*5)+FSPACY(1), "Marker: %s%c", &Marker_input[0], Marker_input[Marker_input.size() - 2] ? 0 : '_');
}
}
#endif

View file

@ -1128,7 +1128,8 @@ int state_save_all_sub(const char *filename, const char *desc)
range_for (int m, MarkerObject)
PHYSFS_write(fp, &m, sizeof(m), 1);
PHYSFS_seek(fp, PHYSFS_tell(fp) + (NUM_MARKERS)*(CALLSIGN_LEN+1)); // PHYSFS_write(fp, MarkerOwner, sizeof(MarkerOwner), 1); MarkerOwner is obsolete
PHYSFS_write(fp, MarkerMessage, sizeof(MarkerMessage[0]), MarkerMessage.size());
range_for (auto &i, MarkerMessage)
PHYSFS_write(fp, i.data(), i.size(), 1);
PHYSFS_write(fp, &Afterburner_charge, sizeof(fix), 1);
@ -1624,7 +1625,12 @@ int state_restore_all_sub(const char *filename, int secret_restore)
for (i = 0; i < NUM_MARKERS; i++)
MarkerObject[i] = PHYSFSX_readSXE32(fp, swap);
PHYSFS_seek(fp, PHYSFS_tell(fp) + (NUM_MARKERS)*(CALLSIGN_LEN+1)); // PHYSFS_read(fp, MarkerOwner, sizeof(MarkerOwner), 1); // skip obsolete MarkerOwner
PHYSFS_read(fp, MarkerMessage, sizeof(MarkerMessage[0]), MarkerMessage.size());
range_for (auto &i, MarkerMessage)
{
array<char, MARKER_MESSAGE_LEN> a;
PHYSFS_read(fp, a.data(), a.size(), 1);
i.copy_if(a);
}
}
else {
int num;