File diff r26828:fa6e2fa4b68c → r26829:f1ebd010c392
src/strings.cpp
Show inline comments
 
@@ -938,7 +938,7 @@ static char *FormatString(char *buff, co
 
					buff = GetStringWithArgs(buff, MakeStringID(TEXT_TAB_GAMESCRIPT_START, stringid), &sub_args, last, true);
 
				}
 

	
 
				for (int i = 0; i < 20; i++) {
 
				for (i = 0; i < 20; i++) {
 
					if (sub_args_need_free[i]) free((void *)sub_args.GetParam(i));
 
				}
 
				break;
 
@@ -1044,19 +1044,19 @@ static char *FormatString(char *buff, co
 

	
 
			case SCC_RAW_STRING_POINTER: { // {RAW_STRING}
 
				if (game_script) break;
 
				const char *str = (const char *)(size_t)args->GetInt64(SCC_RAW_STRING_POINTER);
 
				buff = FormatString(buff, str, args, last);
 
				const char *raw_string = (const char *)(size_t)args->GetInt64(SCC_RAW_STRING_POINTER);
 
				buff = FormatString(buff, raw_string, args, last);
 
				break;
 
			}
 

	
 
			case SCC_STRING: {// {STRING}
 
				StringID str = args->GetInt32(SCC_STRING);
 
				if (game_script && GetStringTab(str) != TEXT_TAB_GAMESCRIPT_START) break;
 
				StringID string_id = args->GetInt32(SCC_STRING);
 
				if (game_script && GetStringTab(string_id) != TEXT_TAB_GAMESCRIPT_START) break;
 
				/* WARNING. It's prohibited for the included string to consume any arguments.
 
				 * For included strings that consume argument, you should use STRING1, STRING2 etc.
 
				 * To debug stuff you can set argv to nullptr and it will tell you */
 
				StringParameters tmp_params(args->GetDataPointer(), args->GetDataLeft(), nullptr);
 
				buff = GetStringWithArgs(buff, str, &tmp_params, last, next_substr_case_index, game_script);
 
				buff = GetStringWithArgs(buff, string_id, &tmp_params, last, next_substr_case_index, game_script);
 
				next_substr_case_index = 0;
 
				break;
 
			}
 
@@ -1069,14 +1069,14 @@ static char *FormatString(char *buff, co
 
			case SCC_STRING6:
 
			case SCC_STRING7: { // {STRING1..7}
 
				/* Strings that consume arguments */
 
				StringID str = args->GetInt32(b);
 
				if (game_script && GetStringTab(str) != TEXT_TAB_GAMESCRIPT_START) break;
 
				StringID string_id = args->GetInt32(b);
 
				if (game_script && GetStringTab(string_id) != TEXT_TAB_GAMESCRIPT_START) break;
 
				uint size = b - SCC_STRING1 + 1;
 
				if (game_script && size > args->GetDataLeft()) {
 
					buff = strecat(buff, "(too many parameters)", last);
 
				} else {
 
					StringParameters sub_args(*args, size);
 
					buff = GetStringWithArgs(buff, str, &sub_args, last, next_substr_case_index, game_script);
 
					buff = GetStringWithArgs(buff, string_id, &sub_args, last, next_substr_case_index, game_script);
 
				}
 
				next_substr_case_index = 0;
 
				break;
 
@@ -1456,7 +1456,7 @@ static char *FormatString(char *buff, co
 
					StringParameters tmp_params(args_array);
 
					buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last);
 
				} else {
 
					StringID str = st->string_id;
 
					StringID string_id = st->string_id;
 
					if (st->indtype != IT_INVALID) {
 
						/* Special case where the industry provides the name for the station */
 
						const IndustrySpec *indsp = GetIndustrySpec(st->indtype);
 
@@ -1465,14 +1465,14 @@ static char *FormatString(char *buff, co
 
						 * thus cause very strange things. Here we check for that before we
 
						 * actually set the station name. */
 
						if (indsp->station_name != STR_NULL && indsp->station_name != STR_UNDEFINED) {
 
							str = indsp->station_name;
 
							string_id = indsp->station_name;
 
						}
 
					}
 

	
 
					uint64 args_array[] = {STR_TOWN_NAME, st->town->index, st->index};
 
					WChar types_array[] = {0, SCC_TOWN_NAME, SCC_NUM};
 
					StringParameters tmp_params(args_array, 3, types_array);
 
					buff = GetStringWithArgs(buff, str, &tmp_params, last);
 
					buff = GetStringWithArgs(buff, string_id, &tmp_params, last);
 
				}
 
				break;
 
			}
 
@@ -1502,9 +1502,9 @@ static char *FormatString(char *buff, co
 
				} else {
 
					int64 args_array[] = {wp->town->index, wp->town_cn + 1};
 
					StringParameters tmp_params(args_array);
 
					StringID str = ((wp->string_id == STR_SV_STNAME_BUOY) ? STR_FORMAT_BUOY_NAME : STR_FORMAT_WAYPOINT_NAME);
 
					if (wp->town_cn != 0) str++;
 
					buff = GetStringWithArgs(buff, str, &tmp_params, last);
 
					StringID string_id = ((wp->string_id == STR_SV_STNAME_BUOY) ? STR_FORMAT_BUOY_NAME : STR_FORMAT_WAYPOINT_NAME);
 
					if (wp->town_cn != 0) string_id++;
 
					buff = GetStringWithArgs(buff, string_id, &tmp_params, last);
 
				}
 
				break;
 
			}
 
@@ -1526,16 +1526,16 @@ static char *FormatString(char *buff, co
 
					int64 args_array[] = {v->unitnumber};
 
					StringParameters tmp_params(args_array);
 

	
 
					StringID str;
 
					StringID string_id;
 
					switch (v->type) {
 
						default:           str = STR_INVALID_VEHICLE; break;
 
						case VEH_TRAIN:    str = STR_SV_TRAIN_NAME; break;
 
						case VEH_ROAD:     str = STR_SV_ROAD_VEHICLE_NAME; break;
 
						case VEH_SHIP:     str = STR_SV_SHIP_NAME; break;
 
						case VEH_AIRCRAFT: str = STR_SV_AIRCRAFT_NAME; break;
 
						default:           string_id = STR_INVALID_VEHICLE; break;
 
						case VEH_TRAIN:    string_id = STR_SV_TRAIN_NAME; break;
 
						case VEH_ROAD:     string_id = STR_SV_ROAD_VEHICLE_NAME; break;
 
						case VEH_SHIP:     string_id = STR_SV_SHIP_NAME; break;
 
						case VEH_AIRCRAFT: string_id = STR_SV_AIRCRAFT_NAME; break;
 
					}
 

	
 
					buff = GetStringWithArgs(buff, str, &tmp_params, last);
 
					buff = GetStringWithArgs(buff, string_id, &tmp_params, last);
 
				}
 
				break;
 
			}