void animation_free(animation *ani) { iterator it; // Free animation string str_free(&ani->animation_string); // Free collision coordinates vector_free(&ani->collision_coords); // Free extra strings vector_iter_begin(&ani->extra_strings, &it); str *tmp_str = NULL; while((tmp_str = iter_next(&it)) != NULL) { str_free(tmp_str); } vector_free(&ani->extra_strings); // Free animations vector_iter_begin(&ani->sprites, &it); sprite *tmp_sprite = NULL; while((tmp_sprite = iter_next(&it)) != NULL) { sprite_free(tmp_sprite); } vector_free(&ani->sprites); }
int ai_block_projectile(controller *ctrl, ctrl_event **ev) { ai *a = ctrl->data; object *o = ctrl->har; iterator it; object **o_tmp; vector_iter_begin(&a->active_projectiles, &it); while((o_tmp = iter_next(&it)) != NULL) { object *o_prj = *o_tmp; if(projectile_get_owner(o_prj) == o) { continue; } if(o_prj->cur_sprite && maybe(a->difficulty)) { vec2i pos_prj = vec2i_add(object_get_pos(o_prj), o_prj->cur_sprite->pos); vec2i size_prj = object_get_size(o_prj); if (object_get_direction(o_prj) == OBJECT_FACE_LEFT) { pos_prj.x = object_get_pos(o_prj).x + ((o_prj->cur_sprite->pos.x * -1) - size_prj.x); } if(fabsf(pos_prj.x - o->pos.x) < 120) { a->cur_act = (o->direction == OBJECT_FACE_RIGHT ? ACT_DOWN|ACT_LEFT : ACT_DOWN|ACT_RIGHT); controller_cmd(ctrl, a->cur_act, ev); return 1; } } } return 0; }
void menu_tick(menu *menu) { iterator it; component **tmp; vector_iter_begin(&menu->objs, &it); while((tmp = iter_next(&it)) != NULL) { (*tmp)->tick(*tmp); } }
void menu_render(menu *menu) { iterator it; component **tmp; video_render_sprite(&menu->sur, menu->x, menu->y, BLEND_ALPHA, 0); vector_iter_begin(&menu->objs, &it); while((tmp = iter_next(&it)) != NULL) { (*tmp)->render(*tmp); } }
int menu_get_ypos(menu *menu) { int ypos = 8; iterator it; vector_iter_begin(&menu->objs, &it); component **tmp; while((tmp = iter_next(&it)) != NULL) { ypos += (*tmp)->h; } return ypos; }
static void xysizer_render(component *c) { sizer *s = component_get_obj(c); // Just render all children iterator it; component **tmp; vector_iter_begin(&s->objs, &it); while((tmp = iter_next(&it)) != NULL) { component_render(*tmp); } }
void font_free(font *font) { font->size = FONT_UNDEFINED; iterator it; vector_iter_begin(&font->textures, &it); texture **tex = NULL; while((tex = iter_next(&it)) != NULL) { texture_free(*tex); free(*tex); } vector_free(&font->textures); }
static int xysizer_action(component *c, int action) { sizer *s = sizer_get_obj(c); // Just pass events to all children iterator it; component **tmp; vector_iter_begin(&s->objs, &it); while((tmp = iter_next(&it)) != NULL) { component_action(*tmp, action); } return 1; // Wasn't handled here (event though it might have been) }
void ticktimer_run(ticktimer *tt) { iterator it; vector_iter_begin(&tt->units, &it); ticktimer_unit *unit; while((unit = iter_next(&it)) != NULL) { if(unit->ticks <= 0) { unit->callback(unit->userdata); vector_delete(&tt->units, &it); } else { unit->ticks--; } } }
static int xysizer_event(component *c, SDL_Event *event) { sizer *s = component_get_obj(c); // Just pass events to all children int handled = 0; iterator it; component **tmp; vector_iter_begin(&s->objs, &it); while((tmp = iter_next(&it)) != NULL) { handled |= component_event(*tmp, event); } return 1; // Wasn't handled here (event though it might have been) }
void shaderprog_free(shaderprogram *prog) { // Detach shaders iterator it; vector_iter_begin(&prog->shaders, &it); shader *tmp; while((tmp = iter_next(&it)) != NULL) { glDetachShader(prog->id, tmp->id); shader_free(tmp); } vector_free(&prog->shaders); // Destroy program glDeleteProgram(prog->id); }
static void xysizer_layout(component *c, int x, int y, int w, int h) { sizer *s = component_get_obj(c); // Set layout for all components in the sizer iterator it; component **tmp; vector_iter_begin(&s->objs, &it); while((tmp = iter_next(&it)) != NULL) { // Set component position and size from the component hint int m_x = ((*tmp)->x_hint < x) ? x : (*tmp)->x_hint; int m_y = ((*tmp)->y_hint < y) ? y : (*tmp)->y_hint; int m_w = ((*tmp)->w_hint < 0) ? 0 : (*tmp)->w_hint; int m_h = ((*tmp)->h_hint < 0) ? 0 : (*tmp)->h_hint; if(m_w == 0 || m_h == 0) { DEBUG("Warning: Gui component hidden, because size is 0. Make sure size hints are set!"); } component_layout(*tmp, m_x, m_y, m_w, m_h); } }
void menu_select(menu *menu, component *c) { component **tmp; iterator it; int i = 0; vector_iter_begin(&menu->objs, &it); while((tmp = iter_next(&it)) != NULL) { if (*tmp == c) { break; } i++; } if (tmp == NULL) { return; } tmp = vector_get(&menu->objs, menu->selected); (*tmp)->selected=0; // unselect the old component c->selected = 1; //select the new one menu->selected = i; }
int console_cmd_help(game_state *gs, int argc, char **argv) { // print list of commands vector sorted; iterator it; hashmap_pair *pair, **ppair; vector_create(&sorted, sizeof(hashmap_pair*)); hashmap_iter_begin(&con->cmds, &it); while((pair = iter_next(&it)) != NULL) { vector_append(&sorted, &pair); } vector_sort(&sorted, &sort_command_by_name); vector_iter_begin(&sorted, &it); while((ppair = iter_next(&it)) != NULL) { char *name = (*ppair)->key; command *cmd = (*ppair)->val; console_output_add(name); console_output_add(" - "); console_output_addline(cmd->doc); } vector_free(&sorted); return 0; }