view pytouhou/game/enemy.pxd @ 497:3da7395f39e3

Make enemy callbacks programmables.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Mon, 14 Oct 2013 12:20:55 +0200
parents feecdb4a8928
children 292fea5c584e
line wrap: on
line source

from pytouhou.game.element cimport Element
from pytouhou.game.game cimport Game
from pytouhou.game.player cimport Player
from pytouhou.utils.interpolator cimport Interpolator

cdef class Callback:
    cdef function
    cdef public tuple args  # XXX: public only for ECL’s copy_callbacks.

    cpdef enable(self, function, tuple args)
    cpdef disable(self)
    cpdef fire(self)

cdef class Enemy(Element):
    cdef public double z, angle, speed, rotation_speed, acceleration
    cdef public long _type, bonus_dropped, die_score, frame, life, death_flags, current_laser_id, low_life_trigger, timeout, remaining_lives, bullet_launch_interval, bullet_launch_timer, death_anim, direction, update_mode
    cdef public bint visible, was_visible, touchable, collidable, damageable, boss, automatic_orientation, delay_attack
    cdef public tuple difficulty_coeffs, extended_bullet_attributes, bullet_attributes, bullet_launch_offset, movement_dependant_sprites, screen_box
    cdef public Callback death_callback, boss_callback, low_life_callback, timeout_callback
    cdef public dict laser_by_id
    cdef public list aux_anm
    cdef public Interpolator interpolator, speed_interpolator
    cdef public object _anms, process

    cdef Game _game
    cdef double[2] hitbox_half_size

    cpdef play_sound(self, index)
    cpdef set_hitbox(self, double width, double height)
    cpdef set_bullet_attributes(self, type_, anim, sprite_idx_offset,
                                bullets_per_shot, number_of_shots, speed, speed2,
                                launch_angle, angle, flags)
    cpdef set_bullet_launch_interval(self, long value, unsigned long start=*)
    cpdef fire(self, offset=*, bullet_attributes=*, launch_pos=*)
    cpdef new_laser(self, variant, laser_type, sprite_idx_offset, angle, speed,
                    start_offset, end_offset, max_length, width,
                    start_duration, duration, end_duration,
                    grazing_delay, grazing_extra_duration, unknown,
                    offset=*)
    cpdef Player select_player(self, list players=*)
    cpdef double get_player_angle(self, tuple pos=*, Player player=*) except 42
    cpdef set_anim(self, index)
    cdef void die_anim(self) except *
    cdef void drop_particles(self, long number, long color) except *
    cpdef set_aux_anm(self, long number, long index)
    cpdef set_pos(self, x, y, z)
    cpdef move_to(self, duration, x, y, z, formula)
    cpdef stop_in(self, duration, formula)
    cdef bint is_visible(self, long screen_width, long screen_height) except? False
    cdef void check_collisions(self) except *
    cdef void handle_callbacks(self) except *
    cdef void update(self) except *