package playerStateMachineZoom
using playerStateMachineBaseZoom

zoomLevelBase : baseZoomState
{
	bool hasOnEnter = true;
	int zoomLevelNumber = 0;
	float zoomLevel = 1.f;
	string[] transitionTo = 
	[
		"zoomBlocked", "zoomLevelAim"
	];
	string[] transitionCondition = 
	[
		"", "ToZoomLevelAim"
	];
}

zoomBlocked : zoomLevelBase
{
	bool hasEnterCondition = true;
	bool hasExitCondition = true;
	bool hasOnEnter = true;
	bool hasOnExit = true;
	string[] transitionTo = 
	[
		"zoomLevelBase"
	];
	string[] transitionCondition = 
	[
		""
	];
}

zoomLevelAbstract : baseZoomState
{
	float[] zoomLevels = 
	[
		1.0f, 1.5f, 2.0f, 3.0f, 4.0f, 5.0f, 6.5f
	];
	float[] zoomLevelsCw = 
	[
		1.0f, 1.0f, 2.0f, 3.0f, 4.0f
	];
}

zoomLevelAim : zoomLevelAbstract
{
	bool hasOnEnter = true;
	bool hasOnExit = true;
	bool hasOnUpdate = true;
	int zoomLevelNumber = 1;
	string[] transitionTo = 
	[
		"zoomBlocked", "zoomLevelBase", "zoomLevelScan", "zoomLevel3", "zoomLevel4"
	];
	string[] transitionCondition = 
	[
		"", "ToBaseZoom", "ToScanZoomLevel", "ToZoomLevel3", "ToZoomLevel4"
	];
}

zoomLevelScan : zoomLevelAbstract
{
	bool hasOnEnter = true;
	int zoomLevelNumber = 2;
	string[] transitionTo = 
	[
		"zoomBlocked", "zoomLevelBase", "zoomLevelAim", "zoomLevel3"
	];
	string[] transitionCondition = 
	[
		"", "ToBaseZoom", "ToZoomLevelAim", "ToNextZoomLevel"
	];
}

zoomLevel3 : zoomLevelAbstract
{
	bool hasOnEnter = true;
	int zoomLevelNumber = 3;
	string[] transitionTo = 
	[
		"zoomBlocked", "zoomLevelBase", "zoomLevelAim", "zoomLevelScan", "zoomLevel4"
	];
	string[] transitionCondition = 
	[
		"", "ToBaseZoom", "ToZoomLevelAim", "ToPreviousZoomLevel", "ToNextZoomLevel"
	];
}

zoomLevel4 : zoomLevelAbstract
{
	bool hasOnEnter = true;
	int zoomLevelNumber = 4;
	string[] transitionTo = 
	[
		"zoomBlocked", "zoomLevelBase", "zoomLevelAim", "zoomLevel3", "zoomLevel5"
	];
	string[] transitionCondition = 
	[
		"", "ToBaseZoom", "ToZoomLevelAim", "ToPreviousZoomLevel", "ToNextZoomLevel"
	];
}

zoomLevel5 : zoomLevelAbstract
{
	bool hasOnEnter = true;
	int zoomLevelNumber = 5;
	string[] transitionTo = 
	[
		"zoomLevelBase", "zoomLevelAim", "zoomLevel4", "zoomLevel6"
	];
	string[] transitionCondition = 
	[
		"ToBaseZoom", "ToZoomLevelAim", "ToPreviousZoomLevel", "ToNextZoomLevel"
	];
}

zoomLevel6 : zoomLevelAbstract
{
	bool hasOnEnter = true;
	int zoomLevelNumber = 6;
	string[] transitionTo = 
	[
		"zoomLevelBase", "zoomLevel5"
	];
	string[] transitionCondition = 
	[
		"ToBaseZoom", "ToPreviousZoomLevel"
	];
}

