Exemple #1
0
void Ship::SaveToJson(Json::Value &jsonObj, Space *space)
{
	DynamicBody::SaveToJson(jsonObj, space);

	Json::Value shipObj(Json::objectValue); // Create JSON object to contain ship data.

	m_skin.SaveToJson(shipObj);
	VectorToJson(shipObj, m_angThrusters, "ang_thrusters");
	VectorToJson(shipObj, m_thrusters, "thrusters");
	shipObj["wheel_transition"] = m_wheelTransition;
	shipObj["wheel_state"] = FloatToStr(m_wheelState);
	shipObj["launch_lock_timeout"] = FloatToStr(m_launchLockTimeout);
	shipObj["test_landed"] = m_testLanded;
	shipObj["flight_state"] = int(m_flightState);
	shipObj["alert_state"] = int(m_alertState);
	shipObj["last_firing_alert"] = DoubleToStr(m_lastFiringAlert);

	// XXX make sure all hyperspace attrs and the cloud get saved
	Json::Value hyperspaceDestObj(Json::objectValue); // Create JSON object to contain hyperspace destination data.
	m_hyperspace.dest.ToJson(hyperspaceDestObj);
	shipObj["hyperspace_destination"] = hyperspaceDestObj; // Add hyperspace destination object to ship object.
	shipObj["hyperspace_countdown"] = FloatToStr(m_hyperspace.countdown);

	Json::Value gunArray(Json::arrayValue); // Create JSON array to contain gun data.
	for (int i = 0; i<ShipType::GUNMOUNT_MAX; i++)
	{
		Json::Value gunArrayEl(Json::objectValue); // Create JSON object to contain gun.
		gunArrayEl["state"] = m_gun[i].state;
		gunArrayEl["recharge"] = FloatToStr(m_gun[i].recharge);
		gunArrayEl["temperature"] = FloatToStr(m_gun[i].temperature);
		gunArray.append(gunArrayEl); // Append gun object to array.
	}
	shipObj["guns"] = gunArray; // Add gun array to ship object.
	shipObj["ecm_recharge"] = FloatToStr(m_ecmRecharge);
	shipObj["ship_type_id"] = m_type->id;
	shipObj["docked_with_port"] = m_dockedWithPort;
	shipObj["index_for_body_docked_with"] = space->GetIndexForBody(m_dockedWith);
	shipObj["hull_mass_left"] = FloatToStr(m_stats.hull_mass_left);
	shipObj["shield_mass_left"] = FloatToStr(m_stats.shield_mass_left);
	shipObj["shield_cooldown"] = FloatToStr(m_shieldCooldown);
	if (m_curAICmd) m_curAICmd->SaveToJson(shipObj);
	shipObj["ai_message"] = int(m_aiMessage);
	shipObj["thruster_fuel"] = DoubleToStr(m_thrusterFuel);
	shipObj["reserve_fuel"] = DoubleToStr(m_reserveFuel);

	shipObj["controller_type"] = static_cast<int>(m_controller->GetType());
	m_controller->SaveToJson(shipObj, space);

	m_navLights->SaveToJson(shipObj);

	shipObj["name"] = m_shipName;

	jsonObj["ship"] = shipObj; // Add ship object to supplied object.
}
Exemple #2
0
void Frame::ToJson(Json::Value &jsonObj, Frame *f, Space *space)
{
	Json::Value frameObj(Json::objectValue); // Create JSON object to contain frame data.

	frameObj["flags"] = f->m_flags;
	frameObj["radius"] = DoubleToStr(f->m_radius);
	frameObj["label"] = f->m_label;
	VectorToJson(frameObj, f->m_pos, "pos");
	frameObj["ang_speed"] = DoubleToStr(f->m_angSpeed);
	MatrixToJson(frameObj, f->m_initialOrient, "init_orient");
	frameObj["index_for_system_body"] = space->GetIndexForSystemBody(f->m_sbody);
	frameObj["index_for_astro_body"] = space->GetIndexForBody(f->m_astroBody);

	Json::Value childFrameArray(Json::arrayValue); // Create JSON array to contain child frame data.
	for (Frame* kid : f->GetChildren())
	{
		Json::Value childFrameArrayEl(Json::objectValue); // Create JSON object to contain child frame.
		Frame::ToJson(childFrameArrayEl, kid, space);
		childFrameArray.append(childFrameArrayEl); // Append child frame object to array.
	}
	frameObj["child_frames"] = childFrameArray; // Add child frame array to frame object.

	SfxManager::ToJson(frameObj, f);

	jsonObj["frame"] = frameObj; // Add frame object to supplied object.
}
void DynamicBody::SaveToJson(Json::Value &jsonObj, Space *space)
{
	ModelBody::SaveToJson(jsonObj, space);

	Json::Value dynamicBodyObj(Json::objectValue); // Create JSON object to contain dynamic body data.

	VectorToJson(dynamicBodyObj, m_force, "force");
	VectorToJson(dynamicBodyObj, m_torque, "torque");
	VectorToJson(dynamicBodyObj, m_vel, "vel");
	VectorToJson(dynamicBodyObj, m_angVel, "ang_vel");
	dynamicBodyObj["mass"] = DoubleToStr(m_mass);
	dynamicBodyObj["mass_radius"] = DoubleToStr(m_massRadius);
	dynamicBodyObj["ang_inertia"] = DoubleToStr(m_angInertia);
	dynamicBodyObj["is_moving"] = m_isMoving;

	jsonObj["dynamic_body"] = dynamicBodyObj; // Add dynamic body object to supplied object.
}
Exemple #4
0
void SpaceStation::SaveToJson(Json::Value &jsonObj, Space *space)
{
	ModelBody::SaveToJson(jsonObj, space);

	Json::Value spaceStationObj(Json::objectValue); // Create JSON object to contain space station data.

	Json::Value shipDockingArray(Json::arrayValue); // Create JSON array to contain ship docking data.
	for (Uint32 i = 0; i<m_shipDocking.size(); i++)
	{
		Json::Value shipDockingArrayEl(Json::objectValue); // Create JSON object to contain ship docking.
		shipDockingArrayEl["index_for_body"] = space->GetIndexForBody(m_shipDocking[i].ship);
		shipDockingArrayEl["stage"] = m_shipDocking[i].stage;
		shipDockingArrayEl["stage_pos"] = DoubleToStr(m_shipDocking[i].stagePos); // stagePos is a double but was saved as a float in pre-JSON system for some reason (saved as double here).
		VectorToJson(shipDockingArrayEl, m_shipDocking[i].fromPos, "from_pos");
		QuaternionToJson(shipDockingArrayEl, m_shipDocking[i].fromRot, "from_rot");
		shipDockingArray.append(shipDockingArrayEl); // Append ship docking object to array.
	}
	spaceStationObj["ship_docking"] = shipDockingArray; // Add ship docking array to space station object.

	// store each of the port details and bay IDs
	Json::Value portArray(Json::arrayValue); // Create JSON array to contain port data.
	for (Uint32 i = 0; i < m_ports.size(); i++)
	{
		Json::Value portArrayEl(Json::objectValue); // Create JSON object to contain port.

		portArrayEl["min_ship_size"] = m_ports[i].minShipSize;
		portArrayEl["max_ship_size"] = m_ports[i].maxShipSize;
		portArrayEl["in_use"] = m_ports[i].inUse;

		Json::Value bayArray(Json::arrayValue); // Create JSON array to contain bay data.
		for (Uint32 j = 0; j<m_ports[i].bayIDs.size(); j++)
		{
			Json::Value bayArrayEl(Json::objectValue); // Create JSON object to contain bay.
			bayArrayEl["bay_id"] = m_ports[i].bayIDs[j].first;
			bayArrayEl["name"] = m_ports[i].bayIDs[j].second;
			bayArray.append(bayArrayEl); // Append bay object to array.
		}
		portArrayEl["bays"] = bayArray; // Add bay array to port object.

		portArray.append(portArrayEl); // Append port object to array.
	}
	spaceStationObj["ports"] = portArray; // Add port array to space station object.

	spaceStationObj["index_for_system_body"] = space->GetIndexForSystemBody(m_sbody);

	spaceStationObj["door_animation_step"] = DoubleToStr(m_doorAnimationStep);
	spaceStationObj["door_animation_state"] = DoubleToStr(m_doorAnimationState);

	m_navLights->SaveToJson(spaceStationObj);

	jsonObj["space_station"] = spaceStationObj; // Add space station object to supplied object.
}
Exemple #5
0
void Body::SaveToJson(Json::Value &jsonObj, Space *space)
{
	Json::Value bodyObj(Json::objectValue); // Create JSON object to contain body data.

	Properties().SaveToJson(bodyObj);
	bodyObj["index_for_frame"] = space->GetIndexForFrame(m_frame);
	bodyObj["label"] = m_label;
	bodyObj["dead"] = m_dead;

	VectorToJson(bodyObj, m_pos, "pos");
	MatrixToJson(bodyObj, m_orient, "orient");
	bodyObj["phys_radius"] = DoubleToStr(m_physRadius);
	bodyObj["clip_radius"] = DoubleToStr(m_clipRadius);

	jsonObj["body"] = bodyObj; // Add body object to supplied object.
}