]> Skullheadx's Git Forge - Pygame-Jam.git/commitdiff
changed stuff
authorSkullheadx <704277@pdsb.net>
Wed, 6 Jul 2022 17:53:53 +0000 (13:53 -0400)
committerSkullheadx <704277@pdsb.net>
Wed, 6 Jul 2022 17:53:53 +0000 (13:53 -0400)
Actors.py
Area.py
Enemy.py
Game.py
Pet.py

index 26b357ee0ecae2743fef648b5e2f26372e902779..c27570ae50e0d12807a2489e921345df4cd8a320 100644 (file)
--- a/Actors.py
+++ b/Actors.py
@@ -1,10 +1,10 @@
 from Setup import *
 
 class Actor:
-    width, height = 25, 50
+    width, height = 50, 100
     colour = (76, 82, 92)
     speed = 0.2
-    jump_strength = 0.5
+    jump_strength = 1
     gravity = 0.098
     friction = 0.9
     
@@ -19,25 +19,19 @@ class Actor:
         self.collision_mask = collision_mask  # the layer the actor detects collisions against
 
         self.health = 100
-
-        self.crouching = False
-        self.crouch_timer = None
+        self.dead = False
 
         self.areas = dict()
 
 
     def update(self, delta):
-
-        if self.crouching and self.crouch_timer == 0:
-            self.position.y -= self.height/2
-            self.crouching = False
-        if self.crouch_timer is not None:
-            self.crouch_timer -= delta
-            self.crouch_timer = max(0, self.crouch_timer)
-
         for area in self.areas.values():
             area.update(delta,self.position)
 
+        if self.is_dead():
+            return
+
+
         # Apply friction so the enemy isn't walking on ice
         if self.on_ground:
             self.velocity.x *= self.friction 
@@ -45,14 +39,22 @@ class Actor:
         # Apply gravity
         self.velocity.y += self.gravity
 
+    def is_dead(self):
+        if self.health <= 0:
+            self.dead = True
 
+    def modify_health(self):
 
 
-    def follow_target(self, node):
+
+    def follow_target(self, node, follow_range=None, stop_dist=None):
+        if stop_dist is None:
+            stop_dist = max(self.height, self.width) * 1.5
+
         target = node.position
 
         # So that actor doesn't come up and hug u lol
-        if (self.position - target).length_squared() < pow(max(self.height, self.width) * 1.5,2):
+        if (self.position - target).length_squared() < pow(stop_dist,2):
             return
 
         if target.x < self.position.x:
@@ -63,15 +65,6 @@ class Actor:
         if target.y < self.position.y:
             self.jump()
 
-    def crouch(self, time=None):
-        self.crouching = True
-        self.position.y += self.height/2
-        if time is not None:
-            self.crouch_timer = time
-        else:
-            self.crouch_timer = None
-
-
     def jump(self):
         if self.on_ground:
             self.velocity.y = -self.jump_strength
@@ -103,11 +96,10 @@ class Actor:
             for thing in mask:
                 if thing == self:
                     continue
+                for area in self.areas.values():
+                    if area.is_colliding(thing):
+                        area.signal(thing)
                 if collision_rect.colliderect(thing.get_collision_rect()):
-                    for area in self.areas.values():
-                        if area.is_colliding(thing):
-                            print('b')
-                            area.signal(thing)
                     if vel.y > 0:
                         pos.y = thing.position.y - self.height
                         vel.y = min(vel.y + thing.velocity.y, 0)
@@ -120,14 +112,11 @@ class Actor:
     def get_collision_rect(self, pos=None):
         if pos is None:
             pos = self.position
-        if self.crouching:
-            return pg.Rect(pos, (self.width, self.height/2))
-        else:
-            return pg.Rect(pos, (self.width, self.height))
+        return pg.Rect(pos, (self.width, self.height))
 
     def draw(self, surf):
         pg.draw.rect(surf, self.colour, self.get_collision_rect(), border_radius=8)
 
         # Uncomment for debugging area hitboxes
-        for area in self.areas.values():
-            area.draw(surf)
+        for area in self.areas.values():
+            area.draw(surf)
diff --git a/Area.py b/Area.py
index b3648135135a4f82eb43e377f234c31f799457aa..8babd5b9770cea2dc8f04a7e8d35c700ddbb5c6b 100644 (file)
--- a/Area.py
+++ b/Area.py
@@ -22,14 +22,14 @@ class Area:
         self.position = pos
 
     def is_colliding(self,node):
-        print("a", node)
         if isinstance(node, self.target):
-            print('c')
             if self.get_collision_rect().colliderect(node.get_collision_rect()):
-                print('d')
                 return True
         return False
 
+    def set_func(self, func):
+        self.func = func
+
     def signal(self, node):
         self.func(node)
 
index ee7034d3c2d650b99b932058c9d7f641c09cd5d5..e7a5e8f7507b5692d01312503937982cf8c2217d 100644 (file)
--- a/Enemy.py
+++ b/Enemy.py
@@ -15,7 +15,7 @@ class Enemy(Actor):
     def __init__(self, pos, collision_layer, collision_mask):
         super().__init__(pos, collision_layer, collision_mask)
 
-        self.areas = {"head":Area(self.position,pg.Vector2(0,-25), self.width, 25, Player, self.knockout)}
+        self.areas = {"head":Area(self.position,pg.Vector2(self.width * 1/3 * 1/2,-5), self.width * 2/3, 25, Player, self.knockout)}
 
         self.dizzy_time = 0
 
@@ -31,7 +31,7 @@ class Enemy(Actor):
 
     def knockout(self, node):
         self.dizzy_time = 5000
-        print(node)
+        self.health -= 50
         node.on_ground = True
         node.jump()
         # self.crouch(1000)
diff --git a/Game.py b/Game.py
index 56fa62b75160f5876d52592866f7ea444336a4e9..ffc32aefa63d061483fea49c31cf41e79b68f157 100644 (file)
--- a/Game.py
+++ b/Game.py
@@ -20,10 +20,12 @@ class Game:
 
     def update(self, delta):
         self.player.update(delta)
-        self.pet.update(delta, self.player)
+        self.pet.update(delta, self.player)
 
         for enemy in self.enemies:
             enemy.update(delta, self.player)
+            if enemy.dead:
+                print('a')
 
         for block in self.blocks:
             block.update(delta)
diff --git a/Pet.py b/Pet.py
index d7796623f73de38f2c2ef0bb063dbd31f821cd18..e669837064bbaf77120be94b901bd1c63f237d97 100644 (file)
--- a/Pet.py
+++ b/Pet.py
@@ -1,8 +1,10 @@
 from Actors import Actor
+from Player import Player
 
 class Pet(Actor):
     width,height = 35,25
-    speed = 0.25
+    speed = Player.speed * 0.75
+    jump_strength = Player.jump_strength / 2
 
     def __init__(self, pos, collision_layer, collision_mask):
         super().__init__(pos, collision_layer, collision_mask)
@@ -10,6 +12,6 @@ class Pet(Actor):
     def update(self, delta, target):
         super().update(delta)
 
-        self.follow_target(target)
+        self.follow_target(target, stop_dist=70)
 
         self.position, self.velocity = self.move_and_collide(self.position, self.velocity, delta)