Files @ r8655:74c23e2271a3
Branch filter:

Location: cpp/openttd-patchpack/source/src/newgrf_string_type.h

peter1138
(svn r12316) -Codechange: Support loading full range of 0xD0xx NewGRF strings which
includes 0xD000 to 0xD3FF (yes, 0xD0xx makes a lot of sense, really...)
and handle 0xD400 to 0xD7FF strings which map to 0xD000 to 0xD3FF
(obviously).
/* $Id$ */

/** @file newgrf_string_type.h */

#ifndef NEWGRF_STRING_TYPE_H
#define NEWGRF_STRING_TYPE_H

#include "strings_type.h"

/**
 * A string with the required information to perform a GRF string remapping.
 */
struct GRFMappedStringID
{
private:
	/** The GRF ID associated to the to-be-remapped string */
	uint32 grfid;
	/** The string; when grfid != 0 it should be remapped */
	StringID string;

public:
	/**
	 * Create the struct.
	 * @param str    the string to store (or remap)
	 * @param grf_id the GRF to remap it with
	 */
	GRFMappedStringID(StringID str, uint32 grf_id) : grfid(grf_id), string(str) {}

	/**
	 * An empty string.
	 */
	GRFMappedStringID() {}

	/** Cast operator, returns the string */
	inline operator StringID() const
	{
		return string;
	}

	/** Assigns the string and resets the GRF ID. */
	GRFMappedStringID& operator = (StringID str)
	{
		string = str;
		grfid = 0;
		return *this;
	}

	/**
	 * Map the string.
	 */
	void MapString();
};

#endif /* NEWGRF_STRING_TYPE_H */