static bool flow (struct anim *k) { if (k->oaction != kid_start_run) k->i = -1, k->misstep = false; bool run = (k->f.dir == RIGHT) ? k->key.right : k->key.left; bool turn_run = (k->f.dir == RIGHT) ? k->key.left : k->key.right; bool couch = k->key.down; bool jump = ((k->f.dir == RIGHT) && k->key.right && k->key.up) || ((k->f.dir == LEFT) && k->key.left && k->key.up); if (couch) { kid_couch (k); return false; } if (jump && k->i < 3) { kid_jump (k); return false; } if ((k->i == 3 || k->i == 4) && turn_run) { kid_stop_run (k); return false; } if (k->i == 5) { if (run) kid_run (k); else kid_stop_run (k); return false; } select_frame (k, kid_start_run_frameset, k->i + 1); if (k->f.b == kid_turn_frameset[3].frame) k->fo.dx = +0; if (k->f.b == kid_stabilize_frameset[0].frame) k->fo.dx = +2; if (k->f.b == kid_stabilize_frameset[1].frame) k->fo.dx = +6; if (k->f.b == kid_stabilize_frameset[2].frame) k->fo.dx = +4; if (k->f.b == kid_stabilize_frameset[3].frame) k->fo.dx = +0; return true; }
static bool flow (struct anim *k) { if (k->oaction != kid_run) k->i = -1; bool stop = ! ((k->f.dir == RIGHT) ? k->key.right : k->key.left); bool couch = k->key.down; bool jump = ((k->f.dir == RIGHT) && k->key.right && k->key.up) || ((k->f.dir == LEFT) && k->key.left && k->key.up); if (couch) { kid_couch (k); return false; } if (jump && k->f.b != kid_run_jump_frameset[10].frame) { kid_run_jump (k); return false; } if ((stop && k->f.b != kid_run_jump_frameset[10].frame)) { kid_stop_run (k); return false; } if (k->i == 7) k->i = -1; if (k->f.b == kid_turn_run_frameset[8].frame) k->i = 6; select_frame (k, kid_run_frameset, k->i + 1); if (k->f.b == kid_start_run_frameset[5].frame) k->fo.dx = -6; if (k->f.b == kid_turn_run_frameset[8].frame) k->fo.dx = -4; if (k->f.b == kid_run_jump_frameset[10].frame) k->fo.dx = -15; return true; }