From bf97634b27775b03aa1f6e46c2fc926db832a56d Mon Sep 17 00:00:00 2001 From: Kp Date: Mon, 22 Dec 2014 04:35:48 +0000 Subject: [PATCH] Hide marker _ when buffer full --- common/main/automap.h | 3 ++- similar/main/automap.cpp | 4 ++-- similar/main/gamerend.cpp | 3 +-- similar/main/state.cpp | 10 ++++++++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/common/main/automap.h b/common/main/automap.h index 0de24b713..cec861242 100644 --- a/common/main/automap.h +++ b/common/main/automap.h @@ -42,6 +42,7 @@ extern array 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 {}; +struct marker_message_text_t : ntstring {}; struct marker_messages_array_t : public array {}; extern marker_message_text_t Marker_input; diff --git a/similar/main/automap.cpp b/similar/main/automap.cpp index 5b12062d3..97a43dd9d 100644 --- a/similar/main/automap.cpp +++ b/similar/main/automap.cpp @@ -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; diff --git a/similar/main/gamerend.cpp b/similar/main/gamerend.cpp index 0f1c967a0..7b32672f9 100644 --- a/similar/main/gamerend.cpp +++ b/similar/main/gamerend.cpp @@ -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 diff --git a/similar/main/state.cpp b/similar/main/state.cpp index f3c80c338..bc7a4932c 100644 --- a/similar/main/state.cpp +++ b/similar/main/state.cpp @@ -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 a; + PHYSFS_read(fp, a.data(), a.size(), 1); + i.copy_if(a); + } } else { int num;