Exemplo n.º 1
0
    def __init__(self, game):
        super(InstructionScreen, self).__init__(game)
        self.__mMenuItems = []
        self.__mMenuItems.append(Button("back", 0.5, 8.5, b2Vec2(2,1), lambda: self.mGame.setScreen(screen.MenuScreen.MenuScreen(self.mGame))))

        self.__crystalPos = b2Vec2(9.5,5.8)
        self.__crystalDirection = b2Vec2(0,1)
        self.__crystalBlingTimer = 4.0
        self.__crystalTimer = 1.0
        self.crystal = Animation(Resources.getInstance().mCrystal, 5, 1, 0.6, self.mCamera.getScaledSize(0.6,0.6), False, True)

        self.portal = Animation(Resources.getInstance().mSwirlSheet, 3, 2, 0.6, self.mCamera.getScaledSize(1.5,1.5), False, True)

        self.__walkPos = b2Vec2(1,3)
        self.__walkTimer = 2.0
        self.__walkDirection = b2Vec2(1,0)
        self.playerWalk = Animation(Resources.getInstance().mPxl, 4, 2, 0.4, self.mCamera.getScaledSize(1, 1), True, True)

        self.__jumpPos = b2Vec2(9.5,3)
        self.__jumpStartPos = self.__jumpPos.copy()
        self.__jumpTimer = 0.5
        self.__jumpWaitTimer = 0.2
        self.__jumpDirection = b2Vec2(0,-1)
        self.playerjump = Animation(Resources.getInstance().mPxl, 4, 2, 0.4, self.mCamera.getScaledSize(1, 1), False, False)

        self.__gravityPos = b2Vec2(3, 6)
        self.__gravityTimer = 1.0
        self.__gravityDirection = b2Vec2(0,-1)
        self.playergravity = Animation(Resources.getInstance().mPxl, 4, 2, 0.4, self.mCamera.getScaledSize(1, 1), False, False)
Exemplo n.º 2
0
    def __initializeFromGame(self):
        if self.mLevelInt < Level.Level.countLevels():
            self.mButtons.append(Button("next", 13.5, 8.5, b2Vec2(2,1), lambda: self.mGame.setScreen(screen.GameScreen.GameScreen(self.mGame, self.mLevelInt+1))))
        else:
            self.mButtons.append(Button("end", 13.5, 8.5, b2Vec2(2,1), lambda: self.mGame.setScreen(screen.EndScreen.EndScreen(self.mGame))))

        self.mButtons.append(Button("retry", 11, 8.5, b2Vec2(2,1), lambda: self.mGame.setScreen(screen.GameScreen.GameScreen(self.mGame, self.mLevelInt))))

        if self.mCurrentTime.isFaster(self.mTime):
            self.mTime = self.mCurrentTime
            found = False

            data = None
            try:
                with open(Resources.getInstance().resource_path("assets/state/time.json"), "rb") as readstate:
                    decryptedData = self.__mCrypt.decrypt(readstate.read())
                    data = json.loads(decryptedData)

                    for time in data:
                        if time["ID"] == str(self.mLevelInt):
                            found = True
                            time["TIME"] = self.mCurrentTime.toString()

                    if not found:
                        data.append({"ID":"%s" % str(self.mLevelInt), "TIME":"%s" % self.mCurrentTime.toString()})
            except Exception:
                pass

            if data == None:
                data = '[{"ID":"%s", "TIME":"%s"}]' % (str(self.mLevelInt), self.mCurrentTime.toString())

            with open(Resources.getInstance().resource_path("assets/state/time.json"), "wb+") as writestate:
                writestate.write(self.__mCrypt.encrypt(json.dumps(data)))
Exemplo n.º 3
0
    def __init__(self, game):
        super(EndScreen, self).__init__(game, False)
        SoundManager.getInstance().playEndMusic()

        #fonts
        self.textFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x * 0.6)
        self.headerFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x)
        self.titleFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x * 2.0)

        self.modelsize = self.mCamera.getModelCoords(b2Vec2(Pgl.width, Pgl.height))
        self.mDone = False
        self.mTimer = 0

        texts = [
                 [self.titleFont, (200,160,160), "pxlgrvty", 0],
                 [self.headerFont, (170,170,170), "Programming:", 25],
                 [self.textFont, (255,255,255), "Rickard Hansson", 0],
                 [self.headerFont, (170,170,170), "Graphics:", 25],
                 [self.textFont, (255,255,255), "Rickard Hansson", 0],
                 [self.headerFont, (170,170,170), "Audio/FX:", 25],
                 [self.textFont, (255,255,255), "Rickard Hansson", 0],
                 [self.headerFont, (170,170,170), "Music:", 25],
                 [self.textFont, (255,255,255), "anamanaguchi - helix nebula", 0],
                 [self.textFont, (255,255,255), "anamanaguchi - video challenge", 0],
                 [self.textFont, (255,255,255), "electric children - spring retrospective", 0],
                 [self.textFont, (255,255,255), "teknoaxe - chiptune does dubstep", 0],
                 [self.textFont, (255,255,255), "roccow - chipho instrumental", 0],
                 [self.textFont, (255,255,255), "sycamore drive - kicks", 0]]

        self.titlepos = self.mCamera.getViewCoords(b2Vec2(self.modelsize.x / 2.0, self.modelsize.y))
        self.text = Text(texts, self.titlepos, 1, Pgl.app.surface)
        self.endtext = self.headerFont.render("thanks for playing!", 1, (170,170,170))
        self.endsize = self.headerFont.size("thanks for playeing!")
        self.endpos = self.mCamera.getViewCoords(b2Vec2(self.modelsize.x/2.0, self.modelsize.y/2.0))
Exemplo n.º 4
0
    def __init__(self, camera, world):
        self.mCamera = camera
        self.mWorld = world
        
        self.mUI = Sprite(Resources.getInstance().mUI, self.mCamera.getScaledSize(4,1))

        self.timefont = Resources.getInstance().getScaledFont(self.mCamera.scale.x)
        self.timesize = self.timefont.size("00:00:00")
Exemplo n.º 5
0
    def __updateLevelLockState(self):
        with open(Resources.getInstance().resource_path("assets/state/state.json"), "rb") as state:
            decryptedData = self.__mCrypt.decrypt(state.read())
            lvldata = json.loads(decryptedData)

        if int(lvldata["LVL"]) <= self.mCurrentLevel:
            with open(Resources.getInstance().resource_path("assets/state/state.json"), "wb") as data:
                lvl = min(self.mCurrentLevel+1, self.mMaxLevels)
                data.write(self.__mCrypt.encrypt('{"LVL":"%s"}' % (str(lvl))))
Exemplo n.º 6
0
 def __init__(self, game, playMusic=True):
     self.mGame = game
     Pgl.app.setUpdaterate(int(Updaterate.FAST))
     pygame.mouse.set_visible(False)
             
     if playMusic: SoundManager.getInstance().playMenuMusic()
 
     #set input & camera
     self.mGame.input = MenuInput(self)
     self.mCamera = Camera(Pgl.width, Pgl.height)
     self.modelsize = self.mCamera.getModelCoords(b2Vec2(Pgl.width, Pgl.height))
     
     #fonts
     self.screenFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 3.0)
     self.titleFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x * 2.0)
     self.infoFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 2)
     
     #graphics
     self.arrow = Sprite(Resources.getInstance().mArrow) 
     self.arrow.setSize(self.mCamera.getScaledSize((self.arrow.getWidth()/float(self.arrow.getHeight())) * 0.5, 0.5))
     self.menubutton = Animation(Resources.getInstance().mMenuButton, 2, 1, 0, self.mCamera.getScaledSize(1, 1), False, False)
     self.levelbutton = Animation(Resources.getInstance().mLevelButton, 2, 1, 0, self.mCamera.getScaledSize(1, 1), False, False)
     self.checkbutton = Animation(Resources.getInstance().mCheckButton, 2, 1, 0, self.mCamera.getScaledSize(1, 1), False, False)
     self.lock = Sprite(Resources.getInstance().mLock)
     self.lock.setSize(self.mCamera.getScaledSize((self.lock.getWidth()/float(self.lock.getHeight())) * 0.2, 0.2))
Exemplo n.º 7
0
    def countLevels(self):
        lvls = 0
        for filename in os.listdir(Resources.getInstance().resource_path("assets/levels")):
            if filename.endswith(".lvl"):
                lvls += 1

        return lvls
Exemplo n.º 8
0
    def __readLevelLockState(self):
            lvldata = None

            try:
                with open(Resources.getInstance().resource_path("assets/state/state.json"), "rb") as state:
                    decryptedData = self.__mCrypt.decrypt(state.read())
                    lvldata = json.loads(decryptedData)

                    try:
                        return lvldata["LVL"]
                    except:
                        raise IOError
            except (IOError):
                with open(Resources.getInstance().resource_path("assets/state/state.json"), "wb+") as state:
                    data = self.__mCrypt.encrypt('{"LVL":"1"}')
                    state.write(data)
                    return 1
Exemplo n.º 9
0
    def playMusic(self, seed = 0):
        if Pgl.options.music:
            if self.MUSIC_PLAYING == MusicID.BG: return
            seed = 1 if seed > self.NUMBER_OF_SONGS else seed
            song = "bg%s" % str(seed)
            self.MUSIC_PLAYING = MusicID.BG
            self.CURRENTSONG = seed

            print(Resources.getInstance())

            pygame.mixer.music.set_volume(Pgl.options.musicvolume / 100.0)
            pygame.mixer.music.load(Resources.getInstance().resource_path("assets/audio/music/bg/%s.ogg" % song))
            pygame.mixer.music.set_endevent(pygame.constants.USEREVENT)
            pygame.event.set_allowed(pygame.constants.USEREVENT)
            pygame.mixer.music.play()

        else:
            self.stopMusic()
Exemplo n.º 10
0
 def playMenuMusic(self):
     if Pgl.options.music:
         if self.MUSIC_PLAYING == MusicID.MENU: return
         pygame.mixer.music.set_volume(int(Pgl.options.musicvolume) / 100.0)
         pygame.mixer.music.load(Resources.getInstance().resource_path("assets/audio/music/menu.ogg"))
         pygame.mixer.music.play(-1)
         self.MUSIC_PLAYING = MusicID.MENU
     else:
         self.stopMusic()
Exemplo n.º 11
0
    def __readLevel(self):
        parser = self.__mCrypt.dectryptParser(self.mCurrentLevel)
        self.mCurrentTileset = parser.get("level", "tileset")
        self.mBackground = parser.get("level", "bg")
        bgcolor = pygame.image.load(Resources.getInstance().resource_path("assets/gfx/%s" % self.mBackground))
        self.mBackgroundcolor = bgcolor.get_at((0, 0))
        self.mPickupData = parser.get("objects", "pickups")
        self.mEnemyData = parser.get("objects", "enemies")
        self.mBoxData = parser.get("objects", "boxes")

        #Mapcollision
        #check for pictures first
        if os.path.exists(Resources.getInstance().resource_path("assets/levels/level%d.png" % self.mCurrentLevel)):
            self.mMap = pygame.image.load(Resources.getInstance().resource_path("assets/levels/level%d.png" % self.mCurrentLevel))
            self.mWidth, self.mHeight = self.mMap.get_size()
            self.mMapType = MapType.PICTURE
        else: #check for lvl-file
            self.mMap = parser.get("level", "map").replace(" ", "").split("\n")
            self.mWidth = len(self.mMap[0])
            self.mHeight = len(self.mMap)
            self.mMapType = MapType.TEXT
Exemplo n.º 12
0
    def __readPlayerTime(self):
        pTime = None
        found = False

        try:
            with open(Resources.getInstance().resource_path("assets/state/time.json"), "rb") as state:
                decryptedData = self.__mCrypt.decrypt(state.read())
                pTime = json.loads(decryptedData)

            for time in pTime:
                if time["ID"] == str(self.mLevelInt):
                    pTime = time["TIME"]
                    found = True
                    break
        except Exception:
            with open(Resources.getInstance().resource_path("assets/state/time.json"), "wb+") as writer:
                writer.write(self.__mCrypt.encrypt("[]"))

        if not found:
            pTime = "00:00:00"

        return pTime
Exemplo n.º 13
0
    def render(self, delta):
        Pgl.app.surface.fill((67,80,129))
        
        btnToDraw = self.menubutton
        for btn in self.__mMenuItems:
            viewpos = self.mCamera.getViewCoords(b2Vec2(btn.x, btn.y))
            btnToDraw.setSize(self.mCamera.getScaledSize(btn.size.x, btn.size.y))
            
            color = None
            if btn.mActive:
                btnToDraw.freeze(1, 0)
                color = (255,255,255)
            else:
                btnToDraw.freeze(0, 0)
                color = (141,60,1)
                
            btnToDraw.draw(delta, viewpos)
                   
            btntxt = self.screenFont.render(str(btn.mText), 0, color)
            size = self.screenFont.size(str(btn.mText))
            txtpos = self.mCamera.getViewCoords(b2Vec2(btn.x + btn.size.x / 2 - (size[0] / self.mCamera.scale.x) / 2.0, btn.y + btn.size.y / 2 - (size[1] / self.mCamera.scale.y) / 2.0))
            Pgl.app.surface.blit(btntxt, (txtpos.x, txtpos.y))
            
        #texts and animations
        title = self.titleFont.render("instructions", 0, (255,255,255))
        size = self.titleFont.size("instructions")
        titlepos = self.mCamera.getViewCoords(b2Vec2(self.modelsize.x / 2.0, self.modelsize.y / 6))
        Pgl.app.surface.blit(title, (titlepos.x - size[0] / 2.0, titlepos.y - size[1] / 2.0))

        self.crystal.draw(delta, self.mCamera.getViewCoords(self.__crystalPos))
        crystalinfo = Resources.getInstance().getScaledFont(self.mCamera.scale.x).render("=", 0, (255,255,255))
        Pgl.app.surface.blit(crystalinfo, self.mCamera.getViewCoords(b2Vec2(11, 5.8)))
        
        self.portal.draw(delta, self.mCamera.getViewCoords(b2Vec2(12.5, 5.3)))
        portalinfo = self.infoFont.render("collect crystals to open portals", 0, (255,255,255))
        Pgl.app.surface.blit(portalinfo, self.mCamera.getViewCoords(b2Vec2(8,7)))

        self.playerWalk.draw(delta, self.mCamera.getViewCoords(self.__walkPos))
        moveinfo = self.infoFont.render("w,a,s,d - to move around!", 0, (255,255,255))
        Pgl.app.surface.blit(moveinfo, self.mCamera.getViewCoords(b2Vec2(1,4)))
        
        self.playerjump.draw(delta, self.mCamera.getViewCoords(self.__jumpPos))
        jumpinfo = self.infoFont.render("spacebar to jump!", 0, (255,255,255))
        Pgl.app.surface.blit(jumpinfo, self.mCamera.getViewCoords(b2Vec2(8,4)))
        
        self.playergravity.draw(delta, self.mCamera.getViewCoords(self.__gravityPos))
        gravinfo = self.infoFont.render("arrowkeys to shift gravity!", 0, (255,255,255))
        Pgl.app.surface.blit(gravinfo, self.mCamera.getViewCoords(b2Vec2(1,7)))
        
        self.arrow.draw()
        
Exemplo n.º 14
0
    def dectryptParser(self, lvlid):
        parser = configparser.ConfigParser()

        #create temp-file
        # fd, temp_path = tempfile.mkstemp(suffix=".lvl", dir="assets/levels/")

        #open crypted file, write the decrypted data to tempfile
        # with open(temp_path, "w+") as w:
        #     with open("assets/levels/decrypted/level%d.lvl" % lvlid, "rb") as reader:
        #         w.write(self.decrypt(reader.read()))

        #parse the decrypted file
        # parser.read(temp_path)
        parser.read(Resources.getInstance().resource_path("assets/levels/decrypted/level%d.lvl" % lvlid))

        #close/remove
        # os.close(fd)
        # os.remove(temp_path)

        return parser
Exemplo n.º 15
0
 def __init__(self, world, camera):
     self.mWorld = world
     self.mCamera = camera
             
     #debugrender only
     self.debug = DebugDraw(self.mCamera)
     self.mWorld.physWorld.renderer = self.debug
     self.debug.AppendFlags(self.debug.e_shapeBit)
     
     #font
     self.fpsfont = Resources.getInstance().getScaledFont(20)
     
     #renders
     self.objectRender = ObjectRender(self.mCamera, self.mWorld.level.mObjects)
     self.playerRender = PlayerRender(self.mCamera, self.mWorld.player)
     self.tileRender = TileRender(self.mCamera, self.mWorld.level)
     self.enemyRender = EnemyRender(self.mCamera, self.mWorld.level.mEnemies)
     self.swirlRender = SwirlRender(self.mCamera, self.mWorld.level)
     self.fxRender = EffectRender(self.mCamera)
     self.bgRender = BackgroundRender(self.mCamera, self.mWorld.level)
     self.uiRender = UIRender(self.mCamera, self.mWorld)     
Exemplo n.º 16
0
    def __init__(self, game, levelInt, currentTime = None):
        Id.getInstance().resetId()

        self.__mCrypt = Crypt()
        self.mCurrentTime = currentTime

        self.mLevelInt = levelInt
        self.mButtons = []
        self.mTime = Time(self.__readPlayerTime())

        if currentTime != None:
            super(LevelTimeScreen, self).__init__(game, False)
            self.__initializeFromGame()
        else:
            super(LevelTimeScreen, self).__init__(game)
            self.__initializeFromMenu()

        self.medallions = Animation(Resources.getInstance().mMedallions, 3, 3, 0, self.mCamera.getScaledSize(3, 3), False, False)
        self.mLevelTimes = [Time(x) for x in self.__readLevelTimes()]
        self.mButtons.append(Button("back", 0.5, 8.5, b2Vec2(2,1), lambda: self.mGame.setScreen(screen.LevelScreen.LevelScreen(self.mGame))))

        self.achivedMedallion = self.__calculateMedallion()
Exemplo n.º 17
0
 def playEndMusic(self):
     pygame.mixer.music.set_volume(int(Pgl.options.musicvolume) / 100.0)
     pygame.mixer.music.load(Resources.getInstance().resource_path("assets/audio/music/end.ogg"))
     pygame.mixer.music.play()
     self.MUSIC_PLAYING = MusicID.END
Exemplo n.º 18
0
 def initialize(self):
     self.SOUNDS = [Resources.getInstance().mJump,
                    Resources.getInstance().mFleshExplosion,
                    Resources.getInstance().mPickup]
     self.MUSIC_PLAYING = -1
Exemplo n.º 19
0
    def __init__(self):
        if self.INSTANCE is not None:
            raise ValueError("already instantiated")

        self.NUMBER_OF_SONGS = len([file for file in os.listdir(Resources.getInstance().resource_path("assets/audio/music/bg/")) if file.endswith(".ogg")])
Exemplo n.º 20
0
 def __init__(self, camera, level):
     self.__swirlActivation = False
     self.mLevel = level
     self.mCamera = camera
     self.swirl = Animation(Resources.getInstance().mSwirlSheet, 3, 2, 0.45, self.mCamera.getScaledSize(1,1))
     self.swirl.setLooping(False)       
Exemplo n.º 21
0
    def render(self, delta):
        Pgl.app.surface.fill((67,80,129))

        #header
        title = self.titleFont.render("level %s" % str(self.mLevelInt), 0, (255,255,255))
        size = self.titleFont.size("level %s" % str(self.mLevelInt))
        titlepos = self.mCamera.getViewCoords(b2Vec2(self.modelsize.x / 2.0, self.modelsize.y / 6))
        Pgl.app.surface.blit(title, (titlepos.x - size[0] / 2.0, titlepos.y - size[1] / 2.0))

        #current runningtime (if comming from gamescreen)
        if self.mCurrentTime != None:
            current = Resources.getInstance().getScaledFont(self.mCamera.mScale.x / 1.5).render("Current time:", 0, (255, 255, 255))
            currentsize = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 1.5).size("Current time:")
            ctime = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 1.5).render(self.mCurrentTime.toString(), 0, (255,74,20))
            currentpos = self.mCamera.getViewCoords(b2Vec2(5, 3.3))
            ctimepos = self.mCamera.getViewCoords(b2Vec2(5.5, 3.3))
            Pgl.app.surface.blit(current, currentpos)
            Pgl.app.surface.blit(ctime, (ctimepos.x + currentsize[0], ctimepos.y))

        #besttime
        best = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 1.5).render("Best time:", 0, (255, 255, 255))
        bestsize = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 1.5).size("Best time:")
        time = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 1.5).render(self.mTime.toString(), 0, (255,74,20))
        bestpos = self.mCamera.getViewCoords(b2Vec2(5, 3.8))
        timepos = self.mCamera.getViewCoords(b2Vec2(5.5, 3.8))
        Pgl.app.surface.blit(best, bestpos)
        Pgl.app.surface.blit(time, (timepos.x + bestsize[0], timepos.y))

        #buttons
        btnToDraw = self.menubutton
        for btn in self.mButtons:
            viewpos = self.mCamera.getViewCoords(b2Vec2(btn.x, btn.y))
            btnToDraw.setSize(self.mCamera.getScaledSize(btn.size.x, btn.size.y))

            color = None
            if btn.mActive:
                btnToDraw.freeze(1, 0)
                color = (255,255,255)
            else:
                btnToDraw.freeze(0, 0)
                color = (141,60,1)

            btnToDraw.draw(delta, viewpos)

            btntxt = self.screenFont.render(str(btn.mText), 0, color)
            size = self.screenFont.size(str(btn.mText))
            txtpos = self.mCamera.getViewCoords(b2Vec2(btn.x + btn.size.x / 2 - (size[0] / self.mCamera.scale.x) / 2.0, btn.y + btn.size.y / 2 - (size[1] / self.mCamera.scale.y) / 2.0))
            Pgl.app.surface.blit(btntxt, (txtpos.x, txtpos.y))

        #small medallions
        for x in range(len(self.mLevelTimes)):
            self.medallions.freeze(x, 1)

            timetxt = self.infoFont.render(self.mLevelTimes[x].toString(), 0 , (255,255,255))
            pos = self.mCamera.getViewCoords(b2Vec2(9, 5+x))
            Pgl.app.surface.blit(timetxt, (pos.x, pos.y))

            self.medallions.setSize(self.mCamera.getScaledSize(1,1))
            self.medallions.draw(delta, self.mCamera.getViewCoords(b2Vec2(8,4.6+x)))

        self.medallions.freeze(self.achivedMedallion.x, self.achivedMedallion.y)
        self.medallions.setSize(self.mCamera.getScaledSize(3,3))
        self.medallions.draw(delta, self.mCamera.getViewCoords(b2Vec2(4.9,4.6)))
        self.arrow.draw()
Exemplo n.º 22
0
 def __init__(self, camera):
     self.mEffects = []
     self.mCamera = camera
     self.blood = Animation(Resources.getInstance().mBlood, 5, 1, 0, self.mCamera.getScaledSize(1,1), False, False)
Exemplo n.º 23
0
    def levelUpdate(self, level):
        self.mTiles = level.mAllTiles
        self.mTileSprite = Animation(pygame.image.load(Resources.getInstance().resource_path("assets/gfx/tiles/%s" % level.mCurrentTileset)).convert_alpha(), 3, 11, 0, self.mCamera.getScaledSize(1,1))

        width = int(level.mWidth * self.mCamera.scale.x)
        height = int(level.mHeight * self.mCamera.scale.y)

        scale = self.mCamera.getScaledSize(1,1)
        self.sf = pygame.Surface((width, height), flags=pygame.SRCALPHA);
        self.mCamera.displacement = b2Vec2(0,0);

        for tile in self.mTiles:

            viewpos = self.mCamera.getViewCoords(b2Vec2(tile.position.x - 0.5, tile.position.y - 0.5))

            #walls
            if tile.tiletype == TileType.TL:
                self.mTileSprite.freeze(0,0)
            elif tile.tiletype == TileType.T:
                self.mTileSprite.freeze(1,0)
            elif tile.tiletype == TileType.TR:
                self.mTileSprite.freeze(2,0)
            elif tile.tiletype == TileType.L:
                self.mTileSprite.freeze(0,1)
            elif tile.tiletype == TileType.M:
                random.seed(tile.position.x / tile.position.y)
                if random.randint(0,9) > 3:
                    self.mTileSprite.freeze(1,1)
                else:
                    self.mTileSprite.freeze(2,7)
            elif tile.tiletype == TileType.R:
                self.mTileSprite.freeze(2,1)
            elif tile.tiletype == TileType.BL:
                self.mTileSprite.freeze(0,2)
            elif tile.tiletype == TileType.B:
                self.mTileSprite.freeze(1,2)
            elif tile.tiletype == TileType.BR:
                self.mTileSprite.freeze(2,2)

            #grass
            elif tile.tiletype == TileType.GL:
                self.mTileSprite.freeze(0,3)
            elif tile.tiletype == TileType.GM:
                self.mTileSprite.freeze(1,3)
            elif tile.tiletype == TileType.GR:
                self.mTileSprite.freeze(2,3)

            #edge
            elif tile.tiletype == TileType.ETL:
                self.mTileSprite.freeze(0,4)
            elif tile.tiletype == TileType.ET:
                self.mTileSprite.freeze(1,4)
            elif tile.tiletype == TileType.ETR:
                self.mTileSprite.freeze(2,4)
            elif tile.tiletype == TileType.EL:
                self.mTileSprite.freeze(0,5)
            elif tile.tiletype == TileType.EM:
                self.mTileSprite.freeze(1,5)
            elif tile.tiletype == TileType.ER:
                self.mTileSprite.freeze(2,5)
            elif tile.tiletype == TileType.EBL:
                self.mTileSprite.freeze(0,6)
            elif tile.tiletype == TileType.EB:
                self.mTileSprite.freeze(1,6)
            elif tile.tiletype == TileType.EBR:
                self.mTileSprite.freeze(2,6)

            #single
            elif tile.tiletype == TileType.S:
                self.mTileSprite.freeze(1,5)
            elif tile.tiletype == TileType.SG:
                self.mTileSprite.freeze(1,7)
            elif tile.tiletype == TileType.SL:
                self.mTileSprite.freeze(0,8)
            elif tile.tiletype == TileType.SM:
                self.mTileSprite.freeze(1,8)
            elif tile.tiletype == TileType.SR:
                self.mTileSprite.freeze(2,8)
            elif tile.tiletype == TileType.SGL:
                self.mTileSprite.freeze(0,9)
            elif tile.tiletype == TileType.SGM:
                self.mTileSprite.freeze(1,9)
            elif tile.tiletype == TileType.SGR:
                self.mTileSprite.freeze(2,9)
            elif tile.tiletype == TileType.SVB:
                self.mTileSprite.freeze(0,10)
            elif tile.tiletype == TileType.SVM:
                self.mTileSprite.freeze(1,10)
            elif tile.tiletype == TileType.SVT:
                self.mTileSprite.freeze(2,10)

            elif tile.tiletype == TileType.GRAVITYZONE:
                self.mTileSprite.freeze(2,7)


            area = self.mTileSprite.getRect()
            toDraw = self.mTileSprite.image.subsurface(area)
            toDraw = pygame.transform.scale(toDraw, (int(scale.x), int(scale.y)))
            self.sf.blit(toDraw, (viewpos.x, viewpos.y))