# all data in unreal units (uu)

# general
UU_TO_KMH_FACTOR = 1 / 27.77777777777778

# physics
GRAVITY_NORMAL = 650.0
GRAVITY_LOW = 325.0
GRAVITY_HIGH = 1_137.5
GRAVITY_SUPER_HIGH = 3_250.0

# ball
BALL_RADIUS = 92.75
BALL_MASS = 30.0 # (unit is arbitrary)
BALL_MAX_SPEED_NORMAL = 6_000.0
BALL_MAX_SPEED_SLOW = 1_500.0
BALL_MAX_SPEED_FAST = 9_000.0
BALL_MAX_SPEED_SUPER_FAST = 15_000.0

# car
CAR_MASS = 180.0 # (unit is arbitrary)
CAR_ELEVATION_HYBRID = 17.0
CAR_ELEVATION_OCTANE = 17.01
CAR_ELEVATION_DOMINUS = 17.05
CAR_ELEVATION_BREAKOUT = 18.33
CAR_ELEVATION_BATMOBILE = 18.65

# map
MAP_WALL_DISTANCE_Y = 5_120.0
MAP_SIDE_WALL_X = 4_096.0
MAP_CORNER_SIZE = 1_152.0
MAP_HALF_GOAL_WIDTH = 892.755
MAP_GOAL_DEPTH = 880.0
MAP_OUTER_BOUND = 7_000.0

# boost pads
SMALL_BOOST_HEIGHT = 165.0
SMALL_BOOST_RADIUS = 144.0
SMALL_BOOST_AMOUNT = 12.0
SMALL_BOOST_REFRESH_TIME = 4.0
LARGE_BOOST_HEIGHT = 168.0
LARGE_BOOST_RADIUS = 208.0
LARGE_BOOST_AMOUNT = 100.0
LARGE_BOOST_REFRESH_TIME = 10.0
BOOST_LOCATIONS = [
    [    0.0, -4240.0, 70.0],
    [-1792.0, -4184.0, 70.0],
    [ 1792.0, -4184.0, 70.0],
    [-3072.0, -4096.0, 73.0],
    [ 3072.0, -4096.0, 73.0],
    [- 940.0, -3308.0, 70.0],
    [  940.0, -3308.0, 70.0],
    [    0.0, -2816.0, 70.0],
    [-3584.0, -2484.0, 70.0],
    [ 3584.0, -2484.0, 70.0],
    [-1788.0, -2300.0, 70.0],
    [ 1788.0, -2300.0, 70.0],
    [-2048.0, -1036.0, 70.0],
    [    0.0, -1024.0, 70.0],
    [ 2048.0, -1036.0, 70.0],
    [-3584.0,     0.0, 73.0],
    [-1024.0,     0.0, 70.0],
    [ 1024.0,     0.0, 70.0],
    [ 3584.0,     0.0, 73.0],
    [-2048.0,  1036.0, 70.0],
    [    0.0,  1024.0, 70.0],
    [ 2048.0,  1036.0, 70.0],
    [-1788.0,  2300.0, 70.0],
    [ 1788.0,  2300.0, 70.0],
    [-3584.0,  2484.0, 70.0],
    [ 3584.0,  2484.0, 70.0],
    [    0.0,  2816.0, 70.0],
    [- 940.0,  3310.0, 70.0],
    [  940.0,  3308.0, 70.0],
    [-3072.0,  4096.0, 73.0],
    [ 3072.0,  4096.0, 73.0],
    [-1792.0,  4184.0, 70.0],
    [ 1792.0,  4184.0, 70.0],
    [    0.0,  4240.0, 70.0]
]

# spawn locations
SPAWN_LOCATION_BLUE_RIGHT_CORNER =      [-2048.0, -2560.0]
SPAWN_LOCATION_BLUE_LEFT_CORNER =       [ 2048.0, -2560.0]
SPAWN_LOCATION_BLUE_BACK_RIGHT =        [ -256.0, -3840.0]
SPAWN_LOCATION_BLUE_BACK_LEFT =         [  256.0, -3840.0]
SPAWN_LOCATION_BLUE_FAR_BACK_CENTER =   [    0.0, -4608.0]
SPAWN_LOCATION_ORANGE_RIGHT_CORNER =    [ 2048.0,  2560.0]
SPAWN_LOCATION_ORANGE_LEFT_CORNER =     [-2048.0,  2560.0]
SPAWN_LOCATION_ORANGE_BACK_RIGHT =      [  256.0,  3840.0]
SPAWN_LOCATION_ORANGE_BACK_LEFT =       [ -256.0,  3840.0]
SPAWN_LOCATION_ORANGE_FAR_BACK_CENTER = [    0.0,  4608.0]

# demo locations
DEMO_LOCATION_BLUE_RIGHT_INSIDE =    [-2304.0, -4608.0]
DEMO_LOCATION_BLUE_RIGHT_OUTSIDE =   [-2688.0, -4608.0]
DEMO_LOCATION_BLUE_LEFT_INSIDE =     [ 2304.0, -4608.0]
DEMO_LOCATION_BLUE_LEFT_OUTSIDE =    [ 2688.0, -4608.0]
DEMO_LOCATION_ORANGE_RIGHT_INSIDE =  [ 2304.0,  4608.0]
DEMO_LOCATION_ORANGE_RIGHT_OUTSIDE = [ 2688.0,  4608.0]
DEMO_LOCATION_ORANGE_LEFT_INSIDE =   [-2304.0,  4608.0]
DEMO_LOCATION_ORANGE_LEFT_OUTSIDE =  [-2688.0,  4608.0]
DEMO_LOCATIONS = [
    DEMO_LOCATION_BLUE_RIGHT_INSIDE,
    DEMO_LOCATION_BLUE_RIGHT_OUTSIDE,
    DEMO_LOCATION_BLUE_LEFT_INSIDE,
    DEMO_LOCATION_BLUE_LEFT_OUTSIDE,
    DEMO_LOCATION_ORANGE_RIGHT_INSIDE,
    DEMO_LOCATION_ORANGE_RIGHT_OUTSIDE,
    DEMO_LOCATION_ORANGE_LEFT_INSIDE,
    DEMO_LOCATION_ORANGE_LEFT_OUTSIDE
]

# constants for detecting collisions
BALL_HIT_BALL_SPEED = 200.0
BALL_HIT_CAR_TO_BALL_DISTANCE = 310.0
BALL_HIT_BALL_ANGLE_CHANGE_THRESHOLD = 1_000.0

# Game Playlists (this list is not complete!)
GAME_PLAYLIST_CASUAL_DUEL = 1
GAME_PLAYLIST_CASUAL_DOUBLE = 2
GAME_PLAYLIST_CASUAL_STANDARD = 3
GAME_PLAYLIST_CASUAL_CHAOS = 4

GAME_PLAYLIST_RANKED_DUEL = 10
GAME_PLAYLIST_RANKED_DOUBLE = 11
GAME_PLAYLIST_RANKED_STANDARD = 13

GAME_PLAYLIST_TOURNAMENT = 22
GAME_PLAYLIST_RANKED_SNOWDAY = 30
