From f552b90378524011c6e3b8232c56ccb24fae13e9 Mon Sep 17 00:00:00 2001 From: cirdan Date: Thu, 16 Nov 2017 21:11:01 +0100 Subject: [PATCH] Add a helper FindGRFStringEntry to find a string map Add a helper function FindGRFStringEntry to find the string map for given GRF and string identifiers and use it in AddGRFString and GetGRFStringID. --- src/newgrf_text.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index 99e16d5d0..2efc3d7f0 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -647,17 +647,23 @@ static StringID AddGRFString (uint textid, byte langid, const char *text, return str; } +/** Find a GRF string entry. */ +static uint FindGRFStringEntry (uint32 grfid, uint16 stringid) +{ + for (uint id = 0; id < _num_grf_texts; id++) { + if (_grf_text[id].grfid == grfid && _grf_text[id].stringid == stringid) { + return id; + } + } + return _num_grf_texts; +} + /** * Add the new read string into our structure. */ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool new_scheme, bool allow_newlines, const char *text_to_add, StringID def_string) { - uint id; - for (id = 0; id < _num_grf_texts; id++) { - if (_grf_text[id].grfid == grfid && _grf_text[id].stringid == stringid) { - break; - } - } + uint id = FindGRFStringEntry (grfid, stringid); /* Too many strings allocated, return empty */ if (id == lengthof(_grf_text)) return STR_EMPTY; @@ -698,13 +704,9 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne */ StringID GetGRFStringID(uint32 grfid, StringID stringid) { - for (uint id = 0; id < _num_grf_texts; id++) { - if (_grf_text[id].grfid == grfid && _grf_text[id].stringid == stringid) { - return MakeStringID(TEXT_TAB_NEWGRF_START, id); - } - } - - return STR_UNDEFINED; + uint id = FindGRFStringEntry (grfid, stringid); + return (id == _num_grf_texts) ? STR_UNDEFINED : + MakeStringID (TEXT_TAB_NEWGRF_START, id); } -- 2.11.4.GIT