public RaceFinishedScreen(Race race, Track raceTrack) : base() { _race = race; _raceTrack = raceTrack; _background = ScreenEffects.TakeScreenshot(); GC.Collect(); //force some memory freeness here. }
public Race(int nbrLaps, Track track, PlayerDriver player) { _nbrLaps = nbrLaps; Player = player; Track = track; PlayerStats = new PlayerRaceStats(); Drivers = new List<IDriver>(); AddDriver(player); if (track.Description.IsOpenRoad) { _trafficController = new TrafficController(this); } }
public DoRaceScreen(Track track) { _track = track; _car = new DrivableVehicle(GameConfig.SelectedVehicle); _playerDriver = new PlayerDriver(_car); _car.AudioEnabled = true; _race = new Race(_track.IsOpenRoad ? 1 : 3, _track, _playerDriver); for (int i = 0; i < 10; i++) { int j = Engine.Instance.Random.Next(VehicleDescription.Descriptions.Count); _race.AddDriver(new RacingAIDriver(VehicleDescription.Descriptions[j])); } //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper"))); //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper"))); //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper"))); //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper"))); _playerUI = new PlayerUI(_car); /* d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "911")); _aiDrivers.Add(d); _track.AddDriver(d); d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper")); _aiDrivers.Add(d); _track.AddDriver(d); d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Diablo")); _aiDrivers.Add(d); _track.AddDriver(d); d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "F512")); _aiDrivers.Add(d); _track.AddDriver(d); d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "ZR1")); _aiDrivers.Add(d); _track.AddDriver(d); d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "NSX")); _aiDrivers.Add(d); _track.AddDriver(d); */ _raceUI = new RaceUI(_race); _race.StartCountdown(); _raceViewport = new Viewport(0, 0, 640, 400); _uiViewport = new Viewport(0, 0, 640, 480); }
public Track Assemble(TriFile tri) { _tri = tri; AddProgress("Reading track scenery file"); _trackFam = tri.IsOpenRoad ? new OpenRoadTrackfamFile(tri.FileName, GameConfig.AlternativeTimeOfDay) : new TrackfamFile(tri.FileName, GameConfig.AlternativeTimeOfDay); AssembleTrackSegments(); Track track = new Track(); track.RoadNodes = _tri.Nodes; track.SceneryItems = AssembleSceneryItems(); track.TerrainSegments = _tri.Segments; track.TerrainVertexBuffer = AssembleTerrainVertices(); track.FenceVertexBuffer = AssembleFenceVertices(); track.TrackFam = _trackFam; track.IsOpenRoad = _tri.IsOpenRoad; // Find checkpoint scenery object and use it to mark the end of the track. // Or ignore it and mark the end of the track as the last node to allow us to drive past the checkpoint! if (tri.IsOpenRoad && GameConfig.RespectOpenRoadCheckpoints) { foreach (var obj in _tri.Scenery) { if (obj.Descriptor.ResourceId == OPEN_ROAD_CHECKPOINT_SCENERYITEM_ID) { track.CheckpointNode = obj.ReferenceNode; break; } } } else { track.CheckpointNode = _tri.Nodes.Count - 2; } track.Initialize(); return track; }
public void PlaceOnTrack(Track t, TrackNode startNode) { Track = t; CurrentNode = startNode; Position = Vector3.Lerp(startNode.GetLeftVerge(), startNode.GetRightVerge2(), 0.5f); //center of node }