Cleanups and minor refactoring in object_factory.cc/hh

This commit is contained in:
ROllerozxa 2026-06-05 16:24:41 +02:00
commit d14bf51465
3 changed files with 411 additions and 454 deletions

View file

@ -1681,8 +1681,6 @@ static int initial_loader(int step) {
// initialize worker threads
w_init();
of::init();
P.s_loading_screen->set_text("Loading materials...");
break;

View file

@ -148,31 +148,31 @@
#include "esub.hh"
#include "player_activator.hh"
static entity* new_plank(void){return new beam(BEAM_THICK);};
static entity* new_thinplank(void){return new beam(BEAM_THIN);};
static entity* new_robot(void){return new robot();};
static entity* new_shelf(void){return new shelf();};
static entity* new_xorgate(void){return new xorgate();};
static entity* new_orgate(void){return new orgate();};
static entity* new_plank() { return new beam(BEAM_THICK); }
static entity* new_thinplank() { return new beam(BEAM_THIN); }
static entity* new_robot() { return new robot(); }
static entity* new_shelf() { return new shelf(); }
static entity* new_xorgate() { return new xorgate(); }
static entity* new_orgate() { return new orgate(); }
static entity* new_andgate(void){return new andgate();};
static entity* new_invertergate(void){return new invertergate();};
static entity* new_integergate(void){return new integergate();};
static entity* new_ceilgate(void){return new ceilgate();};
static entity* new_squaregate(void){return new squaregate();};
static entity* new_sqrtgate(void){return new sqrtgate();};
static entity* new_ball_wood(void){return new ball(0);};
static entity* new_ball_iron(void){return new ball(1);};
static entity* new_generator(void){return new generator();};
static entity* new_powercable(void){return new cable(CABLE_BLACK);};
static entity* new_signalcable(void){return new cable(CABLE_RED);};
static entity* new_ifacecable(void){return new cable(CABLE_BLUE);};
static entity* new_wmotor(void){return new wmotor();};
static entity* new_gear(void){return new gear();};
static entity* new_trampoline(void){return new trampoline();};
static entity* new_debugger(void){return new tester();};
static entity* new_button(void){return new button(0);};
static entity* new_rope(void){return new rope();};
static entity* new_andgate() { return new andgate(); }
static entity* new_invertergate() { return new invertergate(); }
static entity* new_integergate() { return new integergate(); }
static entity* new_ceilgate() { return new ceilgate(); }
static entity* new_squaregate() { return new squaregate(); }
static entity* new_sqrtgate() { return new sqrtgate(); }
static entity* new_ball_wood() { return new ball(0); }
static entity* new_ball_iron() { return new ball(1); }
static entity* new_generator() { return new generator(); }
static entity* new_powercable() { return new cable(CABLE_BLACK); }
static entity* new_signalcable() { return new cable(CABLE_RED); }
static entity* new_ifacecable() { return new cable(CABLE_BLUE); }
static entity* new_wmotor() { return new wmotor(); }
static entity* new_gear() { return new gear(); }
static entity* new_trampoline() { return new trampoline(); }
static entity* new_debugger() { return new tester(); }
static entity* new_button() { return new button(0); }
static entity* new_rope() { return new rope(); }
static entity* new_sticky(void)
{
sticky *s = new sticky();
@ -183,214 +183,216 @@ static entity* new_sticky(void)
return static_cast<entity*>(s);
}
};
static entity* new_breadboard(void){return new breadboard();};
static entity* new_nandgate(void){return new nandgate();};
static entity* new_motor(void){return new motor(MOTOR_TYPE_DEFAULT);};
static entity* new_wheel(void){return new wheel();};
static entity* new_cup(void){return new cup();};
static entity* new_cylinder(void){return new cylinder(0);};
static entity* new_goal(void){return new goal();};
static entity* new_command(void){return new command();};
static entity* new_smallpanel(void){return new panel(PANEL_SMALL);};
static entity* new_xsmallpanel(void){return new panel(PANEL_XSMALL);};
static entity* new_mpanel(void){return new panel(PANEL_MEDIUM);};
static entity* new_bigpanel(void){return new panel(PANEL_BIG);};
static entity* new_sparsifier(void){return new sparsifier();};
static entity* new_besserwisser(void){return new besserwisser();};
static entity* new_magnet(void){return new magnet(0);};
static entity* new_electromagnet(void){return new magnet(1);};
static entity* new_railstraight(void){return new rail(RAIL_STRAIGHT);};
static entity* new_railskewed(void){return new rail(RAIL_SKEWED);};
static entity* new_railskewed2(void){return new rail(RAIL_SKEWED2);};
static entity* new_rail45deg(void){return new rail(RAIL_45DEG);};
static entity* new_servomotor(void){return new motor(MOTOR_TYPE_SERVO);};
static entity* new_simplemotor(void){return new motor(MOTOR_TYPE_SIMPLE);};
static entity* new_gyroscope(void){return new gyroscope();};
static entity* new_lmotor(void){return new lmotor(false);};
static entity* new_lsmotor(void){return new lmotor(true);};
static entity* new_magplug(void){return new magplug();};
static entity* new_magsock(void){return new magsock();};
static entity* new_switch(void){return new switcher();};
static entity* new_fifo(void){return new fifo();};
static entity* new_cavg(void){return new cavg();};
static entity* new_epsilon(void){return new epsilon();};
static entity* new_mavg(void){return new mavg();};
static entity* new_seesaw(void){return new seesaw();};
static entity* new_pivot(void){return new pivot_1();};
static entity* new_pivot2(void){return new pivot_2();};
static entity* new_ragdoll(void){return new ragdoll();};
static entity* new_clamp(void){return new clamp();};
static entity* new_toggler(void){return new toggler();};
static entity* new_pipeline(void){return new pipeline();};
static entity* new_splank(void){return new splank();};
static entity* new_interfaceclip(void){return new clip(CLIP_INTERFACE);};
static entity* new_signalclip(void){return new clip(CLIP_SIGNAL);};
static entity* new_gearbox(void){return new gearbox();};
static entity* new_ctrlmini(void){return new ctrlmini();};
static entity* new_ctrlservo(void){return new ctrlservo();};
static entity* new_ctrlfplus(void){return new ctrlfplus();};
static entity* new_battery3v(void){return new battery(BATTERY_3V);};
static entity* new_damper1(void){return new damper_1();};
static entity* new_damper2(void){return new damper_2();};
static entity* new_gameman(void){return new gameman();};
static entity* new_robotman(void){return new robotman();};
static entity* new_chunk(void){return 0;};
static entity* new_rubberbeam(void){return new beam(BEAM_RUBBER);};
static entity* new_corner(void){return new corner();};
static entity* new_scanner(void){return new scanner();};
static entity* new_tiltmeter(void){return new tiltmeter();};
static entity* new_thruster(void){return new rocket(0);};
static entity* new_rocket(void){return new rocket(1);};
static entity* new_proximitysensor(void){return new proximitysensor();};
static entity* new_ysplitter(void){return new ysplitter();};
static entity* new_valueshift(void){return new valueshift();};
static entity* new_togglebutton(void){return new button(1);};
static entity* new_ifgate(void){return new ifgate();};
static entity* new_idfield(void){return new objectfield(OBJECT_FIELD_ID);};
static entity* new_objectfield(void){return new objectfield(OBJECT_FIELD_OBJECT);};
static entity* new_target_setter(void){return new objectfield(OBJECT_FIELD_TARGET_SETTER);};
static entity* new_interactive_cylinder(void){return new cylinder(1);};
static entity* new_dragfield(void){return new dragfield();};
static entity* new_emitter(void){return new emitter(1);};
static entity* new_miniemitter(void){return new emitter(0);};
static entity* new_landmine(void){return new explosive(EXPLOSIVE_LANDMINE);};
static entity* new_bomb(void){return new explosive(EXPLOSIVE_BOMB);};
static entity* new_absorber(void){return new absorber(1);};
static entity* new_miniabsorber(void){return new absorber(0);};
static entity* new_timer(void){return new timer();};
static entity* new_conveyor(void){return new conveyor();};
static entity* new_plasticbeam(void){return new beam(BEAM_PLASTIC);};
static entity* new_woodbox(void){return new box(0);};
static entity* new_resistor(void){return new resistor();};
static entity* new_rubberband1(void){return new rubberband_1();};
static entity* new_rubberband2(void){return new rubberband_2();};
static entity* new_angulardamper(void){return new angulardamper();};
static entity* new_object_finder(void){return new object_finder();};
static entity* new_sincos(void){return new esincos();};
static entity* new_sinewave(void){return new sinewave();};
static entity* new_erandom(void){return new erandom();};
static entity* new_memory(void){return new memory();};
static entity* new_impact_sensor(void){return new impact_sensor(false);};
static entity* new_pressure_sensor(void){return new impact_sensor(true);};
static entity* new_gravity_manager(void){return new gravityman(GRAVITY_MANAGER);};
static entity* new_gravity_setter(void){return new gravityman(GRAVITY_SETTER);};
static entity* new_sawtooth(void){return new sawtooth();};
static entity* new_jumper(void){return new jumper();};
static entity* new_ibox(void){return new box(1);};
static entity* new_pbox(void){return new box(2);};
static entity* new_iball(void){return new ball(2);};
static entity* new_halfunpack(void){return new halfunpack();};
static entity* new_halfpack(void){return new halfpack();};
static entity* new_eatan2(void){return new eatan2();};
static entity* new_pointer(void){return new pointer();};
static entity* new_spikes(void){return new spikes();};
static entity* new_sum(void){return new sum();};
static entity* new_avg(void){return new avg();};
static entity* new_muladd(void){return new muladd();};
static entity* new_screenshot_marker(void){return new screenshot_marker();};
static entity* new_pixel(void){return new pixel();};
static entity* new_tpixel(void){return new tpixel();};
static entity* new_transmitter(void){return new transmitter(0);};
static entity* new_receiver(void) { return new receiver(); };
static entity* new_broadcaster(void){return new transmitter(1);};
static entity* new_fan(void){return new fan();};
static entity* new_min(void){return new emin();};
static entity* new_max(void){return new emax();};
static entity* new_backpack(void){return new backpack();};
static entity* new_stabilizer(void){return new estabilizer();};
static entity* new_pkgwarp(void){return new pkgwarp();};
static entity* new_pkgstatus(void){return new pkgstatus();};
static entity* new_camtargeter(void){return new camtargeter();};
static entity* new_condenser(void){return new condenser();};
static entity* new_fxemitter(void){return new fxemitter();};
static entity* new_emul(void){return new emul();};
static entity* new_esub(void){return new esub();};
static entity* new_minitransmitter(void){return new mini_transmitter();};
static entity* new_checkpoint(void){return new checkpoint();};
static entity* new_spikebot(void){return new spikebot();};
static entity* new_mini_spikebot(void){return new mini_spikebot();};
static entity* new_minibot(void){return new minibot();};
static entity* new_companion(void){return new companion();};
static entity* new_bomber(void){return new bomber();};
static entity* new_lobber(void){return new lobber();};
static entity* new_hpcontrol(void){return new hp_control();};
static entity* new_laser(void){entity *e = new scanner(); e->set_property(0, 1.f); return e;};
static entity* new_multiemitter(void){return new emitter(2);};
static entity* new_angularvelmeter(void){return new angularvelmeter();};
static entity* new_mirror(void){return new mirror();};
static entity* new_lasersensor(void){return new laser_sensor();};
static entity* new_velmeter(void){return new velmeter();};
static entity* new_wrapadd(void){return new wrapadd();};
static entity* new_wrapsub(void){return new wrapsub();};
static entity* new_wrapdist(void){return new ewrapdist();};
static entity* new_eventlistener(void){return new eventlistener();};
static entity* new_passive_display(void){return new passive_display();};
static entity* new_rcactivator(void){return new rcactivator();};
static entity* new_cursor_finder(void){return new cursor_finder();};
static entity* new_autoabsorber(void){return new autoabsorber();};
static entity* new_weight(void){return new weight();};
static entity* new_decay(void){return new decay();};
static entity* new_zoomer(void){return new zoomer();};
static entity* new_timectrl(void){return new timectrl();};
static entity* new_prompt(void){return new prompt();};
static entity* new_graph(void){return new egraph();};
static entity* new_wrapcondenser(void){return new wrapcondenser();};
static entity* new_ifelse(void){return new ifelse();};
static entity* new_sfxemitter(void)
{
if (W->level.version < LEVEL_VERSION_1_5_1) {
static entity* new_breadboard() { return new breadboard(); }
static entity* new_nandgate() { return new nandgate(); }
static entity* new_motor() { return new motor(MOTOR_TYPE_DEFAULT); }
static entity* new_wheel() { return new wheel(); }
static entity* new_cup() { return new cup(); }
static entity* new_cylinder() { return new cylinder(0); }
static entity* new_goal() { return new goal(); }
static entity* new_command() { return new command(); }
static entity* new_smallpanel() { return new panel(PANEL_SMALL); }
static entity* new_xsmallpanel() { return new panel(PANEL_XSMALL); }
static entity* new_mpanel() { return new panel(PANEL_MEDIUM); }
static entity* new_bigpanel() { return new panel(PANEL_BIG); }
static entity* new_sparsifier() { return new sparsifier(); }
static entity* new_besserwisser() { return new besserwisser(); }
static entity* new_magnet() { return new magnet(0); }
static entity* new_electromagnet() { return new magnet(1); }
static entity* new_railstraight() { return new rail(RAIL_STRAIGHT); }
static entity* new_railskewed() { return new rail(RAIL_SKEWED); }
static entity* new_railskewed2() { return new rail(RAIL_SKEWED2); }
static entity* new_rail45deg() { return new rail(RAIL_45DEG); }
static entity* new_servomotor() { return new motor(MOTOR_TYPE_SERVO); }
static entity* new_simplemotor() { return new motor(MOTOR_TYPE_SIMPLE); }
static entity* new_gyroscope() { return new gyroscope(); }
static entity* new_lmotor() { return new lmotor(false); }
static entity* new_lsmotor() { return new lmotor(true); }
static entity* new_magplug() { return new magplug(); }
static entity* new_magsock() { return new magsock(); }
static entity* new_switch() { return new switcher(); }
static entity* new_fifo() { return new fifo(); }
static entity* new_cavg() { return new cavg(); }
static entity* new_epsilon() { return new epsilon(); }
static entity* new_mavg() { return new mavg(); }
static entity* new_seesaw() { return new seesaw(); }
static entity* new_pivot() { return new pivot_1(); }
static entity* new_pivot2() { return new pivot_2(); }
static entity* new_ragdoll() { return new ragdoll(); }
static entity* new_clamp() { return new clamp(); }
static entity* new_toggler() { return new toggler(); }
static entity* new_pipeline() { return new pipeline(); }
static entity* new_splank() { return new splank(); }
static entity* new_interfaceclip() { return new clip(CLIP_INTERFACE); }
static entity* new_signalclip() { return new clip(CLIP_SIGNAL); }
static entity* new_gearbox() { return new gearbox(); }
static entity* new_ctrlmini() { return new ctrlmini(); }
static entity* new_ctrlservo() { return new ctrlservo(); }
static entity* new_ctrlfplus() { return new ctrlfplus(); }
static entity* new_battery3v() { return new battery(BATTERY_3V); }
static entity* new_damper1() { return new damper_1(); }
static entity* new_damper2() { return new damper_2(); }
static entity* new_gameman() { return new gameman(); }
static entity* new_robotman() { return new robotman(); }
static entity* new_chunk() { return 0; }
static entity* new_rubberbeam() { return new beam(BEAM_RUBBER); }
static entity* new_corner() { return new corner(); }
static entity* new_scanner() { return new scanner(); }
static entity* new_tiltmeter() { return new tiltmeter(); }
static entity* new_thruster() { return new rocket(0); }
static entity* new_rocket() { return new rocket(1); }
static entity* new_proximitysensor() { return new proximitysensor(); }
static entity* new_ysplitter() { return new ysplitter(); }
static entity* new_valueshift() { return new valueshift(); }
static entity* new_togglebutton() { return new button(1); }
static entity* new_ifgate() { return new ifgate(); }
static entity* new_idfield() { return new objectfield(OBJECT_FIELD_ID); }
static entity* new_objectfield() { return new objectfield(OBJECT_FIELD_OBJECT); }
static entity* new_target_setter() { return new objectfield(OBJECT_FIELD_TARGET_SETTER); }
static entity* new_interactive_cylinder() { return new cylinder(1); }
static entity* new_dragfield() { return new dragfield(); }
static entity* new_emitter() { return new emitter(1); }
static entity* new_miniemitter() { return new emitter(0); }
static entity* new_landmine() { return new explosive(EXPLOSIVE_LANDMINE); }
static entity* new_bomb() { return new explosive(EXPLOSIVE_BOMB); }
static entity* new_absorber() { return new absorber(1); }
static entity* new_miniabsorber() { return new absorber(0); }
static entity* new_timer() { return new timer(); }
static entity* new_conveyor() { return new conveyor(); }
static entity* new_plasticbeam() { return new beam(BEAM_PLASTIC); }
static entity* new_woodbox() { return new box(0); }
static entity* new_resistor() { return new resistor(); }
static entity* new_rubberband1() { return new rubberband_1(); }
static entity* new_rubberband2() { return new rubberband_2(); }
static entity* new_angulardamper() { return new angulardamper(); }
static entity* new_object_finder() { return new object_finder(); }
static entity* new_sincos() { return new esincos(); }
static entity* new_sinewave() { return new sinewave(); }
static entity* new_erandom() { return new erandom(); }
static entity* new_memory() { return new memory(); }
static entity* new_impact_sensor() { return new impact_sensor(false); }
static entity* new_pressure_sensor() { return new impact_sensor(true); }
static entity* new_gravity_manager() { return new gravityman(GRAVITY_MANAGER); }
static entity* new_gravity_setter() { return new gravityman(GRAVITY_SETTER); }
static entity* new_sawtooth() { return new sawtooth(); }
static entity* new_jumper() { return new jumper(); }
static entity* new_ibox() { return new box(1); }
static entity* new_pbox() { return new box(2); }
static entity* new_iball() { return new ball(2); }
static entity* new_halfunpack() { return new halfunpack(); }
static entity* new_halfpack() { return new halfpack(); }
static entity* new_eatan2() { return new eatan2(); }
static entity* new_pointer() { return new pointer(); }
static entity* new_spikes() { return new spikes(); }
static entity* new_sum() { return new sum(); }
static entity* new_avg() { return new avg(); }
static entity* new_muladd() { return new muladd(); }
static entity* new_screenshot_marker() { return new screenshot_marker(); }
static entity* new_pixel() { return new pixel(); }
static entity* new_tpixel() { return new tpixel(); }
static entity* new_transmitter() { return new transmitter(0); }
static entity* new_receiver() { return new receiver(); }
static entity* new_broadcaster() { return new transmitter(1); }
static entity* new_fan() { return new fan(); }
static entity* new_min() { return new emin(); }
static entity* new_max() { return new emax(); }
static entity* new_backpack() { return new backpack(); }
static entity* new_stabilizer() { return new estabilizer(); }
static entity* new_pkgwarp() { return new pkgwarp(); }
static entity* new_pkgstatus() { return new pkgstatus(); }
static entity* new_camtargeter() { return new camtargeter(); }
static entity* new_condenser() { return new condenser(); }
static entity* new_fxemitter() { return new fxemitter(); }
static entity* new_emul() { return new emul(); }
static entity* new_esub() { return new esub(); }
static entity* new_minitransmitter() { return new mini_transmitter(); }
static entity* new_checkpoint() { return new checkpoint(); }
static entity* new_spikebot() { return new spikebot(); }
static entity* new_mini_spikebot() { return new mini_spikebot(); }
static entity* new_minibot() { return new minibot(); }
static entity* new_companion() { return new companion(); }
static entity* new_bomber() { return new bomber(); }
static entity* new_lobber() { return new lobber(); }
static entity* new_hpcontrol() { return new hp_control(); }
static entity* new_laser() {
entity *e = new scanner();
e->set_property(0, 1.f);
return e;
}
static entity* new_multiemitter() { return new emitter(2); }
static entity* new_angularvelmeter() { return new angularvelmeter(); }
static entity* new_mirror() { return new mirror(); }
static entity* new_lasersensor() { return new laser_sensor(); }
static entity* new_velmeter() { return new velmeter(); }
static entity* new_wrapadd() { return new wrapadd(); }
static entity* new_wrapsub() { return new wrapsub(); }
static entity* new_wrapdist() { return new ewrapdist(); }
static entity* new_eventlistener() { return new eventlistener(); }
static entity* new_passive_display() { return new passive_display(); }
static entity* new_rcactivator() { return new rcactivator(); }
static entity* new_cursor_finder() { return new cursor_finder(); }
static entity* new_autoabsorber() { return new autoabsorber(); }
static entity* new_weight() { return new weight(); }
static entity* new_decay() { return new decay(); }
static entity* new_zoomer() { return new zoomer(); }
static entity* new_timectrl() { return new timectrl(); }
static entity* new_prompt() { return new prompt(); }
static entity* new_graph() { return new egraph(); }
static entity* new_wrapcondenser() { return new wrapcondenser(); }
static entity* new_ifelse() { return new ifelse(); }
static entity* new_sfxemitter() {
if (W->level.version < LEVEL_VERSION_1_5_1)
return new sfxemitter();
} else {
else
return new sfxemitter_2();
}
};
static entity* new_cmpe(void){return new cmpe();};
static entity* new_cmpl(void){return new cmpl();};
static entity* new_cmple(void){return new cmple();};
static entity* new_speaker(void){return new speaker();};
static entity* new_snap(void){return new snapgate();};
static entity* new_var_getter(void){return new var_getter();};
static entity* new_var_setter(void){return new var_setter();};
static entity* new_sequencer(void){return new sequencer();};
static entity* new_shape_extruder(void){return new shape_extruder();};
static entity* new_cursorfield(void){return new cursorfield();};
static entity* new_escript(void){return new escript();};
static entity* new_ldecay(void){return new ldecay();};
static entity* new_elimit(void){return new elimit();};
static entity* new_item(void){return new item();};
static entity* new_oilrig(void){return new oilrig();};
static entity* new_factory(void){return new factory(FACTORY_GENERIC);};
static entity* new_crane(void){return new crane();};
static entity* new_fluid(void){return new fluid();};
static entity* new_localgravity(void){return new localgravity();};
static entity* new_autoprotector(void){return new autoprotector();};
static entity* new_active_display(void){return new active_display();};
static entity* new_boundary(void){return new boundary();};
static entity* new_suction_cup(void){return new scup();};
static entity* new_robot_factory(void){return new factory(FACTORY_ROBOT);};
static entity* new_armory(void){return new factory(FACTORY_ARMORY);};
static entity* new_separator(void){return new beam(BEAM_SEP);};
static entity* new_room(void){return new room();};
static entity* new_oil_mixer(void){return new factory(FACTORY_OIL_MIXER);};
static entity* new_repair_station(void){return new repair_station();};
static entity* new_guardpoint(void){return new anchor(ANCHOR_GUARDPOINT);};
static entity* new_ladder(void){return new ladder();};
static entity* new_resource(void){return new resource();};
static entity* new_plant(void){return new plant();};
static entity* new_vendor(void){return new vendor();};
static entity* new_animal(void){return new animal(ANIMAL_TYPE_COW);};
static entity* new_soundman(void){return new soundman();};
static entity* new_player_activator(void){return new player_activator();};
static entity* new_plastic_polygon(void){return new polygon(MATERIAL_PLASTIC);};
static entity* new_key_listener(void){return new key_listener();};
static entity* new_statesaver(void){return new statesaver();};
static entity* new_ifselect(void){return new ifselect();};
static entity* new_camera_rotator(void){return new camera_rotator();};
static entity* new_level_manager(void){return new levelman();};
static entity* new_treasure_chest(void){return new treasure_chest();};
static entity* new_decoration(void){return new decoration();};
static entity* new_megasplitter(void){return new megasplitter();};
static entity* new_ladder_step(void){return new ladder_step();};
static entity* new_cmpe() { return new cmpe(); }
static entity* new_cmpl() { return new cmpl(); }
static entity* new_cmple() { return new cmple(); }
static entity* new_speaker() { return new speaker(); }
static entity* new_snap() { return new snapgate(); }
static entity* new_var_getter() { return new var_getter(); }
static entity* new_var_setter() { return new var_setter(); }
static entity* new_sequencer() { return new sequencer(); }
static entity* new_shape_extruder() { return new shape_extruder(); }
static entity* new_cursorfield() { return new cursorfield(); }
static entity* new_escript() { return new escript(); }
static entity* new_ldecay() { return new ldecay(); }
static entity* new_elimit() { return new elimit(); }
static entity* new_item() { return new item(); }
static entity* new_oilrig() { return new oilrig(); }
static entity* new_factory() { return new factory(FACTORY_GENERIC); }
static entity* new_crane() { return new crane(); }
static entity* new_fluid() { return new fluid(); }
static entity* new_localgravity() { return new localgravity(); }
static entity* new_autoprotector() { return new autoprotector(); }
static entity* new_active_display() { return new active_display(); }
static entity* new_boundary() { return new boundary(); }
static entity* new_suction_cup() { return new scup(); }
static entity* new_robot_factory() { return new factory(FACTORY_ROBOT); }
static entity* new_armory() { return new factory(FACTORY_ARMORY); }
static entity* new_separator() { return new beam(BEAM_SEP); }
static entity* new_room() { return new room(); }
static entity* new_oil_mixer() { return new factory(FACTORY_OIL_MIXER); }
static entity* new_repair_station() { return new repair_station(); }
static entity* new_guardpoint() { return new anchor(ANCHOR_GUARDPOINT); }
static entity* new_ladder() { return new ladder(); }
static entity* new_resource() { return new resource(); }
static entity* new_plant() { return new plant(); }
static entity* new_vendor() { return new vendor(); }
static entity* new_animal() { return new animal(ANIMAL_TYPE_COW); }
static entity* new_soundman() { return new soundman(); }
static entity* new_player_activator() { return new player_activator(); }
static entity* new_plastic_polygon() { return new polygon(MATERIAL_PLASTIC); }
static entity* new_key_listener() { return new key_listener(); }
static entity* new_statesaver() { return new statesaver(); }
static entity* new_ifselect() { return new ifselect(); }
static entity* new_camera_rotator() { return new camera_rotator(); }
static entity* new_level_manager() { return new levelman(); }
static entity* new_treasure_chest() { return new treasure_chest(); }
static entity* new_decoration() { return new decoration(); }
static entity* new_megasplitter() { return new megasplitter(); }
static entity* new_ladder_step() { return new ladder_step(); }
uint32_t of::_id = 1;
@ -931,53 +933,36 @@ static int *ids[] = {
c0_ids, c1_ids, c2_ids, c3_ids, c4_ids, c5_ids, c6_ids,c7_ids,c8_ids,c9_ids
};
void
of::init(void)
{
}
int of::get_gid(int category, int child)
{
int of::get_gid(int category, int child) {
/* TODO: bounds check */
return ids[category][child];
}
int of::get_num_objects(int cat)
{
int of::get_num_objects(int cat) {
return num_objects[cat];
}
const char *
of::get_category_name(int x)
{
const char *of::get_category_name(int x) {
return categories[x];
}
const char *
of::get_category_hint(int x)
{
const char *of::get_category_hint(int x) {
return category_hints[x];
}
static entity*
_create(p_gid id)
{
static entity *_create(p_gid id) {
entity *e = 0;
if (id < num_creators)
e = ((*c_creator[id]))();
if (e) {
if (e)
e->g_id = id;
}
return e;
}
item *
of::create_item(uint32_t item_id)
{
item *of::create_item(uint32_t item_id) {
item *e = static_cast<item*>(_create(O_ITEM));
if (e) {
e->id = of::get_next_id();
@ -987,21 +972,16 @@ of::create_item(uint32_t item_id)
return e;
}
entity*
of::create(p_gid g_id)
{
entity *of::create(p_gid g_id) {
entity *e = _create(g_id);
if (e) {
if (e)
e->id = of::get_next_id();
}
return e;
}
entity*
of::create_with_id(p_gid g_id, p_id id)
{
entity *of::create_with_id(p_gid g_id, p_id id) {
entity *e = _create(g_id);
if (e) {
@ -1015,9 +995,7 @@ of::create_with_id(p_gid g_id, p_id id)
* lvledit::print_gids()
* and
* chunk_preloader::preload_entity() */
entity*
of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement, std::vector<chunk_pos> *affected_chunks)
{
entity *of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement, std::vector<chunk_pos> *affected_chunks) {
entity *e;
p_gid g_id;
uint8_t np, nc;
@ -1037,7 +1015,11 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
e = of::create_with_id(g_id, id);
if (e) {
if (!e) {
tms_errorf("invalid object: %d", g_id);
return 0;
}
np = lb->r_uint8();
if (version >= LEVEL_VERSION_1_5) {
@ -1090,10 +1072,9 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
}
/* if we have a pointer to an "affected chunks" vector, insert info there */
if (affected_chunks) {
if (affected_chunks)
affected_chunks->push_back(chunk_pos(cx, cy));
}
}
e->state_size = state_size;
e->state_ptr = lb->rp;
@ -1101,12 +1082,11 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
} else {
e->set_flag(ENTITY_AXIS_ROT, (bool)lb->r_uint8());
if (version >= 10) {
if (version >= 10)
e->set_moveable((bool)lb->r_uint8());
} else {
else
e->set_moveable(true);
}
}
for (int x=0; x<np; x++) {
uint8_t type = lb->r_uint8();
@ -1118,18 +1098,15 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
case P_INT: lb->r_uint32(); break;
case P_ID: lb->r_uint32(); break;
case P_FLT: lb->r_float(); break;
case P_STR:
{
case P_STR: {
uint32_t len;
if (version >= LEVEL_VERSION_1_5) {
if (version >= LEVEL_VERSION_1_5)
len = lb->r_uint32();
} else {
else
len = lb->r_uint16();
}
lb->rp += len;
}
break;
} break;
}
continue;
}
@ -1162,8 +1139,7 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
case P_INT: lb->r_uint32(); break;
case P_ID: lb->r_uint32(); break;
case P_FLT: lb->r_float(); break;
case P_STR:
{
case P_STR: {
uint32_t len = 0;
if (version >= LEVEL_VERSION_1_5) {
len = lb->r_uint32();
@ -1173,8 +1149,7 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
char *buf = (char*)malloc(len);
lb->r_buf(buf, len);
free(buf);
}
break;
} break;
default: tms_fatalf("invalid object property %d", type);
}
/* TODO: Should it gracefully quit? This should be an error
@ -1193,11 +1168,11 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
//case P_ID: p->v.i = lb->r_uint32(); break;
case P_FLT: p->v.f = lb->r_float(); break;
case P_STR:
if (version >= LEVEL_VERSION_1_5) {
if (version >= LEVEL_VERSION_1_5)
p->v.s.len = lb->r_uint32();
} else {
else
p->v.s.len = lb->r_uint16();
}
p->v.s.buf = (char*)malloc(p->v.s.len+1);
lb->r_buf(p->v.s.buf, p->v.s.len);
p->v.s.buf[p->v.s.len] = '\0';
@ -1208,16 +1183,11 @@ of::read(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement,
}
}
}
} else {
tms_errorf("invalid object: %d", g_id);
}
return e;
}
group *
of::read_group(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement)
{
group *of::read_group(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displacement) {
/* XXX keep in sync with chunk_preload::read_group() */
group *g = new group();
@ -1237,9 +1207,7 @@ of::read_group(lvlbuf *lb, uint8_t version, uint32_t id_modifier, b2Vec2 displac
return g;
}
void
of::write_group(lvlbuf *lb, uint8_t version, group *e, uint32_t id_modifier, b2Vec2 displacement, bool write_states/*=false*/)
{
void of::write_group(lvlbuf *lb, uint8_t version, group *e, uint32_t id_modifier, b2Vec2 displacement, bool write_states/*=false*/) {
lb->ensure(
4 /* id */
+4 /* pos x */
@ -1280,9 +1248,7 @@ of::write_group(lvlbuf *lb, uint8_t version, group *e, uint32_t id_modifier, b2V
e->write_size = lb->size - e->write_ptr;
}
void
of::write(lvlbuf *lb, uint8_t version, entity *e, uint32_t id_modifier, b2Vec2 displacement, bool write_states/*=false*/)
{
void of::write(lvlbuf *lb, uint8_t version, entity *e, uint32_t id_modifier, b2Vec2 displacement, bool write_states/*=false*/) {
e->write_ptr = lb->size;
/* XXX GID XXX */
@ -1369,10 +1335,9 @@ of::write(lvlbuf *lb, uint8_t version, entity *e, uint32_t id_modifier, b2Vec2 d
} else {
lb->w_uint8((uint8_t)e->flag_active(ENTITY_AXIS_ROT));
if (version >= 10) {
if (version >= 10)
lb->w_uint8((uint8_t)e->is_moveable());
}
}
for (int x=0; x<e->num_properties; x++) {
property *p = &e->properties[x];
@ -1403,15 +1368,11 @@ of::write(lvlbuf *lb, uint8_t version, entity *e, uint32_t id_modifier, b2Vec2 d
e->write_size = lb->size - e->write_ptr;
}
uint32_t
of::get_next_id(void)
{
uint32_t of::get_next_id() {
return of::_id++;
}
const char *
of::get_object_name_by_gid(uint32_t gid)
{
const char *of::get_object_name_by_gid(uint32_t gid) {
// ~~oh dear I think this is hacky~~
// The old implementation would read from object help text data, but since that
// is gone now, this was the best I could come up with. This method is basically
@ -1421,7 +1382,6 @@ of::get_object_name_by_gid(uint32_t gid)
const char* obj_name = obj->get_name();
delete obj;
return obj_name;
} else {
} else
return "Nonexistant object";
}
}

View file

@ -245,7 +245,8 @@ class group;
class of
{
public:
static uint32_t _id; /* global entity id counter */
/// global entity id counter
static uint32_t _id;
static const int num_categories = 10;
@ -259,8 +260,6 @@ class of
static item *create_item(uint32_t item_id);
static entity *create_with_id(p_gid g_id, uint32_t id);
static void init(void);
static entity* read(lvlbuf *lb, uint8_t version, uint32_t id_modifier=0, b2Vec2 displacement=b2Vec2(0.f,0.f), std::vector<chunk_pos> *affected_chunks=0);
static void write(lvlbuf *lb, uint8_t version, entity *e, uint32_t id_modifier=0, b2Vec2 displacement=b2Vec2(0.f,0.f), bool write_states=false);
@ -268,5 +267,5 @@ class of
static void write_group(lvlbuf *lb, uint8_t version, group *e, uint32_t id_modifier=0, b2Vec2 displacement=b2Vec2(0.f,0.f), bool write_states=false);
static int get_gid(int category, int child);
static uint32_t get_next_id(void);
static uint32_t get_next_id();
};