###########################################################
# ClassGlobals - Railshooter Module
# Keeps Track of All the Classes as they are Created
###########################################################

# DESCRIPTION:
# This file contains a bunch of "Global Variables" that are being
# accessed from other parts of the Railshooter Program.  Instances
# of important Classes (such as the Player, CameraSystem, and Collision 
# Detection Colliders), are done here so that they can be easily 
# referenced elsewhere.


from direct.showbase.ShowBaseGlobal import *

# Import Railshooter Modules
from MouseControls import MouseControls
import PlayerCraft
import LazyCamera
import HeadsUpDisplay
import CollisionDetection
import Level1


########################################
# Define Variables
########################################

# Changes the Speed of the Entire Game
# Lower = Faster Speed & Faster Game Updating of Stuff
gameSpeed = 0.02
gameStart = 0
gameIsOver = 0
difficulty = 2

# Keep Track of Classes
bulletNum = 0
enemyNum = 0
powerupNum = 0
enemyBulletNum = 0
formationNum = 0
explosionNum = 0
smokeTrailNum = 0
numSequences = 0

formationList = {}
enemyList = {}
enemyProjectileList = {}

# Keeps Track of Mouse Input
mouseIsEnabled = 0

# Define the Collider
collider = CollisionDetection.collisionDetection()

# Enable Mouse Controls
mouser = MouseControls()

########################################
# Load the Player(s)
########################################
# Spawn Player Model(s)
p1 = PlayerCraft.playerCraft(1)

########################################
# Setup the Camera
########################################
lazyCamera1 = LazyCamera.LazyCamera(p1.player)  	


########################################
# Load the Levels
########################################
stage1 = Level1.Level1() 


########################################
# Create HUD
########################################

# Health and Score Meters
hud1 = HeadsUpDisplay.HUD()
