void enemy_tick_fly_straight_and_dip(struct jumpnrun_enemy            *self,
                                     struct jumpnrun_game_state       *state,
                                     struct jumpnrun_level            *lv,
                                     struct jumpnrun_tile_range const *visible_tiles,
                                     vec2d                            *player_inertia_mod) {
  if(fixed_point_lt(fixed_point_abs(fixed_point_sub(enemy_pos_hitbox(self).x,
                                                    state->player.base.hitbox.pos.x)),
                    FIXED_INT(20))) {
    self->base.flags |= JUMPNRUN_ENEMY_EVENT_TRIGGER1;
  }

  if(self->base.flags & JUMPNRUN_ENEMY_EVENT_TRIGGER1) {
    self->base.inertia.y =
      fixed_point_add(fixed_point_add(self->base.inertia.y,
                                      fixed_point_div(self->type->spawn_inertia.y, FIXED_INT(3))),
                      fixed_point_mul(FIXED_POINT(0, 5),
                                      fixed_point_sub(self->spawn_pos.y,
                                                      enemy_pos_hitbox(self).y)));
  } else {
    self->base.inertia.y = FIXED_INT(0);
  }

  enemy_tick_common(self, state, lv, visible_tiles, player_inertia_mod);
  enemy_animation_advance(self);
}
void enemy_tick_swing_up_and_down(struct jumpnrun_enemy            *self,
                                  struct jumpnrun_game_state       *state,
                                  struct jumpnrun_level            *lv,
                                  struct jumpnrun_tile_range const *visible_tiles,
                                  vec2d                            *player_inertia_mod) {
  enemy_tick_common(self, state, lv, visible_tiles, player_inertia_mod);

  self->base.inertia.y =
    fixed_point_add(fixed_point_add(self->base.inertia.y,
                                    fixed_point_div(self->type->spawn_inertia.y, FIXED_INT(3))),
                    fixed_point_mul(FIXED_POINT(0, 5),
                                    fixed_point_sub(self->spawn_pos.y,
                                                    enemy_pos_display(self).y)));

  enemy_animation_advance(self);
}
Example #3
0
int main(void)
{
	int i = 0;
	for (fixed32 value = SIN_TABLE_BEGIN; value <= SIN_TABLE_END; 
		 value += SIN_TABLE_STEP, i++)
	{
		fixed32 sin = sin_table[i];
		fixed32 cos = cos_table[i];
		fixed32 sinx2 = fixed_point_mult(sin, sin);
		fixed32 cosx2 = fixed_point_mult(cos, cos);
		fixed32 one = fixed_point_add(sinx2, cosx2);
		
		printf("%d %x => sin: %x cos: %x sin**2: %x cos**2: %x one: %x\n", i, value,
		       sin, cos, sinx2, cosx2, one);		
	}
}