
                                             Airport! Vexing Vector Vortex
                                       copy(l)eft 2023 - https://harald.ist.org/
                                                   README for v0.5a

INDEX
=====
	1. Overview
	2. Gameplay
	3. TODO


1. Overview
===========
 Airport! is an arcarde-style game. The player takes on the role of an air traffic controller (ATC), guiding incoming
planes toward runways for landing. Three types of aircraft (small, medium, large) travel at different speeds, which
must be taken into account when lining up planes infront of a runway. Mid-air collisions and crashes into mountaintops
need to be prevented.


2. Gameplay
===========
 New planes are constantly arriving. The heading of a plane can be changed by clicking on it and dragging a "mouseline"
into the desired direction. A mouseline command can be aborted by additionally clicking the right mouse button.

 Planes aimed towards a runway are drawn green and will attempt a landing. If the approach angle is skewed too much,
a plane might choose to perform a goaround (abort the landing). Planes are traveling at different speeds, which may
lead to crashes when approaching a runway. It helps to use different runways for different types of planes.

 The frequency of new arrivals gets higher when new planes arrive, are diverted or when they crash. The frequency is
reduced with each successful landing. If too many planes are present, the player should divert them to another airport
by sending them out of the screen.

 Successful landings earn the player score points, while diversions and crashes remove points. The game ends, when the
total score goes below zero.


3. TODO
=======
[!] "TERRAIN TERRAIN" sound sample
[ ] Spawn new planes: Check if someone near, find another location
[ ] Viewport: Font size base same as CSS 1rem, not factor of unit (optional?)
[!] Mountain crash: Don't compare to HTML color (string), but extract CSS colors and convert to canvas data
[E] Angle calculation on approach not working (Planes should not suddenly have to go around, when green)
[ ] Show nr. points where they "happen"
[ ] Better score for larger (faster) aircraft landings
[?] Instead of accent color, small planes normal, medium one stripe, large 2 stripes
[ ] Runway cards in corner, indicating if open or close, blinks a few seconds before closing
[ ] Large planes can't land on small runways
[!] Center canvas, aspect ratio 1
[ ] Sound: More variety
[?] Lock in landing, once runway aligned
[?] Auto-align to airstrip
[?] Airplanes cast shadows
[?] Targets set, turns ending in headings that are multiples of 5° (snap to angle)
[ ] iOS: Touch events, tolerance for plane selection (x2 radius)
[!] Options: Toggle sound
[!] plane.airborne, plane.landed -- redundant?
[ ] https://en.wikipedia.org/wiki/PID_controller
[ ] Pseudo-random
[E] Sometimes, approach detection flaps on/off quickly (AP steering in and out of?) --> grace period before turning off

Autopilot
[ ] Autopilot: Bank angle, slowly increasing, turn depends on bank, visualize by making plane narrower
[E] Autopilot: Ease-in-out

Levels
[ ] Terrain: Ocean
[?] Terrain: Clouds, lightning storms
[\] Collision: compare plane altitudes
[ ] Levels: Airplane requests a specific runway
[ ] Levels: Last: Survival - ends with score < 0, score = time
[ ] Levels: End level when all planes landed
[ ] Levels: Wind/weather
[ ] Levels: Tutorial/instructions before level starts, like: "Level 1/5 - Align planes to runways accurately"
[?] Levels: First plane comes in, turns precicesly towards runway, to show how it works

Score
[?] Score: Game ends, when score < 0 or score > 99
[?] Score: Amount of passengers (survivors)
[\] Score: Small/large runways for small/large planes
[\] Score: Money for landing, fines for deaths, escapes -> lose reputation -> less incoming
[\] Score: Reputation: Higher rep -> more incoming -> more money/score

Misc
[?] Holding patterns (Send plane to entry point, automatically goes in circle)
[?] Fuel running out
[?] Planes declaring emergency, need to land faster
[?] Call signs, colors (stripes?)
[\] Don't initate landing when too close
[\] Don't land in the center, but after rolling a fixed amount
[\] New planes starting
[\] Confirm course change, speech bubble?
[\] Rename game from Airport! to Touchdown, Vector Madness, Airplane Tango
[\] Plane: Radio fault
