Ejemplo n.º 1
0
int projectile_create(object *obj) {
    // strore the HAR in local userdata instead
    projectile_local *local = malloc(sizeof(projectile_local));
    local->owner = obj;
    local->wall_bounce = 0;
    local->ground_freeze = 0;
    local->af_data = ((har*)object_get_userdata(obj))->af_data;

    // Set up callbacks
    object_set_userdata(obj, local);
    object_set_dynamic_tick_cb(obj, projectile_tick);
    object_set_free_cb(obj, projectile_free);
    object_set_move_cb(obj, projectile_move);
    projectile_bootstrap(obj);
    return 0;
}
Ejemplo n.º 2
0
int object_auto_specialize(object *obj, int specialization_id) {
    switch(specialization_id) {
        case SPECID_HAR:
            DEBUG("Object is specialized as a HAR");
            har_bootstrap(obj);
            return 0;
        case SPECID_PROJECTILE:
            DEBUG("Object is specialized as a projectile");
            projectile_bootstrap(obj);
            return 0;
        case SPECID_HAZARD:
            DEBUG("Object is specialized as a hazard");
            hazard_bootstrap(obj);
            return 0;
        default:
            DEBUG("Object is specialized as %d", specialization_id);
            return 1;
    }
}