$BG,14$ $SP,"<1>",1$ $SP,"<2>",2$ $SP,"<3>",3$ $SP,"<4>",4$ $BG$ F64 t0,xx,t_last; Bool held_up; #define HACK_PERIOD 0.25 #define SPACING 45 U0 DrawBattle(CTask *task,CDC *dc) { I64 cx=task->win_pixel_width>>1, cy=task->win_pixel_height>>1; U8 *inter; F64 tt; if (held_up) tt=0; else { tt=(tP(task)-t0)/2; tt*=tt; tt*=tt; if (tt>1.0) tt=1.0; } inter=CSpriteInterpolate($IB,"<3>",3$,$IB,"<4>",4$,tt); CSpritePlot3(dc,cx,cy+SPACING,0,inter); Free(inter); if (t_last) { if (tt<0.5) xx-=50.0*(tP(task)-t_last); else xx+=50.0*(tP(task)-t_last); } tt=Saw(tP(task)+0.0*HACK_PERIOD,HACK_PERIOD); tt*=2; if (tt>1.0) tt=2.0-tt; inter=CSpriteInterpolate($IB,"<1>",1$,$IB,"<2>",2$,tt); CSpritePlot3(dc,xx+cx+SPACING,cy-SPACING,0,inter); Free(inter); tt=Saw(tP(task)+0.333*HACK_PERIOD,HACK_PERIOD); tt*=2; if (tt>1.0) tt=2.0-tt; inter=CSpriteInterpolate($IB,"<1>",1$,$IB,"<2>",2$,tt); CSpritePlot3(dc,xx+cx+2*SPACING,cy-SPACING,0,inter); Free(inter); tt=Saw(tP(task)+0.666*HACK_PERIOD,HACK_PERIOD); tt*=2; if (tt>1.0) tt=2.0-tt; inter=CSpriteInterpolate($IB,"<1>",1$,$IB,"<2>",2$,tt); CSpritePlot3(dc,xx+cx+SPACING,cy-2*SPACING,0,inter); Free(inter); t_last=tP(task); } U0 Battle() { I64 msg_code,ch,sc; SettingsPush(Fs,TSF_SAME_SONG); //See $LK,"SettingsPush","MN:SettingsPush"$ try { DocClear; "$$BG,YELLOW$$"; PutBibleVerse("Exodus,17:11",8); "\n$$BK,1$$Hold $$BK,0$$\n"; held_up=FALSE; t0=tP; t_last=0; xx=0; Fs->draw_it=&DrawBattle; do { msg_code=GetMsg(&ch,&sc,1<