StarCraft 1.5
	Planned Data Structure Design

================================================
================================================

Modules:
	Blizzard/Proprietary Container Formats
		MPQ
		Tilesets
		GRP
		etc.
	Decoders:
		idea: Templatize so we can have optimized versions that
		      do different pixel formats, and do or do not do
		      clipping
		GRP
		PCX
		SMK
	Game:
		detailed below
	GUI:
		Dirty Rects System
		Mass Rect Updating
		Drawing
		Cursor Tracking
		Hovering/Focus Tracking
	Rendering Backend:
		SDL
		OpenGL
		DirectX?
		Allegro?
	
================================================

Game
	Time/Frame Counter
	
	Players
	Map
		Terrain
		Units (here?)

================================================

Player UI:
	Chat Mode (All, Allies, Specific Recipient)
	MiniMap Mode (Terrain On, Player Colors)
	
	Hot-Keyed Units
	Selected Units
	Focused Unit (can be another player's)
	
	Active MiniMap Pings
	
	Current Cursor Action
		Unit(s) associated with action
		Action(s?)

================================================

Player
	Visibility Matrix
		Visible
		Revealed
	
	Owned Units
	
	Resources
	Command Points
	Score
		Units Killed
		Buildings Razed
		Units Produced
		Buildings Built
		Resources Mined
	
	Alliances
		Vision
		Ally
		Shared Control

================================================

Units
	Owner
	HP/Energy
	Position
	Status (Burrowed, Seige Mode, Statis'ed, etc)
	Associated IScripts/"Sprites (Images?)"

================================================

Image
	Associated Unit (or Parent Image?)
	Relative Offset (if no parent, Absolute?)
	Controlling IScript (should this be seperate?)

================================================

IScript
	Instruction Pointer
	Current Frame
	No-Break Enabled
	Waiting Countdown
	Additional Images/Sprites:
		[TODO]

================================================

Scene
	Variables:
		Zoom Level
		View Rect
		Sprites
			Rect
			Z-Height
		Sprite Bin
	Methods:
		Sprite Added
		Sprite Removed
		Sprite Changed:
			Moved
			Image/Frame Changed
			Drawing Method Switched (Invisible, Translucent, etc)
		Draw
		GetDrawnRects (2D specific?)

================================================

OpenGL Scene
	Methods:
		Draw
			Quads for Sprites
			Shaders for Drawing Methods/Palette Emulation
		GetDrawnRects
			Unused?

================================================

SDL Scene
	Methods:
		Draw
			Tile Drawing
			GRP Drawing with Methods (Reindexing, Invisibility Effect)
		GetDrawnRects

================================================
