From: lbcmk <30442978+lbcmk@users.noreply.github.com> Date: Sun, 10 Jul 2022 23:28:42 +0000 (-0400) Subject: Completed Transition and Portals X-Git-Url: http://git.skullheadx.com/index.css?a=commitdiff_plain;h=3fb48b2d6185167569c26bab22ca97746f21b5fe;p=Pygame-Jam.git Completed Transition and Portals --- diff --git a/DevLevelSelect.py b/DevLevelSelect.py index 3b3d5b6..788c2c8 100644 --- a/DevLevelSelect.py +++ b/DevLevelSelect.py @@ -19,6 +19,9 @@ class DevLevelSelect: self.texts.append(createText(X, 450, 24, black, "Regular", "LevelCreator")) self.texts.append(createText(X, 550, 24, black, "Regular", "AutoLoad [-]")) + self.texts.append(createText(X, 750, 24, black, "Regular", "Transition")) + + self.autoload = False if os.path.isfile('./Save/ignore_DevAutoload.txt'): @@ -71,6 +74,8 @@ class DevLevelSelect: self.texts[4] = createText(250, 550, 24, black, "Regular", "AutoLoad [-]") self.autoload = False return; + case 5: + self.level = -4 if(self.autoload == True): try: diff --git a/Function/Fade.py b/Function/Fade.py index 9b556bc..263223a 100644 --- a/Function/Fade.py +++ b/Function/Fade.py @@ -1,5 +1,22 @@ from Setup import * +class fade: + def __init__(self): + self.transparency = 255 + self.overlay = pg.Surface((1080, 640)) + self.overlay.fill((0, 0, 0)) + self.overlay.set_alpha(self.transparency) + + def update(self, transition = False): + if self.transparency > 0 and not transition: + self.transparency -= 3 + self.overlay.set_alpha(self.transparency) + if self.transparency < 255 and transition: + self.transparency += 3 + self.overlay.set_alpha(self.transparency) + + def draw(self): + screen.blit(self.overlay, (0, 0)) class fadein: def __init__(self): self.transparency = 255 @@ -9,7 +26,7 @@ class fadein: def update(self): if self.transparency > 0: - self.transparency -= 1 + self.transparency -= 3 self.overlay.set_alpha(self.transparency) self.draw() @@ -17,7 +34,7 @@ class fadein: screen.blit(self.overlay, (0, 0)) -class fadeout(): +class fadeout: def __init__(self): self.transparency = 0 self.overlay = pg.Surface((1080, 640)) @@ -26,7 +43,7 @@ class fadeout(): def update(self): if self.transparency < 255: - self.transparency += 1 + self.transparency += 3 self.overlay.set_alpha(self.transparency) self.draw() diff --git a/Function/Portal.py b/Function/Portal.py index 342470d..1062ea0 100644 --- a/Function/Portal.py +++ b/Function/Portal.py @@ -21,12 +21,14 @@ class Transition: buttonImage = pg.image.load('./Assets/buttons/e.png') self.buttonImage = pg.transform.scale(buttonImage, (self.width/2, self.width/2)) + self.fade = False + def update(self): return; def draw(self, surf, playerPos, playerOffset=[0,0], offsetX=0, offsetY=0): - + coords = getWorldCoords(0, 0) coords[1] += self.portalYAnim @@ -39,7 +41,7 @@ class Transition: surf.blit(self.buttonImage, (a[0][0]+self.width/4, a[1][1]-(2*self.width/3))) pressed = pg.key.get_pressed() if pressed[pg.K_e] or pressed[pg.K_RETURN]: - pass; + self.fade = True; pg.draw.polygon(surf, (107, 18, 158), a) diff --git a/Function/Transition.py b/Function/Transition.py new file mode 100644 index 0000000..8a3d336 --- /dev/null +++ b/Function/Transition.py @@ -0,0 +1,64 @@ +from Setup import * +from random import randint, uniform +from datetime import datetime, timedelta +from CommonImports.colours import white +from Function.Fade import fade + +class TransitionScene: + + char_frames = [ + pg.transform.scale(pg.image.load(path.join("Assets/player/idle", file)).subsurface(pg.Rect(179, 169, 170, 401)), + (50, 100)) for file in listdir("Assets/player/idle")] + + def __init__(self, next_level): + self.level = -4 + self.next_level = next_level + + self.stars = [] + for i in range(100): + self.stars.append([randint(0, SCREEN_WIDTH), randint(0, SCREEN_HEIGHT), uniform(1, 2)]) + self.starLen = 0 + self.timeSinceStart = datetime.utcnow() + + # self.down = True + self.frames = 0 + self.rotate_angle = 0 + # self.x = SCREEN_WIDTH/2 - 100 + self.x = 0 + self.y = SCREEN_HEIGHT/2 - 50 + + self.x2 = self.x + self.y2 = self.y + + def update(self, delta): + # if(self.starLen <= 75): + self.starLen += 0.5 + + self.x = self.x + 7 + self.y = self.y - 0.3 + + self.x2 = self.x + randint(-2, 2) + self.y2 = self.y + randint(-2, 2) + + + if(datetime.utcnow() - self.timeSinceStart > timedelta(seconds=3)): + self.level = self.next_level + + + if(self.rotate_angle < 360): + self.rotate_angle += 1 + else: + self.rotate_angle = 0 + + if(self.frames+1 < len(self.char_frames)): + self.frames += 1 + else: + self.frames = 0 + + def draw(self, surf): + surf.fill((0, 0, 0)) + if(self.starLen > 0): + for i in range(len(self.stars)): + pg.draw.line(surf, white, (self.stars[i][0], self.stars[i][1]), (self.stars[i][0] - (self.starLen*self.stars[i][2]), self.stars[i][1] + (self.starLen*self.stars[i][2]/15))) + image = pg.transform.rotate(self.char_frames[self.frames], self.rotate_angle) + surf.blit(image, (self.x2, self.y2)) \ No newline at end of file diff --git a/Game.py b/Game.py index 7ab356c..bac0cb1 100644 --- a/Game.py +++ b/Game.py @@ -1,4 +1,6 @@ from re import T + +from regex import F import Setup from Setup import * from Setup import camera_offset @@ -14,6 +16,7 @@ from UI.HealthBar import HealthBar from UI.PotionUI import PotionUI from Function.Portal import Transition +from Function.Fade import fade class Game: @@ -36,10 +39,13 @@ class Game: self.dashMeter = DashMeter(self.player.dashCooldown) self.healthBar = HealthBar() self.potionUI = PotionUI() - self.level = 1 + self.level = level self.scene.level = self.level self.Transition = Transition(-2, 0,0) + self.fade = self.Transition.fade + self.fadeT = fade() + self.next_level = 0 # def load_world(self, level): @@ -57,6 +63,7 @@ class Game: self.collision_layer["enemy"].add(self.enemies[i]) self.world.update(delta) + self.fade = self.Transition.fade # self.pet.update(delta, self.player, self.camera_pos) @@ -82,7 +89,20 @@ class Game: if self.player.dead: self.scene.update() self.scene.draw() - + + if(self.fade == True): + self.fadeT.update(True) + self.fadeT.draw() + else: + self.fadeT.update() + self.fadeT.draw() + + if(self.fadeT.transparency >= 255): + self.Transition.fade = False + self.next_level = self.level + 1 + self.level = -4 + # self.__init__(self.level) + # print(self.player.get_collision_rect())s # Debug Lines. DO NOT CROSS THEM! diff --git a/main.py b/main.py index e3ccf8b..1475966 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,7 @@ from Game import Game from Test import Test from LevelCreator import LevelCreator from MainMenu import Menu +from Function.Transition import TransitionScene from DevLevelSelect import DevLevelSelect @@ -10,9 +11,11 @@ delta = 1000//fps is_running = True # scene = Menu() +# scene = TransitionScene() scene = DevLevelSelect() old_level = 0 level = 1 +next_level = 0 while is_running: if pg.event.peek(pg.QUIT): @@ -20,6 +23,10 @@ while is_running: if level <= 1: level = scene.level + try: + next_level = scene.next_level + except: + next_level = 0 if level == -1: level = old_level @@ -27,12 +34,16 @@ while is_running: if old_level != level: match level: + case -4: + scene = TransitionScene(next_level) case -2: scene = LevelCreator() case 0: scene = Menu() case 1: scene = Game(1) + case 2: + scene = Game(2) old_level = level scene.update(delta)