示例#1
0
    void Awake()
    {
        freeCars = new CarData[4];
        for (int i = 0; i < 4; i++)
        {
            freeCars[i] = new CarData();
        }

        spawnedCars = new List <CarData> [4];
        for (int i = 0; i < 4; i++)
        {
            spawnedCars[i] = new List <CarData>();
        }

        play           = false;
        free           = true;
        StartCursorPos = 0;

        carManager            = gameObject.GetComponent <CarManager>();
        carManager.data       = spawnedCars;
        carManager.furtherCar = new CarData(cursorCar.gameObject, 0, 0, Type.car, 0);

        selectedCar = new CarData();

        type = Type.car;
        line = 0;

        cursorCar.transform.GetChild(0).animation.wrapMode = WrapMode.Loop;
        dl = new DataLoader(inTheForest);
        dm = new DataManager(spawnedCars, inTheForest);
    }
    /// <summary>
    /// Swaps the data of two list elements
    /// </summary>
    /// <param name="firstElement">first element to swap</param>
    /// <param name="secondElement">second element to swap</param>
    private void SwapElements(ListElement firstElement, ListElement secondElement)
    {
        CarData temp = firstElement.Data;

        firstElement.Data  = secondElement.Data;
        secondElement.Data = temp;
    }
示例#3
0
    private bool ChangeMaxDist()
    {
        float maxTime = 0;

        for (int i = 0; i < 4; i++)
        {
            for (int k = 0; k < data[i].Count; k++)
            {
                if (((data[i][k].dist + 86) / data[i][k].carspeed) >= maxTime && data[i][k].carspeed != 0)
                {
                    maxTime    = ((data[i][k].dist + 86) / data[i][k].carspeed);
                    furtherCar = data[i][k];
                }
            }
        }

        if (!furtherCar.entity)
        {
            print("no cars in scene");
            gameObject.GetComponent <CarSpawner>().Stop();
            return(false);
        }
        else
        {
            return(true);
        }
    }
 public FeaturedController(IOptions <AppSettings> appSettings)
 {
     _appSettings    = appSettings.Value;
     _cardata        = new CarData(_appSettings.CarWaleApiBaseURL);
     _carviewContext = new CarviewContext();
     _imageBaseURL   = _appSettings.CarWaleApiBaseURL + _imageURLPath;
 }
        public CarTrafficData(string fileName)
        {
            string line;
            int idx = 0;
            System.IO.StreamReader file = new System.IO.StreamReader(fileName);
            while ((line = file.ReadLine()) != null)
            {
                if (idx == 0)
                {
                    numSegments = int.Parse(line);
                }
                else if (idx == 1)
                {
                    numCars = int.Parse(line);
                }
                else
                {
                    blocked = new bool[numSegments];
                    string[] startEndData = line.Split(',');
                    CarData data = new CarData();
                    data.id = idx - 2;
                    data.start = int.Parse(startEndData[0]);
                    data.end = int.Parse(startEndData[1]);
                    data.estimatedArrival = int.Parse(startEndData[2]);
                    data.startingTime = Math.Max(1, data.estimatedArrival - ((data.end - data.start)) - 20);
                    data.current = data.start;
                    blocked[data.current] = true;
                    cars.Add(data);
                }

                ++idx;
            }
        }
示例#6
0
    public void SetCarChoice(int carNum, bool isMultiplayer)
    {
        CarData data = CarDataLookup.Instance.FindCarData(carStyle);

        upgradeLevel = (UpgradeLevel)carNum;
        if (data != null)
        {
            SpriteRenderer visual = GetComponentInChildren <SpriteRenderer>();
            if (visual)
            {
                visual.sprite = data.GetVisual(carColor);
            }
            PolygonCollider2D collider = GetComponentInChildren <PolygonCollider2D>();
            if (collider != null)
            {
                collider.SetPath(0, data.points.ToArray());
            }

            if (isMultiplayer)
            {
                // Car choice has only a visual effect in multiplayer games
                _carSpeed = data.GetMaxSpeed(0);
            }
            else
            {
                _carSpeed = data.GetMaxSpeed(carNum - 1);
            }
        }
    }
示例#7
0
    public List <CarData> AddLap(CarData car)
    {
        if (laps.ContainsKey(car))
        {
            laps[car] += 1;
        }
        else
        {
            laps.Add(car, 1);
            standings.Add(car);
            Debug.Log("The " + car.number + " car was just added to the standings, so it's put at the end.");
            return(standings);
        }
        standings.Remove(car);
        for (int i = 0; i < standings.Count; i++)
        {
            if (laps[standings[i]] < laps[car])
            {
                Debug.Log(car.number + " has more laps than car number " + standings[i].number);

                standings.Insert(i, car);
                Debug.Log("The " + car.number + " is ahead of the " + standings[i + 1].number + " car. It's put ahead of it.");
                return(standings);
            }
        }
        standings.Add(car);
        Debug.Log("The " + car.number + " is last.");
        return(standings);
    }
示例#8
0
	public void SetCarSelected(int index)
	{
		for (int i = 0; i < carsInList.Count; i++) {
			if (i == index)
				carsInList [i].SBA.ResetBlinkingAnimation ();
			else
				carsInList [i].SBA.gameObject.SetActive (false);
		}

		CarData readedCar = GlobalGameData.currentInstance.m_playerData_carsOwned [index];
		
		carNameText.text = readedCar.GetCarName ();
		statSliders[0].SetValues (readedCar.GetBaseMaxSpeed(), readedCar.GetUpgradedMaxSpeed());
		statSliders[1].SetValues (readedCar.GetBaseAcceleration(), readedCar.GetUpgradedAcceleration());
		statSliders[2].SetValues (readedCar.GetBaseTurnRate(), readedCar.GetUpgradedTurnRate());
		statSliders[3].SetValues (readedCar.GetBaseDriftStrenght(), readedCar.GetUpgradedDriftStrenght());
		statSliders[4].SetValues (readedCar.GetBaseWeight (), readedCar.GetUpgradedWeight ());

		ChangeCarDisplayed (true, readedCar.GetSkinId ());

		carInDisplayIndex = index;

		MainMenuSoundManager.instance.playAcceptSound ();

	}
示例#9
0
        private void ReadSerial(object data)
        {
            CarData d = ((CarData)data);
            CarTime newest;
            String  message;

            while (d.run)
            {
                try
                {
                    message = d.usb.ReadLine();
                    newest  = d.data.FirstOrDefault(dd => dd.Stop == null);
                    if (newest != null)
                    {
                        newest.Stop = message;
                    }
                    else
                    {
                        Console.WriteLine($"Found a time with no match: {message}");
                    }
                }
                catch (Exception ex)
                {
                    if (ex.Message != "The operation has timed out.")
                    {
                        Console.WriteLine(ex.Message);
                    }
                    continue;
                    //nothing to do, just means nothing on the serial
                }
            }
        }
示例#10
0
 public CarData GetItem(string carName, string carModel, string carEngine)
 {
     try
     {
         DBbase.Connect();
         string        sql    = @"SELECT CAR_ID,CAR_CODE,CAR_NAME,CAR_MODEL,CAR_ENGINE,CAR_REMARK,CAR_STATUS FROM MA_CAR WHERE
         CAR_NAME = '" + carName + "' AND CAR_MODEL = '" + carModel + "' AND CAR_ENGINE = '" + carEngine + "'";
         SqlCommand    cmd    = new SqlCommand(sql, DBbase.con);
         SqlDataReader reader = cmd.ExecuteReader();
         if (reader.Read())
         {
             CarData item = new CarData();
             item.CAR_ID     = Convert.ToInt32(reader["CAR_ID"].ToString());
             item.CAR_CODE   = reader["CAR_CODE"].ToString();
             item.CAR_NAME   = reader["CAR_NAME"].ToString();
             item.CAR_MODEL  = reader["CAR_MODEL"].ToString();
             item.CAR_ENGINE = reader["CAR_ENGINE"].ToString();
             item.CAR_REMARK = reader["CAR_REMARK"].ToString();
             item.CAR_STATUS = reader["CAR_STATUS"].ToString();
             reader.Close();
             DBbase.DisConnect();
             return(item);
         }
         else
         {
             DBbase.DisConnect();
             return(null);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#11
0
 public void Update(CarData oldItem, CarData newItem)
 {
     try
     {
         MemberData member = (MemberData)DataCommon.Get("DATA.MEMBER");
         DBbase.Connect();
         StringBuilder sql = new StringBuilder();
         sql.Append("UPDATE MA_CAR SET CAR_CODE = '" + newItem.CAR_CODE + "',");
         sql.Append(" CAR_ENGINE = '" + newItem.CAR_ENGINE + "',");
         sql.Append(" CAR_MODEL = '" + newItem.CAR_MODEL + "',");
         sql.Append(" CAR_NAME = '" + newItem.CAR_NAME + "',");
         sql.Append(" CAR_REMARK = '" + newItem.CAR_REMARK + "',");
         sql.Append(" CAR_STATUS = '" + newItem.CAR_STATUS + "',");
         sql.Append(" UPDATE_DATE = '" + DateTime.Now + "',");
         sql.Append(" UPDATE_USER = '******'");
         sql.Append(" WHERE CAR_CODE = '" + oldItem.CAR_CODE + "'");
         sql.Append(" AND CAR_ENGINE = '" + oldItem.CAR_ENGINE + "'");
         sql.Append(" AND CAR_MODEL = '" + oldItem.CAR_MODEL + "'");
         sql.Append(" AND CAR_NAME = '" + oldItem.CAR_NAME + "'");
         SqlCommand cmd = new SqlCommand(sql.ToString(), DBbase.con);
         cmd.ExecuteNonQuery();
         DBbase.DisConnect();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 void SetCarStats()
 {
     carReferenced = GlobalGameData.currentInstance.GetCarInUse();
     if (GlobalGameData.currentInstance.m_playerData_eventActive.GetSpecialEventType() == EventData.SpecialEvent.SoundSpeed)
     {
         turnRate                 = STAT_TURNRATE_BASE + 10 * STAT_TURNRATE_SCAL;
         acceleration             = STAT_ACCELERATION_BASE + 10 * STAT_ACCELERATION_SCAL;
         maxFwdSpeed              = STAT_MAXSPEED_BASE + 10 * STAT_MAXSPEED_SCAL;
         maxBwdSpeed              = -(maxFwdSpeed * 0.35f);
         driftStrenght            = STAT_DRIFTSTR_BASE + 10 * STAT_DRIFTSTR_SCAL;
         maxDrift                 = STAT_MAXDRIFT_BASE + 10 * STAT_MAXDRIFT_SCAL;
         driftSpeedConservation   = STAT_DRIFTSPDCONS_BASE + (10) * STAT_DRIFTSPDCONS_SCAL;
         driftStabilization       = driftStrenght * 0.65f;
         speedFalloffReductionFwd = STAT_SPDFALLOFF_BASE + carReferenced.GetAcceleration() * STAT_SPDFALLOFF_SCAL;
         speedFalloffReductionBwd = speedFalloffReductionFwd * 2f;
         carWeight                = STAT_WEIGHT_BASE;
         specialEventNoBrakes     = true;
     }
     else
     {
         turnRate                 = STAT_TURNRATE_BASE + carReferenced.GetTurnRate() * STAT_TURNRATE_SCAL;
         acceleration             = STAT_ACCELERATION_BASE + carReferenced.GetAcceleration() * STAT_ACCELERATION_SCAL;
         maxFwdSpeed              = STAT_MAXSPEED_BASE + carReferenced.GetMaxSpeed() * STAT_MAXSPEED_SCAL;
         maxBwdSpeed              = -(maxFwdSpeed * 0.35f);
         driftStrenght            = STAT_DRIFTSTR_BASE + carReferenced.GetDriftStrenght() * STAT_DRIFTSTR_SCAL;
         maxDrift                 = STAT_MAXDRIFT_BASE + carReferenced.GetMaxDriftDegree() * STAT_MAXDRIFT_SCAL;
         driftSpeedConservation   = STAT_DRIFTSPDCONS_BASE + (10 - carReferenced.GetCarWeight()) * STAT_DRIFTSPDCONS_SCAL;
         driftStabilization       = driftStrenght * 0.65f;
         speedFalloffReductionFwd = STAT_SPDFALLOFF_BASE + carReferenced.GetAcceleration() * STAT_SPDFALLOFF_SCAL;
         speedFalloffReductionBwd = speedFalloffReductionFwd * 2f;
         carWeight                = STAT_WEIGHT_BASE + STAT_WEIGHT_SCAL * carReferenced.GetCarWeight();
     }
 }
示例#13
0
        public async Task AddCar(CarData car)
        {
            await using var db = new CarsContext();
            await db.Cars.AddAsync(car);

            await db.SaveChangesAsync();
        }
示例#14
0
 public LotsManagerController(ApplicationContext context, CarData carData, ILogger <LotsController> _logger, IBetPerository rep, ICarLotsRepository c)
 {
     db = context;
     carLotsRepository = c;
     betRep            = rep;
     logger            = _logger;
 }
示例#15
0
 public virtual void Setup(CarData car)
 {
     name         = car.name;
     travelClass  = car.travelClass;
     type         = car.type;
     fulfillments = car.fulfillments;
 }
示例#16
0
    void Change()
    {
        if (selectedCar != null && selectedCar.entity)
        {
            Read();

            if (selectedCar.type != type || selectedCar.bonusId != bonusId)
            {
                int xline, xpos;
                selectedCar = Find(selectedCar.entity, out xline, out xpos);
                spawnedCars[line].RemoveAt(xpos);
                GameObject.Destroy(selectedCar.entity);
                selectedCar = SpawnCar(speed, line, cursorLine.position.z, type, bonusId);
            }

            selectedCar.carspeed = speed;

            selectedCar.dist = cursorLine.position.z;
            Vector3 newpos = selectedCar.entity.transform.position;
            newpos.z = selectedCar.dist;
            selectedCar.entity.transform.position = newpos;

            MoveCarCursor();
        }
    }
示例#17
0
 public PopupCar()
 {
     try
     {
         InitializeComponent();
         if (DataCommon.Exists("CAR_EDIT"))
         {
             item                    = (CarData)DataCommon.Get("CAR_EDIT");
             txtCarCode.Text         = item.CAR_CODE;
             txtCarName.Text         = item.CAR_NAME;
             txtCarModel.Text        = item.CAR_MODEL;
             txtCarEngine.Text       = item.CAR_ENGINE;
             txtCarRemark.Text       = item.CAR_REMARK;
             cbbStatus.SelectedIndex = item.CAR_STATUS == "A" ? 0 : 1;
         }
         //else
         //{
         //    txtCarCode.IsEnabled = true;
         //}
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
示例#18
0
    public override void Setup(CarData carData)
    {
        base.Setup(carData);
        HousingCarData car = (HousingCarData)carData;

        MaximumNumberOfOccupants = car.maximumNumberOfOccupants;
    }
示例#19
0
        private void ChartControl_OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            NHitTestResult result = nChartControl1.HitTest(e.X, e.Y);

            NWatermark watermark = result.Object as NWatermark;

            if (watermark == null)
            {
                return;
            }

            CarData car = watermark.Tag as CarData;

            if (car == null)
            {
                return;
            }

            m_ReviewLabel.Text = "Concept car from " + car.AuthorName;

            NSeries series = (NSeries)nChartControl1.Charts[0].Series[0];

            series.Values.Clear();
            series.Values.AddRange(car.Values);

            nChartControl1.Refresh();
        }
示例#20
0
 public void Init(CarData carData, SteeringTypeIdentifier steeringType)
 {
     _carData      = carData;
     _steeringType = steeringType;
     _leftTyre.Init(carData, _isRearAxle ? TyrePositionIdentifier.RL : TyrePositionIdentifier.FL);
     _rightTyre.Init(carData, _isRearAxle ? TyrePositionIdentifier.RR : TyrePositionIdentifier.FR);
 }
示例#21
0
    public void setCardData(CarData data)
    {
        if (carFullName != null)
        {
            carFullName.text = data.carFullName;
        }
        if (releaseYear != null)
        {
            releaseYear.text = data.releaseYear.ToString();
        }
        if (producerLogo != null)
        {
            producerLogo.texture = data.producerLogo;
        }
        if (carPlacement != null)
        {
            if (car != null)
            {
                Destroy(car);
            }
            car = Instantiate(data.car, carPlacement.transform);

            _DisableCarScripts();
            _SetDefaultCarTransform();
        }
        if (background != null)
        {
            background.color = data.background;
        }
    }
    private void UpdateTrailer(float thetaOldCar, float D, Transform dragVehicle, GameObject trailer, float trailerAttachmentZOffset)
    {
        TrailerTest trailerData = trailer.transform.GetComponent <TrailerTest>();


        //Move the trailer to the attachment point - Should we use old or new values????
        Vector3 dragVehiclePos = dragVehicle.position;

        float dragVehicleHeading = dragVehicle.rotation.eulerAngles.y * Mathf.Deg2Rad;

        Vector3 attachmentPoint = CarData.GetLocalZPosition(dragVehiclePos, dragVehicleHeading, trailerAttachmentZOffset);

        trailer.transform.position = attachmentPoint;


        //Update rotation
        float theta = trailer.transform.eulerAngles.y * Mathf.Deg2Rad;

        //Distance to rear axle from connection point
        float d = Mathf.Abs(trailerData.rearWheelZOffset);

        float thetaNew = VehicleSimulationModels.CalculateNewTrailerHeading(theta, thetaOldCar, D, d);


        //Update the new values
        Vector3 newRotation = new Vector3(0f, thetaNew * Mathf.Rad2Deg, 0f);

        trailer.transform.rotation = Quaternion.Euler(newRotation);
    }
示例#23
0
    public void load()
    {
        CarData data = Tools.LoadCar();

        MaxtorquevariableR = data.MaxtorquevariableR; //torque massimo variabile
        MaxtorquevariableF = data.MaxtorquevariableF; //torque massimo variabile
        MaxtorqueairF      = data.MaxtorqueairF;      //torque massimo per l'aria
        MaxtorqueairR      = data.MaxtorqueairR;      //torque massimo per l'aria
        Brakefront         = data.Brakefront;         //potenza freno anteriore
        Brakerear          = data.Brakerear;          //potenza freno posteriore
        torqueFdv          = data.torqueFdv;          //valore che divide il max torque per ottenere il valore di accelerazione
        torqueRdv          = data.torqueRdv;          //valore che divide il max torque per ottenere il valore di accelerazione
        rotation_powa      = data.rotation_powa;      //potenza di rotazione
        fuel            = data.fuel;                  //fuel di partenza
        fuelvalue       = data.fuelvalue;
        maxfuel         = data.maxfuel;
        divisoreconsumo = data.divisoreconsumo; //determina il consumo del databurante rapportato alla potenza , insomma l'efficenza , più alto = più efficiente
        cmass           = data.cmass;           //massa del centro di gravità
        frequency_front = data.frequency_front;
        frequency_back  = data.frequency_back;
        dampening_front = data.dampening_front;
        dampening_back  = data.dampening_back;
        height_front    = data.height_front;
        height_back     = data.height_back;
        editValue();
        Tools.saveCar(this);
    }
示例#24
0
 private void checkForNewOvertakes(GameStateData previousGameState, GameStateData currentGameState)
 {
     if (currentGameState.SessionData.SessionPhase == SessionPhase.Green &&
         currentGameState.SessionData.SessionType == SessionType.Race && currentGameState.SessionData.CompletedLaps > 0)
     {
         if (currentGameState.Now > lastPassCheck.Add(passCheckInterval))
         {
             lastPassCheck = currentGameState.Now;
             if (currentGameState.SessionData.TimeDeltaFront > 0)
             {
                 gapsAhead.Add(currentGameState.SessionData.TimeDeltaFront);
             }
             if (currentGameState.SessionData.TimeDeltaBehind > 0)
             {
                 gapsBehind.Add(currentGameState.SessionData.TimeDeltaBehind);
             }
             string currentOpponentAheadKey  = currentGameState.getOpponentKeyInFront(true);
             string currentOpponentBehindKey = currentGameState.getOpponentKeyBehind(true);
             // seems like belt and braces, but as Raceroom names aren't unique we need to double check a pass actually happened here:
             if (frequencyOfOvertakingMessages > 0 && currentOpponentAheadKey != opponentAheadKey)
             {
                 if (currentGameState.SessionData.CurrentLapIsValid && !currentGameState.PitData.InPitlane &&
                     currentOpponentBehindKey == opponentAheadKey && isPassMessageCandidate(gapsAhead, passCheckSamplesToCheck, minAverageGapForPassMessage))
                 {
                     OpponentData carWeJustPassed = currentGameState.OpponentData[currentOpponentBehindKey];
                     if (carWeJustPassed.CompletedLaps == currentGameState.SessionData.CompletedLaps &&
                         CarData.IsCarClassEqual(carWeJustPassed.CarClass, currentGameState.carClass))
                     {
                         timeWhenWeMadeAPass           = currentGameState.Now;
                         opponentKeyForCarWeJustPassed = currentOpponentBehindKey;
                         lastOvertakeWasClean          = true;
                         if (currentGameState.CarDamageData.LastImpactTime > 0 && (currentGameState.SessionData.SessionRunningTime - currentGameState.CarDamageData.LastImpactTime) < secondsToCheckForDamageOnPass)
                         {
                             lastOvertakeWasClean = false;
                         }
                     }
                 }
                 gapsAhead.Clear();
             }
             if (frequencyOfBeingOvertakenMessages > 0 && opponentBehindKey != currentOpponentBehindKey)
             {
                 if (!currentGameState.PitData.InPitlane && currentOpponentAheadKey == opponentBehindKey && isPassMessageCandidate(gapsBehind, beingPassedCheckSamplesToCheck, minAverageGapForBeingPassedMessage))
                 {
                     // TODO: check if we need to do a pit check here - don't think so
                     OpponentData carThatJustPassedUs = currentGameState.OpponentData[currentOpponentAheadKey];
                     if (carThatJustPassedUs.CompletedLaps == currentGameState.SessionData.CompletedLaps &&
                         CarData.IsCarClassEqual(carThatJustPassedUs.CarClass, currentGameState.carClass))
                     {
                         timeWhenWeWerePassed = currentGameState.Now;
                         opponentKeyForCarThatJustPassedUs = currentOpponentAheadKey;
                     }
                 }
                 gapsBehind.Clear();
             }
             opponentAheadKey  = currentOpponentAheadKey;
             opponentBehindKey = currentOpponentBehindKey;
         }
     }
 }
示例#25
0
        public List <SlotData> GetSlotDetailsWrtFloor(int slotFloor)
        {
            List <SlotData> slotDataList = null;

            try
            {
                using (OracleConnection con = new OracleConnection(Connection.connectionString))
                {
                    if (con.State == System.Data.ConnectionState.Closed)
                    {
                        con.Open();
                    }
                    string sql = "select ps.F_LEVEL_ID,ps.AISLE, ps.F_ROW,ps.SLOT_TYPE,ps.SLOT_STATUS,ps.VALUE,ps.MANUAL_BLOCK,ps.REHANDLE,"
                                 + " ps.PREV_SLOT_STATUS, LC.card_Id,LC.car_type,LC.IS_ROTATE"
                                 + " FROM L2_PROC_SNAPSHOT ps left join l2_customers lc on ps.value=lc.card_id and LC.IS_RETRIEVED=0 "
                                 + " where ps.F_LEVEL_ID= " + slotFloor + " and (ps.SLOT_TYPE>0 or ps.slot_type=-11)";
                    OracleCommand selectCommand = new OracleCommand(sql, con);
                    using (OracleDataReader dreader = selectCommand.ExecuteReader())
                    {
                        if (dreader.HasRows)
                        {
                            slotDataList = new List <SlotData>();
                            while (dreader.Read())
                            {
                                SlotData objSlotData = null;
                                objSlotData                = new SlotData();
                                objSlotData.SlotFloor      = slotFloor;
                                objSlotData.SlotAisle      = int.Parse(Convert.ToString(dreader["AISLE"]));
                                objSlotData.SlotRow        = int.Parse(Convert.ToString(dreader["F_ROW"]));
                                objSlotData.SlotType       = int.Parse(Convert.ToString(dreader["SLOT_TYPE"]));
                                objSlotData.SlotStatus     = int.Parse(Convert.ToString(dreader["SLOT_STATUS"]));
                                objSlotData.slotValue      = Convert.ToString(dreader["VALUE"]);
                                objSlotData.Disable        = int.Parse(Convert.ToString(dreader["MANUAL_BLOCK"])) == 1;
                                objSlotData.Rehandle       = int.Parse(Convert.ToString(dreader["REHANDLE"])) == 1;
                                objSlotData.PrevSlotStatus = int.Parse(Convert.ToString(dreader["PREV_SLOT_STATUS"]));

                                if (!String.IsNullOrEmpty(Convert.ToString(dreader["card_Id"])))
                                {
                                    CarData objCarData = null;
                                    objCarData             = new CarData();
                                    objCarData.CardId      = Convert.ToString(dreader["card_Id"]);
                                    objCarData.IsRotated   = int.Parse(Convert.ToString(dreader["IS_ROTATE"])) == 1;
                                    objCarData.CarType     = int.Parse(Convert.ToString(dreader["car_type"]));
                                    objSlotData.ObjCarData = objCarData;
                                }

                                slotDataList.Add(objSlotData);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return(slotDataList);
        }
    //
    // Display vehicle positions along a path
    //
    public static void DisplayVehicleAlongPath(List <Node> path, CarData carData, Car trailer)
    {
        if (path == null || path.Count == 0)
        {
            return;
        }

        //Debug.Log(path.Count);

        for (int i = 0; i < path.Count; i++)
        {
            //if (i % 20 == 0)
            //{
            //    continue;
            //}

            Node node = path[i];

            //The car
            Vector3 carCenter = carData.GetCenterPos(node.rearWheelPos, node.heading);

            Rectangle carRect = CarData.GetCornerPositions(carCenter, node.heading, carData.carWidth, carData.CarLength);

            //DrawRect(carRect, Color.white, 90f);

            //Debug.Log(node.rearWheelPos);

            //Cabin
            Vector3 cabinCenterPos = carData.GetSemiCabinCenter(node.rearWheelPos, node.heading);

            //DrawLine(carCenter, cabinCenterPos, Color.blue, 90f);

            Rectangle cabinRect = CarData.GetCornerPositions(cabinCenterPos, node.heading, carData.carWidth, carData.cabinLength);

            //DrawRect(cabinRect, Color.white, 90f);


            //The trailer
            if (trailer == null)
            {
                continue;
            }

            Vector3 trailerAttachmentPos = carData.GetTrailerAttachmentPoint(node.rearWheelPos, node.heading);

            //Now we need the trailer's rear-wheel pos based on the new heading
            CarData trailerData = trailer.carData;

            Vector3 trailerRearWheelPos = trailerData.GetTrailerRearWheelPos(trailerAttachmentPos, node.TrailerHeadingInRadians);

            //DrawLine(carCenter, trailerRearWheelPos, Color.blue, 90f);

            Vector3 trailerCenter = trailerData.GetCenterPos(trailerRearWheelPos, node.TrailerHeadingInRadians);

            Rectangle trailerRect = CarData.GetCornerPositions(trailerCenter, node.TrailerHeadingInRadians, trailerData.carWidth, trailerData.CarLength);

            DrawRect(trailerRect, Color.red, 90f);
        }
    }
示例#27
0
        private void FormMain_Load(object sender, EventArgs e)
        {
            this.udpSender   = new UdpSender();
            this.udpReciever = new UdpReciever();
            this.carData     = new CarData(this.udpReciever);

            showSettingsForm();
        }
示例#28
0
 public void OnEnable()
 {
     selectedCar = null;
     if (carManager)
     {
         Populate();
     }
 }
 /*
  * Description: Car provided will resume it's route if it is the front car stopped in the lane.
  */
 public void ResumeCar(CarData car)
 {
     // Resume car only if it is the front-most stopped car.
     if (car.IndexInLane == m_laneStopIndices[car.LaneIndex])
     {
         m_laneStopIndices[car.LaneIndex] = int.MaxValue;
     }
 }
示例#30
0
 public void SetCardData(CarData data)
 {
     if (data != null)
     {
         CarCard card = cardInstance.GetComponent <CarCard>();
         card.setCardData(data);
     }
 }
示例#31
0
 public void SelectCar(CarData newSelection)
 {
     if (newSelection != null)
     {
         currentCar = newSelection;
         onSelectionChange.Invoke(currentCar);
     }
 }
	void Update() {

		position = new Vector3 (transform.position.x, transform.position.y + 1, transform.position.z);
		if (Physics.Raycast (position, -Vector3.up, out hit)) {

			if (hit.transform.tag != "Track") {
				print ("TrackDetection.Update(): you went off the track");	
				carId = GetComponentInParent<Engine> ().carId;
				torque = GetComponentInParent<Engine> ().engineTorque;

				List<CarData> cars = GameObject.Find ("Game Controller").GetComponent<GameController> ().cars;
				thisCar = cars [carId - 1];
				currentCheckpoint = thisCar.currentCheckpoint + 1;

				checkpointPos = GameObject.Find ("Checkpoint " + currentCheckpoint).GetComponent<Transform> ().position;
				newCurrentCheckpointPos = new Vector3 (checkpointPos.x, checkpointPos.y+1, checkpointPos.z);

				transform.position = checkpointPos;
				torque = 0;
			}
		}
	}
 private OvertakingAids getOvertakingAids(RaceRoomShared shared, CarData.CarClassEnum carClassEnum, int lapsCompleted, SessionType sessionType)
 {
     OvertakingAids overtakingAids = new OvertakingAids();
     overtakingAids.DrsAvailable = shared.DrsAvailable == 1;
     overtakingAids.DrsEngaged = shared.DrsEngaged == 1;
     if (carClassEnum == CarData.CarClassEnum.DTM_2014)
     {
         overtakingAids.DrsEnabled = sessionType == SessionType.Race && lapsCompleted > 2;
         overtakingAids.DrsRange = 2;
     }
     else if (carClassEnum == CarData.CarClassEnum.DTM_2015)
     {
         overtakingAids.DrsEnabled = sessionType == SessionType.Race && lapsCompleted > 3;
         overtakingAids.DrsRange = 1;
     }
     overtakingAids.PushToPassActivationsRemaining = shared.push_to_pass.amount_left;
     overtakingAids.PushToPassAvailable = shared.push_to_pass.available == 1;
     overtakingAids.PushToPassEngaged = shared.push_to_pass.engaged == 1;
     overtakingAids.PushToPassEngagedTimeLeft = shared.push_to_pass.engaged_time_left;
     overtakingAids.PushToPassWaitTimeLeft = shared.push_to_pass.wait_time_left;
     return overtakingAids;
 }
        public float[] getTimeAndSectorsForBestOpponentLapInWindow(int lapsToCheck, CarData.CarClassEnum carClassToCheck)
        {
            CarData.CarClassEnum defaultCarClass = CarData.getDefaultCarClass().carClassEnum;
            float[] bestLapWithSectors =  new float[] { -1, -1, -1, -1 };
            foreach (KeyValuePair<Object, OpponentData> entry in OpponentData)
            {
                // if we don't know the opponent's car class, include him
                if (carClassToCheck == defaultCarClass || entry.Value.CarClass.carClassEnum == defaultCarClass || entry.Value.CarClass.carClassEnum == carClassToCheck)
                {
                    float[] thisOpponentsBest = entry.Value.getTimeAndSectorsForBestLapInWindow(lapsToCheck);
                    if (bestLapWithSectors[0] == -1 || (thisOpponentsBest[0] > 0 && thisOpponentsBest[0] < bestLapWithSectors[0]))
                    {
                        bestLapWithSectors = thisOpponentsBest;
                    }
                }
            }

            // special case for practice and qual - if we're looking for all the laps in the session, we might want to use the data sent by the game
            // because the play may have joined mid-session. In these cases there might be an historical lap (before the player joined) that's actually faster.
            if (lapsToCheck == -1 && SessionData.SessionFastestLapTimeFromGamePlayerClass > 0 &&
                (SessionData.PlayerLapTimeSessionBest == -1 || SessionData.PlayerLapTimeSessionBest > SessionData.SessionFastestLapTimeFromGamePlayerClass))
            {
                // the player isn't the fastest in his class. This means that the game-sent best lap data will be an opponent lap
                if (bestLapWithSectors[0] == -1 || bestLapWithSectors[0] > SessionData.SessionFastestLapTimeFromGamePlayerClass)
                {
                    // there's an historical lap which is quicker than all the data we currently hold. Due to limitations in the shared memory blocks,
                    // we never have sector times for this historical lap, so we have to remove them and disable sector deltas until a better lap is recorded
                    bestLapWithSectors[0] = SessionData.SessionFastestLapTimeFromGamePlayerClass;
                    bestLapWithSectors[1] = -1;
                    bestLapWithSectors[2] = -1;
                    bestLapWithSectors[3] = -1;
                }
            }
            return bestLapWithSectors;
        }
示例#35
0
        private void Fire_LS(object o)
        {
            try
            {
            GameData_LS package = new GameData_LS();

            /** TYRE TEMPERATURES **/
            try
            {
                if (Telemetry.m.Sim.Player.Tyre_Temperature_LF_Middle > 0)
                {
                    package.TyreTemperature_LF = Convert.ToByte(Limits(Telemetry.m.Sim.Player.Tyre_Temperature_LF_Middle - 273.16, 0, 150));
                    package.TyreTemperature_RF = Convert.ToByte(Limits(Telemetry.m.Sim.Player.Tyre_Temperature_RF_Middle - 273.16, 0, 150));
                    package.TyreTemperature_LR = Convert.ToByte(Limits(Telemetry.m.Sim.Player.Tyre_Temperature_LR_Middle - 273.16, 0, 150));
                    package.TyreTemperature_RR = Convert.ToByte(Limits(Telemetry.m.Sim.Player.Tyre_Temperature_RR_Middle - 273.16, 0, 150));
                }
            }
            catch (Exception ex)
            { }
            /** TYRE & BRAKE WEAR **/
            package.TyreWear_F = Convert.ToByte(200 * Limits(Telemetry.m.Sim.Drivers.Player.TyreWear_LF + Telemetry.m.Sim.Drivers.Player.TyreWear_RF, 0, 2) / 2.0);
            package.TyreWear_R = Convert.ToByte(200 * Limits(Telemetry.m.Sim.Drivers.Player.TyreWear_LR + Telemetry.m.Sim.Drivers.Player.TyreWear_RR, 0, 2) / 2.0);
            package.BrakeWear_F = 0;
            package.BrakeWear_R = 0;

            /** CURRENT FUEL INFO **/
            package.Fuel_Litre = Convert.ToUInt16(Limits(Telemetry.m.Sim.Player.Fuel, 0, 150) * 10);
            package.Fuel_Laps = 0;

            /** DRIVING TIMES **/
            package.Laptime_Last = Convert.ToSingle(Limits(Telemetry.m.Sim.Drivers.Player.LapTime_Last,0,1200));
            package.Laptime_Best = Convert.ToSingle(Limits(Telemetry.m.Sim.Drivers.Player.LapTime_Best,0,1200));
            switch (Telemetry.m.Sim.Drivers.Player.SectorsDriven % 3)
            {
                case 0:
                    package.Split_Sector = Telemetry.m.Sim.Drivers.Player.Sector_3_Last - Telemetry.m.Sim.Drivers.Player.Sector_3_Best;
                    break;
                case 1:
                    package.Split_Sector = Telemetry.m.Sim.Drivers.Player.Sector_1_Last - Telemetry.m.Sim.Drivers.Player.Sector_1_Best;
                    break;
                case 2:
                    package.Split_Sector = Telemetry.m.Sim.Drivers.Player.Sector_2_Last - Telemetry.m.Sim.Drivers.Player.Sector_2_Best;
                    break;

            }
            package.Split_Sector = Convert.ToSingle(Limits(package.Split_Sector, -2, 2));
            package.Split_Lap = Telemetry.m.Sim.Drivers.Player.LapTime_Best - Telemetry.m.Sim.Drivers.Player.LapTime_Last;
            package.Split_Lap = Convert.ToSingle(Limits(package.Split_Lap, -2, 2));

            package.RaceTime = (float)Limits(Telemetry.m.Sim.Session.Time - 30, 0, 3600);
            package.RaceLength = 3600;

            SendPackage(DashboardPackages.PACK_GAMEDATA_LS, ByteMethods.ToBytes(package));

            /*** Temporarely do cardata here as well ***/
            CarData cardata = new CarData();
            cardata.RPM_Max = Convert.ToUInt16(Limits(Telemetry.m.Sim.Player.Engine_RPM_Max_Live * rads_to_rpm,200,25000)-200);
            cardata.RPM_Idle = Convert.ToUInt16(Limits(Telemetry.m.Sim.Player.Engine_RPM_Idle_Max * rads_to_rpm,0,7000));

            //cardata.HP_Max = Convert.ToUInt16(EngineCurve.GetMaxHP());
            cardata.Gears = (byte)Limits(Telemetry.m.Sim.Drivers.Player.Gears,0, 10);
            cardata.Fuel_Max = (byte)Limits(Telemetry.m.Sim.Drivers.Player.Fuel_Max,0,100);

            cardata.GearRatio0 = Convert.ToSingle(Limits(GetGearRatio_Pure(0),0,20));
            cardata.GearRatio1 = Convert.ToSingle(Limits(GetGearRatio_Pure(1),0,20));
            cardata.GearRatio2 = Convert.ToSingle(Limits(GetGearRatio_Pure(2),0,20));
            cardata.GearRatio3 = Convert.ToSingle(Limits(GetGearRatio_Pure(3),0,20));
            cardata.GearRatio4 = Convert.ToSingle(Limits(GetGearRatio_Pure(4),0,20));
            cardata.GearRatio5 = Convert.ToSingle(Limits(GetGearRatio_Pure(5),0,20));
            cardata.GearRatio6 = Convert.ToSingle(Limits(GetGearRatio_Pure(6),0,20));
            cardata.GearRatio7 = Convert.ToSingle(Limits(GetGearRatio_Pure(7),0,20));

            //if (Telemetry.m.Sim.Name == "GTR2") // messy bugfix
            /*
            {
                cardata.GearRatio0 = 12.0f;
                cardata.GearRatio1 = cardata.GearRatio0 * 0.85f;
                cardata.GearRatio2 = cardata.GearRatio1 * 0.85f;
                cardata.GearRatio3 = cardata.GearRatio2 * 0.85f;
                cardata.GearRatio4 = cardata.GearRatio3 * 0.85f;
                cardata.GearRatio5 = cardata.GearRatio4 * 0.85f;
                cardata.GearRatio6 = cardata.GearRatio5 * 0.85f;
            }
            ShiftRpm r = new ShiftRpm();
             * cardata.RPM_Shift0 = cardata.RPM_Max;
            cardata.RPM_Shift1 = Convert.ToUInt16(r.Get(1, r.GetRatioBetween(1)));
            cardata.RPM_Shift2 = Convert.ToUInt16(r.Get(1, r.GetRatioBetween(2)));
            cardata.RPM_Shift3 = Convert.ToUInt16(r.Get(1, r.GetRatioBetween(3)));
            cardata.RPM_Shift4 = Convert.ToUInt16(r.Get(1, r.GetRatioBetween(4)));
            cardata.RPM_Shift5 = Convert.ToUInt16(r.Get(1, r.GetRatioBetween(5)));
            cardata.RPM_Shift6 = Convert.ToUInt16(r.Get(1, r.GetRatioBetween(6)));*/
            ShiftRpm r = new ShiftRpm();
            cardata.RPM_Shift0 = cardata.RPM_Max;
            cardata.RPM_Shift1 = (ushort)Limits(cardata.RPM_Max, 0, 25000);
            cardata.RPM_Shift2 = (ushort)Limits(cardata.RPM_Max, 0, 25000);
            cardata.RPM_Shift3 = (ushort)Limits(cardata.RPM_Max, 0, 25000);
            cardata.RPM_Shift4 = (ushort)Limits(cardata.RPM_Max, 0, 25000);
            cardata.RPM_Shift5 = (ushort)Limits(cardata.RPM_Max, 0, 25000);
            cardata.RPM_Shift6 = (ushort)Limits(cardata.RPM_Max, 0, 25000);
            cardata.RPM_Shift7 = (ushort)Limits(cardata.RPM_Max, 0, 25000);

            SendPackage(DashboardPackages.PACK_CARDATA, ByteMethods.ToBytes(cardata));

            // Send leds config..
            //return;
            string[] leds = System.IO.File.ReadAllLines("LEDs.csv");
            byte[] bf = new byte[leds.Length * 9 + 1];
            bf[0] = 0;
            int i = 1;
            int k = 0;
            foreach (string led in leds)
            {
                string[] data = led.Split(",".ToCharArray());

                bf[i] = (byte)(Convert.ToByte(data[4]));
                bf[i + 1] = (byte)(Convert.ToByte(data[1]));
                bf[i + 2] = (byte)(Convert.ToByte(data[2]));
                bf[i + 3] = (byte)(Convert.ToByte(data[3]));
                byte[] bf_tmp = BitConverter.GetBytes(0);
                bf[i + 4] = bf_tmp[0];
                bf[i + 5] = bf_tmp[1];
                bf[i + 6] = 64;
                bf[i + 7] = Convert.ToByte(k * 50 / 16);
                bf[i + 8] = 255;

                i += 9;
                k++;
            }
            SendPackage(DashboardPackages.PACK_PREFS_SHIFTBAR, bf);
            bf = new byte[leds.Length * 9 + 1];
            bf[0] = 1;
            i = 1;
            k = 0;
            foreach (string led in leds)
            {
                string[] data = led.Split(",".ToCharArray());

                bf[i] = 0;
                bf[i + 1] = 5;
                bf[i + 2] = 0;
                bf[i + 3] = 5;
                byte[] bf_tmp = BitConverter.GetBytes(600);
                bf[i + 4] = bf_tmp[0];
                bf[i + 5] = bf_tmp[1];
                bf[i + 6] = 50;
                bf[i + 7] = Convert.ToByte(((k % 2 == 0) ? 50 : 0));
                bf[i + 8] = 200;

                i += 9;
                k++;
            }
            SendPackage(DashboardPackages.PACK_PREFS_SHIFTBAR, bf);

            }
            catch (Exception ex)
            { }
            return;
        }
示例#36
0
 void Start()
 {
     StartRaceTime = 0f;
     data = new CarData[Cars.Length];
     for (int i = 0; i < Cars.Length; ++i)
     {
         data[i] = new CarData();
         data[i].Tag = Cars[i].tag;
         if (data[i].Tag == "PlayerCar")
         {
             PlayerCar = data[i];
         }
         CurrentLapGUIText.text = "1";
         Lap1TimeGUIText.text = TimeToString(0);
         Lap2TimeGUIText.text = "";
         Lap3TimeGUIText.text = "";
     }
     WinnerPanel.SetActive(false);
     for (int i = 0; i < WinnerNames.Length; ++i)
     {
         WinnerNames[i].text = "";
         WinnerTimes[i].text = "";
     }
     PausePanel.SetActive(false);
     RestartRaceMessage.SetActive(false);
 }
    public void InstantiateCars(int ind) {
        Vector3 pos;
        GameObject car;

		numCars = 0;
        if (ind == 0) {
            numCars = 1;
        } else if (ind == 1) {
            numCars = 2;
        } else {
            numCars = 4;
        }

        distances = new List<float>();

        for (int i = 0; i < numCars; ++i) {
			
			pos = new Vector3((10.0f * i) + transform.position.x, transform.position.y, transform.position.z);
			car = Instantiate(carPrefab, pos, transform.rotation) as GameObject;
            car.transform.name = "Car " + (i + 1);
            car.GetComponent<InputController>().SetCarId(i + 1);
            car.GetComponent<Engine>().carId = i + 1;
            Camera cam = car.transform.FindChild("mainCamera").GetComponent<Camera>();
            

            CarData carData = new CarData(i + 1, i + 1);
            cars.Add(carData);
            carTransforms.Add(car.transform);

            distances.Add(0.0f);

            switch (numCars) {
                case 2:
                    if (i == 0)
                    {
                        cam.rect = new Rect(new Vector2(0.0f, 0.5f), new Vector2(1.0f, 0.5f));
                        
                    } else
                    {
                        cam.rect = new Rect(new Vector2(0.0f, 0.0f), new Vector2(1.0f, 0.5f));
                        
                    }
                    break;
                case 4:
                    if (i == 0)
                    {
                        cam.rect = new Rect(new Vector2(0.0f, 0.5f), new Vector2(0.5f, 0.5f));
                        
                    } else if (i == 1)
                    {
                        cam.rect = new Rect(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f));
                        
                    } else if (i == 2)
                    {
                        cam.rect = new Rect(new Vector2(0.0f, 0.0f), new Vector2(0.5f, 0.5f));
                        
                    } else
                    {
                        cam.rect = new Rect(new Vector2(0.5f, 0.0f), new Vector2(0.5f, 0.5f));
                        
                    }
                    break;
                default:
                    break;
            }
        }

        if (addAICars) {
            for (int i=0; i<numberRacers-numCars; ++i) {
                //TODO: Instantiate AI cars
            }
        }
        raceInitialized = true;
        StartCoroutine("Countdown");
    }
示例#38
0
    static CarData GetCarDataFromFile(string __name)
    {
        CarData _carData = new CarData();

        try
        {
        #if UNITY_ANDROID && !UNITY_EDITOR

            WWW _www = new WWW(m_DataPath + "/" + __name + ".json");
            while (!_www.isDone)
            {
                continue;
            }
            if (_www.error != null)
                Debug.Log(_www.error);
            _carData = JsonMapper.ToObject<CarData>(_www.text);
        #else

            _carData = JsonMapper.ToObject<CarData>(File.ReadAllText(m_DataPath + "/" + __name + ".json"));
        #endif
        }
        catch (System.Exception ex)
        {
            Debug.Log("错误:" + ex.Message + "/r/n" + ex.StackTrace);
            return null;
        }
        return _carData;
    }
示例#39
0
 /// <summary>
 /// 获取指定车的数据
 /// </summary>
 /// <param name="__name"></param>
 /// <returns></returns>
 public static CarData GetCarDataByName(string __name)
 {
     CarData _carData = new CarData();
     if (m_carsData.TryGetValue(__name, out _carData))
     {
         return _carData;
     }
     else
     {
         Debug.LogError("指定的车数据不存在:" + __name);
         return null;
     }
 }