]> Skullheadx's Git Forge - Pygame-Jam.git/commitdiff
Completed Transition and Portals
authorlbcmk <30442978+lbcmk@users.noreply.github.com>
Sun, 10 Jul 2022 23:28:42 +0000 (19:28 -0400)
committerlbcmk <30442978+lbcmk@users.noreply.github.com>
Sun, 10 Jul 2022 23:28:42 +0000 (19:28 -0400)
DevLevelSelect.py
Function/Fade.py
Function/Portal.py
Function/Transition.py [new file with mode: 0644]
Game.py
main.py

index 3b3d5b672988c94846dc276d9db6e88d4bb9d6c0..788c2c8cf3acb88a3b59bcdda4d9c19307cbd10a 100644 (file)
@@ -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:
index 9b556bc06e281d670d1e532b550c23fa5fb5a6d5..263223ad7f99197cde7e59a8b935ae7f78c3aeec 100644 (file)
@@ -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()
             
index 342470db83f54927670f679ee3caaa8265befa9a..1062ea08afe76e8f4a732fffc581b3512d960b9c 100644 (file)
@@ -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 (file)
index 0000000..8a3d336
--- /dev/null
@@ -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 7ab356c6f259320bfde2576ceaa12afa7e71bed5..bac0cb13e73e7cc5229105f715945c41d1ba0b83 100644 (file)
--- 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 e3ccf8bb7bbc86730f4991f40351f42bcb297b54..1475966f819a766db857a63cf1a0e77eb56cc37c 100644 (file)
--- 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)