import class TweakDBIDSelector extends IScriptable
{
	import var baseTweakID : TweakDBID;

	public export const virtual function GetRecordID() : TweakDBID
	{
		return baseTweakID;
	}

	public export virtual function SetRecordID( recordID : TweakDBID )
	{
		baseTweakID = recordID;
	}

}

abstract class StreetSignSelector extends TweakDBIDSelector
{
}

abstract class LCDScreenSelector extends TweakDBIDSelector
{
	[ customEditor = "TweakDBGroupInheritance;ScreenMessageData" ]
	protected instanceeditable persistent var m_customMessageID : TweakDBID;
	protected instanceeditable var m_replaceTextWithCustomNumber : Bool;
	protected instanceeditable var m_customNumber : Int32;

	public const function GetCustomMessageID() : TweakDBID
	{
		return m_customMessageID;
	}

	public const function HasCustomNumber() : Bool
	{
		return m_replaceTextWithCustomNumber;
	}

	public const function GetCustomNumber() : Int32
	{
		return m_customNumber;
	}

}

class CityFluffScreenSelector extends LCDScreenSelector
{
	[ customEditor = "TweakDBGroupInheritance;LCDScreen" ]
	private instanceeditable var m_recordID : TweakDBID;

	public export const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

class NumberPlateSelector extends LCDScreenSelector
{
	default m_replaceTextWithCustomNumber = true;
	[ customEditor = "TweakDBGroupInheritance;NumberPlate" ]
	private instanceeditable var m_recordID : TweakDBID;

	public export const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

class GenericStreetSignSelector extends StreetSignSelector
{
	[ customEditor = "TweakDBGroupInheritance;StreetSign" ]
	private instanceeditable var m_recordID : TweakDBID;

	public const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

class StreetNameSelector extends StreetSignSelector
{
	[ customEditor = "TweakDBGroupInheritance;GenericStreetNameSign" ]
	private instanceeditable var m_recordID : TweakDBID;

	public export const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

class MetroSignSelector extends StreetSignSelector
{
	[ customEditor = "TweakDBGroupInheritance;GenericMetroSign" ]
	private instanceeditable var m_recordID : TweakDBID;

	public const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

class HighwaySignSelector extends StreetSignSelector
{
	[ customEditor = "TweakDBGroupInheritance;GenericHighwaySign" ]
	private instanceeditable var m_recordID : TweakDBID;

	public export const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

class RaceCheckpointSelector extends StreetSignSelector
{
	[ customEditor = "TweakDBGroupInheritance;RaceCheckpoint" ]
	private instanceeditable var m_recordID : TweakDBID;

	public const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

abstract class ScreenMessageSelector extends TweakDBIDSelector
{
	protected instanceeditable var m_replaceTextWithCustomNumber : Bool;
	protected instanceeditable var m_customNumber : Int32;

	public const function HasCustomNumber() : Bool
	{
		return m_replaceTextWithCustomNumber;
	}

	public const function GetCustomNumber() : Int32
	{
		return m_customNumber;
	}

	public function SetCustomNumber( value : Int32 )
	{
		m_customNumber = value;
	}

	public function SetReplaceTextWithCustomNumber( value : Bool )
	{
		m_replaceTextWithCustomNumber = value;
	}

}

class CityFluffMessageSelector extends ScreenMessageSelector
{
	[ customEditor = "TweakDBGroupInheritance;CityFluffScreenMessages.ScreenMessageData" ]
	private instanceeditable persistent var m_recordID : TweakDBID;

	public const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

class QuestMessageSelector extends ScreenMessageSelector
{
	[ customEditor = "TweakDBGroupInheritance;QuestScreenMessages.ScreenMessageData" ]
	private instanceeditable persistent var m_recordID : TweakDBID;

	public const override function GetRecordID() : TweakDBID
	{
		return m_recordID;
	}

	public override function SetRecordID( recordID : TweakDBID )
	{
		m_recordID = recordID;
	}

}

