package carbadges;

import javafx.animation.Timeline;
import javafx.scene.CustomNode;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Transform;

public class VW extends CustomNode {

	def stageSize = 250.0;
	def centerStage = stageSize / 2;
	def r = stageSize / 3.0;
	def th = r / 10;
	def r1 = r - 3 * th / 2;

	public override function create(): Node {
		return Group {
			content: [

				Rectangle {
					width: stageSize
					height: stageSize
					fill: Color.ORANGE
				}
				Group {
					scaleX: bind sx
					content: [
						Circle {
							centerX: centerStage
							centerY: centerStage
							radius: bind rblack
							fill: Color.BLACK
						}
						Circle {
							centerX: centerStage
							centerY: centerStage
							radius: bind rsilver
							fill: null
							stroke: Color.SILVER
							strokeWidth: th
						}
						Rectangle {
							x: centerStage - th / 2
							y: centerStage - r1
							width: bind dth
							height: 2 * r1
							fill: Color.SILVER
							transforms: bind Transform.rotate(-rot, centerStage, centerStage)
						}
						Rectangle {
							x: centerStage - th / 2
							y: centerStage - r1
							width: bind dth
							height: 2 * r1
							fill: Color.SILVER
							transforms: bind Transform.rotate(rot, centerStage, centerStage)
						}
						Rectangle {
							x: centerStage - 50
							y: centerStage - r1 + 20
							width: 100
							height: bind rth
							fill: Color.SILVER
							transforms: bind Transform.rotate(-rot2, centerStage, centerStage)
						}
						Rectangle {
							x: centerStage - 50
							y: centerStage - r1 + 20
							width: 100
							height: bind rth
							fill: Color.SILVER
							transforms: bind Transform.rotate(rot2, centerStage, centerStage)
						}
						Rectangle {
							x: centerStage - 2 * th
							y: centerStage
							width: bind th4
							height: th
							fill: Color.BLACK
						}

					]
				} // group
			] // return group content
		}; // return group

	} // create

	var rblack = 0.0;
	var rsilver = 0.0;
	var rot = 0.0;
	var rot2 = 0.0;
	var rth = 0.0;
	var th4 = 0.0;
	var sx = 1.0;
	var dth = 0.0;
	var dh = 0.0;

	public var timeline : Timeline = Timeline {
		keyFrames: [
		at (0s) {rblack => 0.0;}
		at (1s) {rblack => r; rsilver=>0.0}
		at (2s) {rsilver => r1; dth=>0.0; dh=>0.0;}
		at (3s) {dth=>th; dh=>r1; rot=>0.0}
		at (4s) {rot=>20.0; rth=>0.0;}
		at (6s) {rth=>th; rot2=>0.0;}
		at (8s) {rot2=>110.0; th4=>0.0}
		at (10s) {th4=>
			4 * th; sx=>1.0;}
		at (12s) {sx=>-1.0}
		]
	}
} // class