ScanProbe::ScanProbe() : SpaceObject(100, "ScanProbe") { lifetime = 60 * 10; registerMemberReplication(&owner_id); registerMemberReplication(&target_position); registerMemberReplication(&lifetime, 60.0); }
MissileWeapon::MissileWeapon(string multiplayerName, float homing_range, sf::Color color) : SpaceObject(10, multiplayerName), speed(200.0), turnrate(10.0), lifetime(27.0), color(color), homing_range(homing_range) { target_id = -1; target_angle = 0; registerMemberReplication(&target_id); registerMemberReplication(&target_angle); launch_sound_played = false; }
ExplosionEffect::ExplosionEffect() : SpaceObject(1000.0, "ExplosionEffect") { size = 1.0; on_radar = false; setCollisionRadius(1.0); lifetime = maxLifetime; for(int n=0; n<particleCount; n++) particleDirections[n] = sf::normalize(sf::Vector3f(random(-1, 1), random(-1, 1), random(-1, 1))) * random(0.8, 1.2); registerMemberReplication(&size); registerMemberReplication(&on_radar); }
Asteroid::Asteroid() : SpaceObject(random(110, 130), "Asteroid") { setRotation(random(0, 360)); rotation_speed = random(0.1, 0.8); z = random(-50, 50); size = getRadius(); registerMemberReplication(&z); registerMemberReplication(&size); PathPlannerManager::getInstance()->addAvoidObject(this, 300); }
ShipTemplateBasedObject::ShipTemplateBasedObject(float collision_range, string multiplayer_name, float multiplayer_significant_range) : SpaceObject(collision_range, multiplayer_name, multiplayer_significant_range) { setCollisionPhysics(true, true); shield_count = 0; for(int n=0; n<max_shield_count; n++) { shield_level[n] = 0.0; shield_max[n] = 0.0; shield_hit_effect[n] = 0.0; } hull_strength = hull_max = 100.0; registerMemberReplication(&template_name); registerMemberReplication(&type_name); registerMemberReplication(&shield_count); for(int n=0; n<max_shield_count; n++) { registerMemberReplication(&shield_level[n], 0.5); registerMemberReplication(&shield_max[n]); registerMemberReplication(&shield_hit_effect[n], 0.5); } registerMemberReplication(&callsign); registerMemberReplication(&radar_trace); callsign = "[" + string(getMultiplayerId()) + "]"; }
VisualAsteroid::VisualAsteroid() : SpaceObject(random(110, 130), "VisualAsteroid") { setRotation(random(0, 360)); rotation_speed = random(0.1, 0.8); z = random(300, 800); if (random(0, 100) < 50) z = -z; size = getRadius(); registerMemberReplication(&z); registerMemberReplication(&size); }
RepairCrew::RepairCrew() : MultiplayerObject("RepairCrew") { ship_id = -1; position.x = -1; action = RC_Idle; direction = ERepairCrewDirection(irandom(RC_Up, RC_Right + 1)); selected = false; registerMemberReplication(&ship_id); registerMemberReplication(&position, 1.0); registerMemberReplication(&target_position); repairCrewList.push_back(this); }
PlayerInfo::PlayerInfo() : MultiplayerObject("PlayerInfo") { clientId = -1; main_screen_control = false; registerMemberReplication(&clientId); for(int n=0; n<maxCrewPositions; n++) { crew_position[n] = false; registerMemberReplication(&crew_position[n]); } registerMemberReplication(&ship_id); registerMemberReplication(&main_screen_control); playerInfoList.push_back(this); }
SpaceStation::SpaceStation() : SpaceObject(300, "SpaceStation") { setCollisionPhysics(true, true); shields = shields_max = 400; hull_strength = hull_max = 200; shieldHitEffect = 0.0; registerMemberReplication(&template_name); registerMemberReplication(&shields, 1.0); registerMemberReplication(&shields_max); registerMemberReplication(&shieldHitEffect, 0.5); registerMemberReplication(&callsign); comms_script_name = "comms_station.lua"; callsign = "DS" + string(getMultiplayerId()); }
VisualAsteroid::VisualAsteroid() : SpaceObject(120, "VisualAsteroid") { setRotation(random(0, 360)); rotation_speed = random(0.1, 0.8); z = random(300, 800); if (random(0, 100) < 50) z = -z; registerMemberReplication(&z); }
GameGlobalInfo::GameGlobalInfo() : MultiplayerObject("GameGlobalInfo") { assert(!gameGlobalInfo); gameGlobalInfo = this; for(int n=0; n<maxPlayerShips; n++) { playerShipId[n] = -1; registerMemberReplication(&playerShipId[n]); } }
Artifact::Artifact() : SpaceObject(120, "Artifact") { registerMemberReplication(&model_data_name); setRotation(random(0, 360)); current_model_data_name = "artifact" + string(irandom(1, 8)); model_data_name = current_model_data_name; model_info.setData(current_model_data_name); allow_pickup = false; }
Nebula::Nebula() : SpaceObject(5000, "Nebula") { setCollisionRadius(1); //Nebula need a big radius to render properly from a distance. But they do not really need collision. So set the collision radius to a tiny range. setRotation(random(0, 360)); radar_visual = irandom(1, 3); registerMemberReplication(&radar_visual); for(int n=0; n<cloud_count; n++) { clouds[n].size = random(1024, 1024 * 4); clouds[n].texture = irandom(1, 3); clouds[n].offset = sf::vector2FromAngle(float(n * 360 / cloud_count)) * random(clouds[n].size / 2.0f, getRadius() - clouds[n].size); } nebula_list.push_back(this); }
GameGlobalInfo::GameGlobalInfo() : MultiplayerObject("GameGlobalInfo") { assert(!gameGlobalInfo); callsign_counter = 0; victory_faction = -1; gameGlobalInfo = this; for(int n=0; n<max_player_ships; n++) { playerShipId[n] = -1; registerMemberReplication(&playerShipId[n]); } for(int n=0; n<max_nebulas; n++) { nebula_info[n].vector = sf::Vector3f(random(-1, 1), random(-1, 1), random(-1, 1)); nebula_info[n].textureName = "Nebula" + string(irandom(1, 3)); registerMemberReplication(&nebula_info[n].vector); registerMemberReplication(&nebula_info[n].textureName); } global_message_timeout = 0.0; player_warp_jump_drive_setting = PWJ_ShipDefault; long_range_radar_range = 30000; use_beam_shield_frequencies = true; use_system_damage = true; allow_main_screen_tactical_radar = true; allow_main_screen_long_range_radar = true; registerMemberReplication(&global_message); registerMemberReplication(&global_message_timeout, 1.0); registerMemberReplication(&victory_faction); registerMemberReplication(&long_range_radar_range); registerMemberReplication(&use_beam_shield_frequencies); registerMemberReplication(&use_system_damage); registerMemberReplication(&allow_main_screen_tactical_radar); registerMemberReplication(&allow_main_screen_long_range_radar); for(unsigned int n=0; n<factionInfo.size(); n++) reputation_points.push_back(0); registerMemberReplication(&reputation_points, 1.0); }