Simulation Flow =============== 0. Subsim { // PREPARE get all events; // all in the queue time_scale, delta_time; // why? // SIMULATE for 1 to time_scale: // why? simulate game; // with delta_time process events; // generated by simulation process input (ui); // SDL events (shouldn't be before sim?) // FINALIZE set time; // reseting clock? display; // screens get FPS; // debug only } 1. Game { // PREPARE !is_running ? die; clear old events; // mouse, keyboard run jobs; // jobs?! !is_alive? die; // killed last cycle check other objects; // only you left? get max distance; // draw objects check trail; // using timed simulation!!! // SIMULATE simulate ships; // call simulate sea_object simulate subs; // call simulate ship simulate planes; // uselescall simulate ship simulate torps; // call simulate ship simulate charges; // call simulate sea_object (why?) simulate shells; // call simulate sea_object (why?) simulate splashes; // call simulate sea_object (why?) simulate convoys; // have global_velocity, weird! simulate particles; // low-level physics (remove!) // FINALIZE remove old pings; // pings?! check enemy contact; // remove later } 2. SeaObject { }