package Model

import UnitObjEditing
import StandardImports
import ArrayList
import Menu

constant dummyID = 'uidu'

@compiletime function generateDummyUnit()
	let u = new UnitDefinition(dummyID, 'ewsp')
	u.setName("Effect Dummy Unit")
	u.setUpgradesUsed("")
	u.setStructuresBuilt("")
	u.setNormalAbilities("Aloc")
	u.setManaRegeneration(0.1)
	u.setManaInitialAmount(1000)
	u.setManaMaximum(1000)
	u.setCollisionSize(0.0)
	u.setRace(Race.Commoner)
	u.setFoodCost(0)
	u.setIconGameInterface("ReplaceableTextures\\CommandButtons\\BTNtemp.blp")
	u.setSpeedBase(522)
	u.setModelFile("dummy.mdl")
	u.setAnimationBlendTimeseconds(0.0)
	u.setAnimationCastBackswing(0.0)
	u.setMaximumPitchAngledegrees(0.0)
	u.setMaximumRollAngledegrees(0.0)
	u.setSpecial("")
	u.setProjectileImpactZ(0.0)
	u.setProjectileLaunchZ(0.0)
	u.setNameEditorSuffix("(Caster System?)")
	u.setSightRadiusDay(1)
	u.setSightRadiusNight(1)
	u.setUnitClassification("_")
	u.setPropulsionWindowdegrees(1.0)
	u.setTooltipBasic("")
	u.setMaximumPitchAngledegrees(-270)
	u.setMaximumRollAngledegrees(-270)
	u.setMovementHeight(50)
	
public class Model extends Widget
	unit u
	color col = color(255, 255, 255)

	/**
	*	Easy constructor without clickbounds, so don't use this as content in observables
	*/
	construct(element center, string modelPath, real scale)
		super(center, element(1, 1))
		u = createUnit(DUMMY_PLAYER, dummyID, menuStart + center.toVec(), 0..asAngleDegrees())
		u.setVertexColor(colorA(255, 255, 255, 0))
		u.addEffect(modelPath, "origin")
		u.setScale(scale)
		
	/**
	*	Uses a normal rect as clickbounds 
	*/
	construct(element start, element size, string modelPath, real scale)
		super(start, size)
		vec2 sizeAsVec = vec2(size.x / 2, size.y / 2)
		u = createUnit(DUMMY_PLAYER, dummyID, menuStart + start.toVec()  + sizeAsVec, 0..asAngleDegrees())
		u.setVertexColor(colorA(255, 255, 255, 0))
		u.addEffect(modelPath, "origin")
		u.setScale(scale)
		
	function setScacle(real scale)
		u.setScale(scale)
		
	function fixPos(vec2 fix)
		u.setXY(fix)
		
	function setHeight(real h)
		u.setFlyHeight(h, 0)
		
	function setColor(color c)
		col = c
	
	override function showDirect(player p)
		u.setVertexColor(col.withAlpha(255))
	
	override function hideDirect(player p)
		u.setVertexColor(col.withAlpha(0))
	
	override function enable(player p)
		
	override function disable(player p)