Added simple water

This commit is contained in:
theo@manjaro 2021-11-16 11:32:31 +01:00
parent 5b026041cc
commit 5dfa2a06af
4 changed files with 60 additions and 13 deletions

View File

@ -7,6 +7,7 @@ class Movable(BaseObject):
self.sprite = game.sprite_lib["icon.png"] self.sprite = game.sprite_lib["icon.png"]
self.tileset = game.gameloop.findname("TilesetRenderer")[0] self.tileset = game.gameloop.findname("TilesetRenderer")[0]
self.water = game.gameloop.findname("Water")[0]
super().__init__(x,y,game,self.sprite.get_width(),self.sprite.get_height()) super().__init__(x,y,game,self.sprite.get_width(),self.sprite.get_height())

View File

@ -36,13 +36,19 @@ class Player(Movable):
self.stepsize = 20 self.stepsize = 20
self.gravity = 15 self.gravity = 15
self.maxgravity = 80 self.maxgravity = 30
self.jump = -5 self.jump = -5
self.verspd = self.maxgravity self.verspd = self.maxgravity
self.gravityway = 1
def step(self): def step(self):
if not self.hitpose: if not self.hitpose:
self.gravityway = 1
if self.rect.center[1]>self.water.rect[1]:
self.gravityway = -1
if not self.game.globals["hitpose"]: if not self.game.globals["hitpose"]:
keys = self.game.inputs["keys"] keys = self.game.inputs["keys"]
if self.controlled: if self.controlled:
@ -52,15 +58,24 @@ class Player(Movable):
# Si je suis sur le sol # Si je suis sur le sol
self.onground = False self.onground = False
self.onceilling = False self.onceilling = False
if self.checkcollisions(0,1): if self.checkcollisions(0,self.gravityway):
self.onground = True self.onground = True
self.verspd=min(0,self.verspd) if self.gravityway > 0:
self.verspd=min(0,self.verspd)
else:
self.verspd=max(0,self.verspd)
else: else:
self.verspd+=self.gravity*self.game.dt self.verspd+=self.gravity*self.game.dt*self.gravityway
self.verspd= min(self.maxgravity,self.verspd) if self.gravityway>0:
if self.checkcollisions(0,-1): self.verspd= min(self.maxgravity,self.verspd)
else:
self.verspd = max(-self.maxgravity,self.verspd)
if self.checkcollisions(0,-self.gravityway):
self.onceilling = True self.onceilling = True
self.verspd= max(0,self.verspd) # Se cogne au plafond BONK if self.gravityway>0:
self.verspd= max(0,self.verspd) # Se cogne au plafond BONK
else:
self.verspd = min(0,self.verspd)
# Adding knockback # Adding knockback
self.horspd+=self.horkb self.horspd+=self.horkb
@ -69,12 +84,12 @@ class Player(Movable):
self.jumped = False self.jumped = False
if self.onground: if self.onground:
if 0<keys["up"]["timer"]<=3: if 0<keys["up"]["timer"]<=3:
self.verspd= self.jump self.verspd= self.jump*self.gravityway
self.jumped = True self.jumped = True
if self.verspd==0: if self.verspd==0:
self.move(0,-self.stepsize) self.move(0,-self.stepsize*self.gravityway)
super().step() super().step()
self.move(0,self.stepsize) self.move(0,self.stepsize*self.gravityway)
else: else:
super().step() super().step()
@ -96,9 +111,9 @@ class Player(Movable):
if semi!=self.checkcollisions(0,0,classic=False) and semi: if semi!=self.checkcollisions(0,0,classic=False) and semi:
self.rect.bottom = semi.top+1 self.rect.bottom = semi.top+1
falled = True falled = True
if not falled: if not falled: # Check for fastfall
if 0<self.verspd <= self.fastfallmargin or (abs(self.verspd)<abs(self.currentspdv) and abs(self.verspd)<=self.fastfallmargin/1.8): if abs(self.verspd) <= self.fastfallmargin and not self.onground:
self.verspd = self.maxgravity/4 self.verspd = self.maxgravity/5*self.gravityway
else: # If I'm in hitpose else: # If I'm in hitpose
if self.hitposetimer.tick(self.game.dt): if self.hitposetimer.tick(self.game.dt):

View File

@ -0,0 +1,28 @@
from gamedata.objects.base import BaseObject
class Water(BaseObject):
def __init__(self,y,game):
super().__init__(0,y,game,game.DISPLAY_WIDTH,game.DISPLAY_HEIGHT)
self.destinationy = y
self.speed = 10
self.sprite = game.pygame.Surface((game.DISPLAY_WIDTH,game.DISPLAY_HEIGHT),flags=game.pygame.SRCALPHA)
self.sprite.fill([10,100,180])
self.sprite.set_alpha(200)
self.surfacepoints = []
self.nbpoints = 50
for i in range(self.nbpoints):
self.surfacepoints.append([game.DISPLAY_WIDTH/self.nbpoints*i,0])
def step(self):
self.rect[1] += (self.destinationy-self.rect[1])*self.game.dt*self.speed
def draw(self):
# Draw the water to the screen
self.game.window.blit(self.sprite,[self.rect[0],self.rect[1]-self.game.globals["cameray"]])

View File

@ -8,6 +8,7 @@ from gamedata.objects.combat.player import Player
from gamedata.objects.combat.manager import FightManager from gamedata.objects.combat.manager import FightManager
from gamedata.objects.combat.hitbox import Hitbox from gamedata.objects.combat.hitbox import Hitbox
from gamedata.objects.combat.tileset import TilesetRenderer from gamedata.objects.combat.tileset import TilesetRenderer
from gamedata.objects.combat.water import Water
def main(game): def main(game):
game.scaleCamera() game.scaleCamera()
@ -27,6 +28,8 @@ def fight(game):
game.gameloop.summon(tileset) game.gameloop.summon(tileset)
box = Hitbox(100,80,game) box = Hitbox(100,80,game)
game.gameloop.summon(box) game.gameloop.summon(box)
water = Water(200,game)
game.gameloop.summon(water)
p1 = Player(game) p1 = Player(game)
game.gameloop.summon(p1) game.gameloop.summon(p1)