Pass object to init_player_object

This commit is contained in:
Kp 2022-06-05 17:44:52 +00:00
parent 9f207daf95
commit 6e2ed26659
4 changed files with 13 additions and 15 deletions

View file

@ -16,6 +16,7 @@
#include "fwd-segment.h"
#include "fwd-window.h"
#include "fwd-valptridx.h"
#include "polyobj.h"
#include <array>
struct bitmap_index;
@ -219,7 +220,7 @@ window_event_result endlevel_move_all_objects();
void object_goto_next_viewer();
// make object0 the player, setting all relevant fields
void init_player_object();
void init_player_object(const d_level_shared_polygon_model_state &LevelSharedPolygonModelState, object_base &console);
// check if object is in object->segnum. if not, check the adjacent
// segs. if not any of these, returns false, else sets obj->segnum &

View file

@ -206,7 +206,7 @@ static inline void editor_slew_init()
auto &vmobjptr = Objects.vmptr;
Viewer = ConsoleObject;
slew_init(vmobjptr(ConsoleObject));
init_player_object();
init_player_object(LevelSharedPolygonModelState, *ConsoleObject);
}
int DropIntoDebugger()

View file

@ -335,7 +335,7 @@ static void verify_object(const d_vclip_array &Vclip, object &obj, const savegam
//Assert(obj == Player);
if (&obj == ConsoleObject)
init_player_object();
init_player_object(LevelSharedPolygonModelState, obj);
else
if (obj.render_type == RT_POLYOBJ) //recover from Matt's pof file matchup bug
obj.rtype.pobj_info.model_num = Player_ship->model_num;

View file

@ -867,20 +867,17 @@ void reset_player_object(object_base &ConsoleObject)
}
//make object0 the player, setting all relevant fields
void init_player_object()
void init_player_object(const d_level_shared_polygon_model_state &LevelSharedPolygonModelState, object_base &console)
{
auto &Objects = LevelUniqueObjectState.Objects;
auto &vmobjptr = Objects.vmptr;
const auto &&console = vmobjptr(ConsoleObject);
console->type = OBJ_PLAYER;
console.type = OBJ_PLAYER;
set_player_id(console, 0); //no sub-types for player
console->signature = object_signature_t{0};
console.signature = object_signature_t{0};
auto &Polygon_models = LevelSharedPolygonModelState.Polygon_models;
console->size = Polygon_models[Player_ship->model_num].rad;
console->control_source = object::control_type::slew; //default is player slewing
console->movement_source = object::movement_type::physics; //change this sometime
console->lifeleft = IMMORTAL_TIME;
console->attached_obj = object_none;
console.size = Polygon_models[Player_ship->model_num].rad;
console.control_source = object::control_type::slew; //default is player slewing
console.movement_source = object::movement_type::physics; //change this sometime
console.lifeleft = IMMORTAL_TIME;
console.attached_obj = object_none;
reset_player_object(console);
}
@ -902,7 +899,7 @@ void init_objects()
Viewer = ConsoleObject = &Objects.front();
init_player_object();
init_player_object(LevelSharedPolygonModelState, *ConsoleObject);
obj_link_unchecked(Objects.vmptr, Objects.vmptridx(ConsoleObject), Segments.vmptridx(segment_first)); //put in the world in segment 0
LevelUniqueObjectState.num_objects = 1; //just the player
Objects.set_count(1);