"""
Subcontroller module for Froggit

This module contains the subcontroller to manage a single level in the Froggit 
game. Instances of Level represent a single game, read from a JSON. Whenever 
you load a new level, you are expected to make a new instance of this class.

The subcontroller Level manages the frog and all of the obstacles. However, 
those classes are all defined in models.py. The only thing in this class is 
the level class, which manages the game objects.

This module should not contain any classes other than Level. If you need a new 
class, it should go in the the models.py module.

# YOUR NAME(S) AND NETID(S) HERE
# DATE COMPLETED HERE
"""
from game2d import *
from consts import *
from models import *

# PRIMARY RULE: Level can only access attributes in models.py using getters
# and setters. Level is NOT allowed to access anything in app.py (Subcontrollers 
# are not permitted to access anything in their parent. To see why, take CS 3152)


class Level(object):
    """
    This class controls a single level of Froggit.
    
    This subcontroller has a reference to the frog and the game terrain. The
    terrain is broken up into individual lanes. Each lane is a list of objects
    from classes defined in models.py. Hence the terrain is essentially a 2d
    list of game objects representing how to display objects to the screen.
    
    If you want to pause the game, tell this controller to draw, but do not 
    update. See subcontrollers.py from lecture for an example. This class will 
    be similar to that one in many ways.
    
    All attributes of this class are to be hidden. No attribute should be 
    accessed  without going through a getter/setter first. However, just 
    because you have an attribute does not mean that you have to have a getter 
    for it. For example, the Froggit app probably never needs to access the 
    attribute for the Frog object, so there is no need for a getter.
    
    The one thing you DO need a getter for is the width and height. The width 
    and height of a level is different than the default width and height and 
    the window needs to resize to match. That resizing is done in the Froggit 
    app, and so it needs to access these values in the level. The height value 
    should include one extra grid square to support the number of lives meter.
    """
    pass
    # LIST ALL HIDDEN ATTRIBUTES HERE
    
    # GETTERS AND SETTERS (ONLY ADD IF YOU NEED THEM)
    
    # INITIALIZER (standard form) TO CREATE THE FROG AND LANES
    
    # UPDATE METHOD TO MOVE THE FROG AND UPDATE ALL OF THE LANES
    
    # DRAW METHOD TO DRAW THE FROG AND THE INDVIDUAL LANES
    
    # ANY NECESSARY HELPERS (SHOULD BE HIDDEN)

