def f(*args): model = kwargs.get('model') collision_tag = kwargs.get('tag') speed = kwargs.get('speed') pos = makePos(*args) a = entity.Sprite(model=model, pos=pos) a.add_component( comp.SmartCollider(flag=vars.flags.foe, mask=vars.flags.player, tag=collision_tag)) a.add_component( comp.Controller2D(mask_up=vars.flags.platform, mask_down=vars.flags.platform | vars.flags.platform_passthrough, size=(14, 16), shift=(0, 8), max_climb_angle=80, max_descend_angle=80, debug=True)) a.add_component(comp.Dynamics2D(gravity=vars.gravity)) sm = comp.StateMachine(initial_state='idle') sm.states.append(states.SimpleState(uid='idle', anim='walk')) sm.states.append( platformer.states.FoeWalk(uid='walk', anim='walk', speed=speed, acceleration=0, flip_horizontal=False, flip_when_platform_ends=False, left=1)) a.add_component(sm) return a
def f(*args): key = args[0] desc = args[1] cio = desc.get('create_if_owned', False) if (not cio) and vars.someone_owns(key): # item is in inventory. don't create it return None pos = desc.get('pos') model = desc.get('model', None) #text = monkey.engine.read(desc.get('text')) s = None if model: anim = monkey.engine.read(desc.get('anim', None)) s = entity.Sprite(model=model, pos=pos, anim= anim) else: s = entity.Entity(pos = pos) #s.tag = desc.get('tag', None) s.tag= key # if a size is provided, add a hotspot size = desc.get('size', None) if size: prio = desc.get('priority', 0) s.add_component(compo.HotSpot(shape=shapes.Rect(width=size[0], height=size[1]), priority=prio, onenter=func.hover_on(key), onleave=func.hover_off(key), onclick=func.prova())) return s
def f(*args): # the first argument is the callback function # the second, if present, is the model model = kwargs.get('model', None) callback = kwargs.get('func') info = kwargs.get('info', None) pos = makePos2(*args) if model is None: a = entity.Entity(pos=pos) size = [args[2] * vars.tile_size, args[3] * vars.tile_size, 0] a.add_component( comp.Collider(debug=True, flag=vars.flags.foe, mask=vars.flags.player, tag=vars.tags.key, shape=sh3d.AABB(size=size))) a.add_component( comp.Info(func=callback, info=info, args=args, bounds=[0, 0, size[0], size[1]])) else: a = entity.Sprite(model=model, pos=pos) a.add_component( comp.SmartCollider(debug=True, flag=vars.flags.foe, mask=vars.flags.player, tag=vars.tags.key)) a.add_component(comp.Info(func=callback, info=info, args=args)) return a
def f(*args): key = args[0] is_player = key == vars.current_player desc = args[1] model = desc.get('model', None) text_color = desc.get('text_color', [255, 255, 255, 255]) text_offset = desc.get('text_offset', [0, 60]) pos = desc.get('pos') tag = desc.get('tag', key) s = None dir = desc.get('dir', 's') ways = desc.get('ways', 4) if model: s = entity.Sprite(model=model, pos=pos, tag='player' if is_player else tag) #s.add_component(compo.Collider(debug=True, flag=vars.Collision.Flags.player, mask=vars.Collision.Flags.other, # tag=vars.Collision.Tags.player, shape=shapes.Rect(width=8, height=2, offset=[-4, 0]))) if is_player: s.add_component(compo.Follow()) else: s = entity.Entity(pos=pos, tag='player' if is_player else tag) s.add_component( scumm.components.CharacterController(dir=dir, speed=100, text_color=text_color, text_offset=text_offset, ways=ways)) on_create_script = desc.get('script', None) if on_create_script: s.on_create = getattr(scripts, on_create_script) return s
def f(*args): pos = makePos2(*args) foe_id = kwargs.get('id') foe_info = vars.foes[foe_id] model = foe_info['model'] p = entity.Sprite(model=model, pos=pos) p.add_component( comp.SmartCollider(flag=vars.flags.foe, mask=vars.flags.player, tag=foe_info['tag'])) p.add_component( comp.Controller2D(mask_up=vars.flags.platform, mask_down=vars.flags.platform | vars.flags.platform_passthrough, max_climb_angle=80, max_descend_angle=80, size=foe_info['size'], debug=True)) p.add_component(comp.Dynamics2D(gravity=vars.gravity)) sm = comp.StateMachine(initial_state='walk') sm.states.append(states.SimpleState(uid='dead', anim='dead')) sm.states.append( platformer.states.FoeWalk( uid='walk', anim='walk', speed=foe_info['speed'], acceleration=0, flip_horizontal=foe_info['flip_h'], flip_when_platform_ends=foe_info['flip_when_platform_ends'], left=1)) p.add_component(sm) return p
def m3(x: float, y: float): a = entity.Sprite(model='sprites/01/score100', pos=(x * vars.tile_size, (y + 1) * vars.tile_size, 0)) main = example.get('main') id = main.add(a) s = script.Script() s.add_action(act.Move(speed=100, by=[0, 64], entity_id=id)) s.add_action(act.RemoveEntity(id)) example.play(s)
def f(*args): pos = (args[0] * vars.tile_size, args[1] * vars.tile_size, args[2]) current_state = vars.states[vars.state] model = current_state['model'] speed = current_state['speed'] p = entity.Sprite(model=model, pos=pos, tag='player') p.add_component( comp.SmartCollider(flag=vars.flags.player, mask=vars.flags.foe | vars.flags.foe_attack, tag=vars.tags.player)) p.add_component( comp.Controller2D(mask_up=vars.flags.platform, mask_down=vars.flags.platform | vars.flags.platform_passthrough, max_climb_angle=80, max_descend_angle=80, size=current_state['size'], debug=True)) p.add_component(comp.Dynamics2D(gravity=vars.gravity)) sm = comp.StateMachine(initial_state='walk') sm.states.append(states.SimpleState(uid='dead', anim='dead')) sm.states.append( platformer.states.WalkSide(uid='walk', speed=speed, acceleration=0.05, jump_speed=vars.jump_velocity, flip_horizontal=True)) # keys=[ # [90, states.StateCallback(func.fire)], # [264, states.StateCallback(func.enter_pipe)], # ])) sm.states.append( platformer.states.Jump(uid='jump', speed=speed, acceleration=0.10, flip_horizontal=True, anim_up='jump_up', anim_down='jump_down')) #keys=[ # [90, states.StateCallback(func.firej)], #])) sm.states.append( platformer.states.FoeWalk(uid='demo', anim='walk', speed=speed, acceleration=0.05, flip_horizontal=True, flip_when_platform_ends=False, left=1, flip_on_wall=False)) sm.states.append(states.SimpleState(uid='pipe', anim='pipe')) #sm.states.append(states.SimpleState(uid='slide', anim='slide')) p.add_component(sm) p.add_component(comp.KeyInput()) p.add_component(comp.Follow()) return p
def make_piece(pos, vx, vy, model, parent: example.Wrap1): a = entity.Sprite(model=model, pos=pos) id = parent.add(a) s = Script() s.add_action( act.MoveAccelerated(entity_id=id, v0=[vx, vy], a=[0, 0.5 * vars.gravity], yStop=0)) s.add_action(act.RemoveEntity(entity_id=id)) example.play(s)
def m2(x: float, y: float): def score(): m3(x, y + 1) a = entity.Sprite(model='sprites/01/flyingcoin', pos=(x * vars.tile_size, (y + 1) * vars.tile_size, 0)) main = example.get('main') id = main.add(a) s = script.Script() s.add_action( act.MoveAccelerated(v0=[0, 100], a=[0, -100], yStop=(y * vars.tile_size) + 16, entity_id=id)) s.add_action(act.RemoveEntity(id)) s.add_action(act.CallFunc(score)) example.play(s)
def load_sprite_from_file(filename): global SPRITE zipFile = res_zip.ressourceFile(filename) for f in zipFile.file_list: # Pour tout les fichier du zip if f.endswith(".json"): # Si fini par json img = f[:-4] + "png" if img in zipFile.file_list: # Et qu'il y a une ressource associé try: logging.info("Chargement de "+str(f)) surface = zipFile.get_texture(img) new_entity = entity.Sprite(surface) data = zipFile.get_file(f).read() new_entity.data = json.loads(data.decode()) if new_entity.data["ID"] in SPRITE: logging.error("Recouvrement de l'id %s par %s"%(new_entity.data["ID"], f)) SPRITE[new_entity.data["ID"]] = new_entity except Exception: logging.error("Erreur de chargement de "+str(f)) continue
def f(*args): key = args[0] is_player = key == vars.current_player desc = args[1] model = desc.get('model', None) text_color = monkey.engine.read(desc.get('text_color', [255, 255, 255, 255])) #text_color = text_offset = desc.get('text_offset', [0, 60]) pos = desc.get('pos') tag = desc.get('tag', key) s = None dir = desc.get('dir', 's') if model: s = entity.Sprite(model=model, pos=pos, tag='player' if is_player else tag) s.add_component(compo.Collider(debug=True, flag=vars.Collision.Flags.player, mask=vars.Collision.Flags.other, tag=vars.Collision.Tags.player, shape=shapes.Rect(width=8, height=2, offset=[-4, 0]))) if is_player: s.add_component(compo.Follow()) else: s = entity.Entity(pos=pos, tag='player' if is_player else tag) s.add_component(scumm.components.CharacterController(dir=dir, speed=vars.speed, text_color=text_color, text_offset=text_offset)) return s
def _brick(x, y, model, hits, callback): pos = makePos2(x, y) a = entity.Sprite(model=model, pos=pos) a.add_component( comp.Collider(flag=vars.flags.platform, mask=0, tag=0, shape=sh.Rect(width=vars.tile_size, height=vars.tile_size))) a.add_component(comp.Info(hitsLeft=hits, callback=callback)) b = entity.Entity() b.pos = (2, -0.5, 0) b.add_component( comp.Collider(flag=vars.flags.foe, mask=vars.flags.player, tag=vars.tags.bonus_brick_sensor, debug=True, shape=sh3d.AABB(size=(vars.tile_size - 4, 1, 0)) #shape=sh.Rect(width=vars.tile_size - 4, height=1.0) )) a.add(b) return a
def f(*args): model = kwargs.get('model') piece = kwargs.get('piece') pos = makePos2(*args) a = entity.Sprite(model=model, pos=pos) a.add_component( comp.Collider(flag=vars.flags.platform, mask=0, tag=0, shape=sh.Rect(width=vars.tile_size, height=vars.tile_size))) a.add_component(comp.Info(piece=piece)) b = entity.Entity() b.pos = (2, -0.5, 0) b.add_component( comp.Collider(flag=vars.flags.foe, mask=vars.flags.player, tag=vars.tags.brick_sensor, shape=sh3d.AABB(size=(vars.tile_size - 4, 1, 1)) #shape=sh.Rect(width=vars.tile_size-4, height=1.0) )) a.add(b) return a
def _fire(a: example.Wrap1, state: str): if vars.state >= 2: a.setState(state, {}) b = entity.Sprite(model='fire', pos=(a.x + (-2 if a.flipx else 2), a.y + 16, 0)) b.flipx = a.flipx b.add_component( comp.Controller2D(mask_up=vars.flags.platform, mask_down=vars.flags.platform | vars.flags.platform_passthrough, max_climb_angle=80, max_descend_angle=80)) b.add_component(comp.GarbageCollect(10)) b.add_component(comp.Dynamics2D(gravity=vars.gravity)) b.add_component( comp.SmartCollider(flag=vars.flags.player_attack, mask=vars.flags.foe | vars.flags.platform, tag=vars.tags.player_fire)) sm = comp.StateMachine(initial_state='jmp') sm.states.append( platformer.states.Bounce(uid='jmp', speed=300, a=0, b=200)) b.add_component(sm) example.get('main').add(b)
def f(*args): pos = makePos2(*args) model = kwargs.get('model') pct = kwargs.get('pct', 0) s = entity.Sprite(model=model, pos=pos) s.add_component( comp.SmartCollider(flag=vars.flags.foe, mask=vars.flags.player, tag=vars.tags.plant, debug=True)) s.add_component( comp.PolygonalMover(origin=pos, pct=pct, loop=True, moves=[{ 'delta': (0, -64), 'speed': 100, 'hold': 1 }, { 'delta': (0, 64), 'speed': 100, 'hold': 1 }])) return s
def f(*args): pos = (args[0], args[1], args[2]) scale = kwargs.get('scale', vars.player_scale) #char_info = vars. xcharactersgft```< speed = vars.player_speed model = vars.player_model width = 10 p = entity.Sprite(model=model, pos=pos, tag='player') # TODO shadow #shadow = entity.Entity() #shadow.add_component(comp.ShadowRenderer(angle=20.0)) #p.add(shadow) #p.layer = 2 #p.depth = 0x0207 #p.scale = scale * vars.scale p.scale = scale p.add_component( comp.Controller3D(size=[1, 1, 1], shift=[0, 0.5], debug=True, mask_up=vars.flags.platform, mask_down=vars.flags.platform | vars.flags.platform_passthrough, max_climb_angle=80, max_descend_angle=80)) p.add_component(comp.Dynamics2D(gravity=vars.gravity)) p.add_component( comp.SmartCollider(flag=vars.flags.player, mask=vars.flags.foe_attack, tag=vars.tags.player, cast_tag=vars.tags.player_attack, cast_mask=vars.flags.foe, debug=True)) sm = comp.StateMachine(initial_state='walk') sm.states.append( pstates.WalkSide3D( uid='walk', speed=speed, acceleration=0.05, jump_speed=vars.jump_velocity, animator=pstates.YAnimator(idle_up='idle_up', idle_down='idle', walk_up='walk_up', walk_down='walk'), keys=[ [90, states.StateCallback(func.punch) ], #StateTransition('attack1')], [265, states.StateCallback(func.climb_bottom)], [264, states.StateCallback(func.climb_top)] ], flip_horizontal=True)) sm.states.append( pstates.Jump3D(uid='jump', speed=speed, acceleration=0.10, flip_horizontal=True, keys=[], anim_up='jump_up', anim_down='jump_down')) # attack states sm.states.append(states.Attack(uid='attack0', anim='punch1')) sm.states.append(states.Attack(uid='attack1', anim='punch2')) sm.states.append(states.Attack(uid='attack2', anim='punch3')) sm.states.append( pstates.IsHit(uid='hit', anim='hit', acceleration=10, dist=4)) #sm.states.append(states.Attack(uid='attack2', anim='attack2')) sm.states.append( pstates.Climb(uid='climb', speed=50, idle_anim='climb', climb_anim='climb')) p.add_component(sm) p.add_component(comp.KeyInput()) p.add_component( comp.DynamicFollow( world_width=5216, cam_width=384, cam_height=224, origin=(0, 256), path=[ 3, 256, 2, 256, 3, 16, 2, 64, 3, 16, 2, 624, 0, 16, 2, 336, 3, 48, 2, 256, 3, 64, 2, 48, 3, 64, 2, 96, 3, 32, 2, 608, 0, 128, 2, 16, 0, 96, 2, 64, 0, 112, 2, 192, 0, 16, 2, 1536, 3, 16, 2, 320, 0, 32, 2, 16, 0, 16, 2, 16, 0, 48, 2, 144, 3, 160, 2, 192, 3, 32, 2, 432, 0, 336, 1, 80, 0, 48, 1, 112, 0, 112, 1, 672, 3, 32, 1, 256, 3, 96, 1, 2048, 3, 192, 1, 64, 0, 64, 1, 1984 ])) #p.add_component(comp.Follow(relpos=(0, 0, 5), z=1)) return p
def run(Display, network, map_name): Map_Data = maps.load_map(map_name) Pos_Ecran_Actuelle = [0, 0] Size = (Map_Data["size"][0] * 32, Map_Data["size"][1] * 32) Maps_Surface = pygame.Surface(Size) ScreenSize = Display.get_rect() Menu_Width = 0 pos_curs = (50, 50) Default_Sprite = entity.Sprite(pygame.Surface((32, 32))) Scheduler = pygame.time.Clock() logging.info("Tentative de connection...") while True: if network.loginok: break time.sleep(0.1) logging.info("Connection ok...") network.join_room("serdtfyugiohjpk") while True: if network.room_joined: break time.sleep(0.1) network.create_entity(1, network.player_uuid, UUID.uuid4(), (random.randint(0, 10), random.randint(0, 10))) network.create_entity(1, network.player_uuid, UUID.uuid4(), (random.randint(0, 10), random.randint(0, 10))) logging.info("Lancement de la bouble principale...") Sprite_cliqué = False GameRun = True while GameRun: for event in pygame.event.get(): #Attente des événements if event.type == MOUSEMOTION: pos_curs = event.pos if event.type == MOUSEBUTTONDOWN: if event.button == 1: clic_x = event.pos[0] clic_y = event.pos[1] bloc_x = (Pos_Ecran_Actuelle[0] + clic_x) // 32 bloc_y = (Pos_Ecran_Actuelle[1] + clic_y) // 32 Sprite_cliqué = False for Player in network.Player_list.values(): for sprite in Player.Entity: sprite_x = sprite.rect.x // 32 sprite_y = sprite.rect.y // 32 if sprite_x == bloc_x and sprite_y == bloc_y: Sprite_cliqué = sprite logging.debug("Entitée cliqué: %s %s %s" % (bloc_x, bloc_y, Sprite_cliqué)) break if event.button == 3: clic_x = event.pos[0] clic_y = event.pos[1] bloc_x = (Pos_Ecran_Actuelle[0] + clic_x) // 32 bloc_y = (Pos_Ecran_Actuelle[1] + clic_y) // 32 if Sprite_cliqué: network.move_entity(Sprite_cliqué, (bloc_x, bloc_y)) logging.debug("Entitée déplacé: %s %s %s" % (bloc_x, bloc_y, Sprite_cliqué)) if event.type == QUIT: logging.info("Demande de fermeture...") GameRun = False if event.type == KEYDOWN: if event.key == K_LEFT: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (-15, 0)) if event.key == K_RIGHT: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (15, 0)) if event.key == K_UP: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (0, -15)) if event.key == K_DOWN: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (0, 15)) if event.key == K_s: maps.save_map(map_name, Map_Data) if pos_curs[0] < 10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (-5, 0)) if pos_curs[0] > config.CFG["screen.size"][0] - 10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (5, 0)) if pos_curs[1] < 10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (0, -5)) if pos_curs[1] > config.CFG["screen.size"][1] - 10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width * 32, (0, 5)) y = 0 for y in range(0, Map_Data["size"][1]): for x in range(0, Map_Data["size"][0]): try: sprite = ressource.SPRITE[Map_Data["data"][y][x]] except Exception: sprite = Default_Sprite Maps_Surface.blit(sprite.image, (x * 32, y * 32)) for Player in network.Player_list.values(): Player.Entity.draw(Maps_Surface) Pos_inversé = (-Pos_Ecran_Actuelle[0], -Pos_Ecran_Actuelle[1]) Display.blit(Maps_Surface, Pos_inversé) Scheduler.tick_busy_loop(int(config.CFG["screen.fps"])) pygame.display.flip() Maps_Surface.fill(0) Display.fill(0)
def run(Display, map_name, size): import logging Map_Data = maps.load_map(map_name) if Map_Data == False: Map_Data = maps.new_maps(size) Pos_Ecran_Actuelle = [0, 0] Size = (Map_Data["size"][0]*32, Map_Data["size"][1]*32) Default_Sprite = entity.Sprite(pygame.Surface((32, 32))) ScreenSize = Display.get_rect() Maps_Surface = pygame.Surface(Size) Menu_Width = int(config.CFG["mapeditor.menu_width"]) Menu_Surface = pygame.Surface((Menu_Width*32, ScreenSize.height)) Pos_Menu_Surface = Menu_Surface.get_rect() Pos_Menu_Surface.x = ScreenSize.width - Menu_Width*32 pos_curs = (50, 50) Scheduler = pygame.time.Clock() SpriteGroup = entity.EntityGroup() ListeSprite = [] Position = 0 for Sp_i in sorted(ressource.SPRITE): if Sp_i < 1000: continue Sp = ressource.SPRITE[Sp_i] Pos_x = (Position%Menu_Width) * 32 Pos_y = (Position//Menu_Width) * 32 Position += 1 Menu_Surface.blit(Sp.image, (Pos_x, Pos_y)) ListeSprite.append({"id":Sp.data["ID"]}) Texture_Séléctionné = 0 GameRun = True while GameRun: for event in pygame.event.get(): #Attente des événements if event.type == MOUSEMOTION: pos_curs = event.pos if event.type == MOUSEBUTTONDOWN: if event.button == 1: clic_x = event.pos[0] clic_y = event.pos[1] if clic_x > Pos_Menu_Surface.x: # Si clique dans le menu de gauche bloc_x = (clic_x - Pos_Menu_Surface.x) // 32 bloc_y = (clic_y) // 32 Texture_Séléctionné = bloc_y*Menu_Width + bloc_x if clic_x < Pos_Menu_Surface.x: bloc_x = (Pos_Ecran_Actuelle[0] + clic_x) // 32 bloc_y = (Pos_Ecran_Actuelle[1] + clic_y) // 32 Id = int(ListeSprite[Texture_Séléctionné]["id"]) if bloc_y>=0 and bloc_y<len(Map_Data["data"]): if bloc_x>=0 and bloc_x<len(Map_Data["data"][bloc_y]): Map_Data["data"][bloc_y][bloc_x] = Id logging.debug("Bloc cliqué: %s %s %s"%(bloc_x, bloc_y, Id)) if event.button == 2: clic_x = event.pos[0] clic_y = event.pos[1] if clic_x < Pos_Menu_Surface.x: bloc_x = (Pos_Ecran_Actuelle[0] + clic_x) // 32 bloc_y = (Pos_Ecran_Actuelle[1] + clic_y) // 32 Id = Map_Data["data"][bloc_y][bloc_x] for i in range(0, len(ListeSprite)): if Id == ListeSprite[i]["id"]: Texture_Séléctionné = i logging.debug("Bloc pipette: %s %s %s %s"%(bloc_x, bloc_y, Id, Texture_Séléctionné)) if event.type == QUIT: maps.save_map(map_name, Map_Data) GameRun = False if event.type == KEYDOWN: if event.key == K_LEFT: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (-15, 0)) if event.key == K_RIGHT: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (15, 0)) if event.key == K_UP: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (0, -15)) if event.key == K_DOWN: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (0, 15)) if event.key == K_s: maps.save_map(map_name, Map_Data) if pos_curs[0] < 10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (-5, 0)) if pos_curs[0] > config.CFG["screen.size"][0]-10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (5, 0)) if pos_curs[1] < 10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (0, -5)) if pos_curs[1] > config.CFG["screen.size"][1]-10: divers.move_screen(Pos_Ecran_Actuelle, Size, ScreenSize, Menu_Width*32, (0, 5)) y=0 for y in range(0, Map_Data["size"][1]): for x in range(0, Map_Data["size"][0]): try: sprite = ressource.SPRITE[ Map_Data["data"][y][x] ] except Exception: sprite = Default_Sprite Maps_Surface.blit(sprite.image, (x*32, y*32)) SpriteGroup.draw(Maps_Surface) Pos_inversé = (-Pos_Ecran_Actuelle[0], -Pos_Ecran_Actuelle[1]) Display.blit(Maps_Surface, Pos_inversé) Display.blit(Menu_Surface, Pos_Menu_Surface) Pos_x = ScreenSize.width - Menu_Width*32 + ((Texture_Séléctionné%Menu_Width) * 32) Pos_y = (Texture_Séléctionné//Menu_Width) * 32 Display.blit(ressource.SPRITE[ 200 ].image, (Pos_x, Pos_y)) Scheduler.tick_busy_loop(int(config.CFG["screen.fps"])) pygame.display.flip() Maps_Surface.fill(0) Display.fill(0)
def foe(pos, info): model = info.get('model') scale = info.get('scale', 1.0) speed = info.get('speed', 50) energy = info.get('energy', 2) p = entity.Sprite(model=model, pos=pos) # shadow = entity.Entity() # shadow.add_component(comp.ShadowRenderer(angle=20.0)) # p.add(shadow) p.layer = 1 p.scale = scale p.add_component( comp.Controller3D(mask_up=vars.flags.platform, mask_down=vars.flags.platform | vars.flags.platform_passthrough, size=[1, 1, 1], shift=[0, 0.5], max_climb_angle=80, max_descend_angle=80, debug=True)) p.add_component(comp.Dynamics2D(gravity=vars.gravity)) p.add_component( comp.SmartCollider(flag=vars.flags.foe, mask=vars.flags.player_attack, tag=vars.tags.foe, cast_tag=vars.tags.foe_attack, cast_mask=vars.flags.player, debug=True)) p.add_component(comp.Info(energy=energy)) sm = comp.StateMachine(initial_state='walk') attacks = [{'state': 'attack0', 'prob': 0, 'in_range': True}] sm.states.append(states.Attack(uid='attack0', anim='punch')) # for i in range(0, n_attacks): # attack_id = 'attack' + str(i+1) # attack_list.append({'state': attack_id, 'prob': patt[i], 'in_range': True}) # sm.states.append(states.Attack(uid=attack_id, anim=attack_id)) # hp_map[attack_id] = hp[i] sm.states.append( pstates.FoeChase3D(uid='walk', walk_anim='walk', idle_anim='idle', speed=speed, acceleration=0.05, attacks=attacks, prob_attack=0)) # prob_attack=prob_attack)) sm.states.append( pstates.IsHit(uid='hit', anim='hit', acceleration=10, dist=4)) v0y = math.sqrt(2 * abs(vars.gravity) * 32) v0x = 64 * abs(vars.gravity) / v0y sm.states.append( pstates.Fly(uid='dead', anim_up='dead_up', anim_down='dead_down', anim_lie='dead_lie', v0=(v0x, v0y))) # sm.states.append(states.SimpleState(uid='dead', anim='hit')) p.add_component(sm) return p