public static void InstantiateCarObject(RaceStarterModel raceStarter, int trackIndex)
    {
        var carInstance = Instantiate(_racingCarsFactory.CarPrefabInstance, _racingCarsFactory.RacingCarsSpawnPoints[trackIndex], false) as GameObject;

        carInstance.GetComponent <VehicelController>().InitRaceStarter(raceStarter);

        DecorateCarInstanceByConfig(raceStarter, carInstance);
    }
示例#2
0
 public static void FinishGame(GameObject carThatFinished)
 {
     if (!_isGameFinished)
     {
         PanelManager.ShowPanelWithId(_carRacingGameManager.PanelIdToDisplayWhenFinished);
         RaceStarterModel starterCar = carThatFinished.transform.parent.gameObject.GetComponent <VehicelController>().RaceStarter;
         _carRacingGameManager.whoWonText.text = starterCar.BrandModel.BrandModelTypeLevel.ToString().ToLower() + " won!";
         _isGameFinished = true;
     }
 }
    private void RegisterRaceStarterCar(StarterConfigInputs config, int trackIndex)
    {
        RaceStarterModel racer = RacingCarsFactory.MakeRaceStarter(config);

        DataCenter.RegisterRaceStarters(racer);
        RacingCarsFactory.InstantiateCarObject(racer, trackIndex);

        UserCarSettings userSettings = RacingCarsFactory.MakeUserSettings(config, racer.RaceStarterId);

        Repository.SaveCarStartersConfigs(userSettings);
    }
    public static RaceStarterModel MakeRaceStarter(StarterConfigInputs starterInputConfigs)
    {
        var raceStarter = new RaceStarterModel();

        raceStarter.RaceStarterId = GenerateStarterId();
        raceStarter.BrandModel    = new BrandModel((BrandModel.BrandModelType)starterInputConfigs.SelectCarBranModelDdl.value);
        raceStarter.Color         = new ColorModel((ColorModel.BodyColor)starterInputConfigs.SelectCarColorDdl.value);
        raceStarter.Tire          = new TireModel((TireModel.TireType)starterInputConfigs.SelectCarTireDdl.value);
        raceStarter.VehicleBody   = new VehicleBodyModel((VehicleBodyModel.VehicleType)starterInputConfigs.SelectCarBodyDdl.value);
        raceStarter.Engine        = new EngineModel((EngineModel.EngineType)starterInputConfigs.SelectCarEngineDdl.value);
        return(raceStarter);
    }
示例#5
0
 public void InitRaceStarter(RaceStarterModel raceStarter)
 {
     if (!StarterIdObjectInstance.ContainsKey(raceStarter.RaceStarterId))
     {
         StarterIdObjectInstance.Add(raceStarter.RaceStarterId, this.gameObject);
     }
     else
     {
         StarterIdObjectInstance[raceStarter.RaceStarterId] = this.gameObject;
     }
     this.RaceStarter = raceStarter;
     this._velocity   = raceStarter.RaceStarterVelocity;
     this._canMove    = true;
 }
示例#6
0
 public static void RegisterRaceStarters(RaceStarterModel raceStarter)
 {
     GeneratedRaceStarters.Add(raceStarter);
     //Debug.Log("reguistirao sam " + raceStarter.Color.BodyColorSelection + " c" + raceStarter.Engine.EngineTypeLevel + " e");
 }
    //adjust car sprite color, spawn objects if needed by config demand (machine gun , parachute, bigger tires, etc...)
    private static void DecorateCarInstanceByConfig(RaceStarterModel raceStarter, GameObject carInstance)
    {
        var carSprite = carInstance.GetComponent <SpriteRenderer>();

        //put the appropriate car class sprite (van, ambulance, viper, bmw... whatever)
        switch (raceStarter.BrandModel.BrandModelTypeLevel)
        {
        case BrandModel.BrandModelType.Ambulance:
            carSprite.sprite = _racingCarsFactory.CarSpriteAmbulance;
            break;

        case BrandModel.BrandModelType.Police:
            carSprite.sprite = _racingCarsFactory.CarSpritePolice;
            break;

        case BrandModel.BrandModelType.Taxi:
            carSprite.sprite = _racingCarsFactory.CarSpriteTaxi;
            break;

        case BrandModel.BrandModelType.Van:
            carSprite.sprite = _racingCarsFactory.CarSpriteVan;
            break;

        case BrandModel.BrandModelType.CommonCityCar:
            carSprite.sprite = _racingCarsFactory.CarSpriteCommonCityCar;
            break;

        default:
            carSprite.sprite = _racingCarsFactory.CarSpriteAmbulance;
            break;
        }


        //color the car as needed
        switch (raceStarter.Color.BodyColorSelection)
        {
        case ColorModel.BodyColor.White:
            carSprite.color = Color.white;
            break;

        case ColorModel.BodyColor.Black:
            carSprite.color = Color.black;
            break;

        case ColorModel.BodyColor.Red:
            carSprite.color = Color.red;
            break;

        case ColorModel.BodyColor.Green:
            carSprite.color = Color.green;
            break;

        default:
            break;
        }

        //put appropriate tire size as needed
        var tireSpawnSlots = carInstance.transform;

        switch (raceStarter.Tire.TireTypeLevel)
        {
        case TireModel.TireType.BasicRoadTires:
            break;

        case TireModel.TireType.WinterTires:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.tireSpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.WinterCarTire, carInstance.transform.GetChild(i).gameObject.transform, false);
                }
            }
            break;

        case TireModel.TireType.UltraBigTires:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.tireSpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.BigCarTire, carInstance.transform.GetChild(i).gameObject.transform, false);
                }
            }
            break;

        case TireModel.TireType.NoTires:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.tireSpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.NoCarTires, carInstance.transform.GetChild(i).gameObject.transform, false);
                }
            }
            break;

        default:
            break;
        }


        //set machine gun/parachute/stereo or nothing as needed
        switch (raceStarter.VehicleBody.VehicleTypeLevel)
        {
        case VehicleBodyModel.VehicleType.BasicCarBody:
            break;

        case VehicleBodyModel.VehicleType.BodyWithMachineGun:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.bodySpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.CarMachineGun, carInstance.transform.GetChild(i).gameObject.transform, false);
                    break;
                }
            }
            break;

        case VehicleBodyModel.VehicleType.BodyWithSpeakers:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.bodySpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.CarSpeaker, carInstance.transform.GetChild(i).gameObject.transform, false);
                    break;
                }
            }
            break;

        case VehicleBodyModel.VehicleType.WithParachute:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.bodySpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.CarParachute, carInstance.transform.GetChild(i).gameObject.transform, false);
                    break;
                }
            }
            break;

        default:
            break;
        }

        //put rocket engine if/as needed
        switch (raceStarter.Engine.EngineTypeLevel)
        {
        case EngineModel.EngineType.V8Engine:
            break;

        case EngineModel.EngineType.V8Turbo:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.engineSpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.CarTurboEngine, carInstance.transform.GetChild(i).gameObject.transform, false);
                    break;
                }
            }
            break;

        case EngineModel.EngineType.V8UltraTurbo:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.engineSpawnSlotTag.ToLower())
                {
                    Instantiate(_racingCarsFactory.CarUltraTurboEngine, carInstance.transform.GetChild(i).gameObject.transform, false);
                    break;
                }
            }
            break;

        case EngineModel.EngineType.RocketEngine:
            for (int i = 0; i < carInstance.transform.childCount; i++)
            {
                Debug.Log("na tagu sam " + carInstance.transform.GetChild(i).gameObject.tag + " to nije jednako " + _racingCarsFactory.engineSpawnSlotTag);
                if (carInstance.transform.GetChild(i).gameObject.tag.ToLower() == _racingCarsFactory.engineSpawnSlotTag.ToLower())
                {
                    Debug.Log("instnaciram rocket engine");
                    Instantiate(_racingCarsFactory.CarRocketEngine, carInstance.transform.GetChild(i).gameObject.transform, false);
                    break;
                }
            }
            break;

        default:
            break;
        }
    }
 void IRacingCarsFactory.InstantiateCarObject(RaceStarterModel raceStarter, int trackIndex)
 {
     InstantiateCarObject(raceStarter, trackIndex);
 }