From df5d4196e7175b1c2a318e94d9310d6b5bc105d3 Mon Sep 17 00:00:00 2001 From: zico Date: Sat, 3 Aug 2013 12:53:56 +0200 Subject: [PATCH] When converting object_rw to object, recompute gun points for CT_CNTRLCEN as they are now part of object and not globals anymore --- main/cntrlcen.h | 1 + main/multi.c | 9 +++++++++ main/state.c | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/main/cntrlcen.h b/main/cntrlcen.h index 63ecb50f1..597f61f04 100644 --- a/main/cntrlcen.h +++ b/main/cntrlcen.h @@ -75,6 +75,7 @@ extern void do_controlcen_frame(object *obj); // Initialize control center for a level. // Call when a new level is started. extern void init_controlcen_for_level(void); +extern void calc_controlcen_gun_point(reactor *reactor, object *obj,int gun_num); extern void do_controlcen_destroyed_stuff(object *objp); extern void do_controlcen_dead_frame(void); diff --git a/main/multi.c b/main/multi.c index d2bce4f1d..f1a506827 100644 --- a/main/multi.c +++ b/main/multi.c @@ -4086,6 +4086,15 @@ void multi_object_rw_to_object(object_rw *obj_rw, object *obj) case CT_POWERUP: obj->ctype.powerup_info.count = obj_rw->ctype.powerup_info.count; break; + case CT_CNTRLCEN: + { + // gun points of reactor now part of the object but of course not saved in object_rw. Let's just recompute them. + int i = 0; + reactor *reactor = get_reactor_definition(obj->id); + for (i=0; in_guns; i++) + calc_controlcen_gun_point(reactor, obj, i); + break; + } } switch (obj->render_type) diff --git a/main/state.c b/main/state.c index f0ec8850f..8a96a1e16 100644 --- a/main/state.c +++ b/main/state.c @@ -359,6 +359,15 @@ void state_object_rw_to_object(object_rw *obj_rw, object *obj) case CT_POWERUP: obj->ctype.powerup_info.count = obj_rw->ctype.powerup_info.count; break; + case CT_CNTRLCEN: + { + // gun points of reactor now part of the object but of course not saved in object_rw and overwritten due to reset_objects(). Let's just recompute them. + int i = 0; + reactor *reactor = get_reactor_definition(obj->id); + for (i=0; in_guns; i++) + calc_controlcen_gun_point(reactor, obj, i); + break; + } } switch (obj->render_type)