Example #1
0
 private void EnsureLapFinished(RequiredModel model)
 {
     if (!model.InMenus &&
         model.LapNumber > _previousModel?.LapNumber)
     {
         LapFinished?.Invoke(this, model);
     }
 }
Example #2
0
    Bot(StreamReader reader, StreamWriter writer, SendMsg join)
    {
        this.writer = writer;
        string line;

        send(join);

        while ((line = reader.ReadLine()) != null)
        {
            MsgWrapper msg = JsonConvert.DeserializeObject <MsgWrapper>(line);
            switch (msg.msgType)
            {
            case "yourCar":
                YourCar yourCar = JsonConvert.DeserializeObject <YourCar>(line);
                myCar    = new Car();
                myCar.id = yourCar.data;
                break;

            case "carPositions":
                CarPositions carPositions = JsonConvert.DeserializeObject <CarPositions>(line);
                UpdateCarPositions(carPositions.data);
                currentGameTick = carPositions.gameTick;
                //Console.WriteLine("Car startlaneindex:"+myCar.piecePosition.lane.startLaneIndex+" Car endlaneIndex:"+myCar.piecePosition.lane.endLaneIndex+" Current tick: "+carPositions.gameTick+ " Speed: "+myCar.speed);
                send(DetermineAction());
                previousAngle = myCar.angle;
                if (previousAngle < 0)
                {
                    previousAngle = -previousAngle;
                }
                prevThrottle = throttle;
                break;

            case "join":
                Console.WriteLine("Joined");
                break;

            case "crash":
                CrashMsg crashMsg = JsonConvert.DeserializeObject <CrashMsg>(line);
                if (myCar.HasId(crashMsg.data))                         //Houston we have crashed...
                {
                    constant           = constant * 0.9;
                    maxSpeedMultiplier = constant * friction;
                    Console.WriteLine("#######CRASH!!##############");
                    Console.WriteLine("Speed: " + myCar.speed);
                    Console.WriteLine("############################");
                }
                break;

            case "gameInit":
                Console.WriteLine("Race init");
                GameInit gameInit = JsonConvert.DeserializeObject <GameInit>(line);
                currentTrack = CreateTrack(gameInit);
                otherCars    = new Cars(gameInit.data.race.cars);
                otherCars.cars.Remove(otherCars.GetCarById(myCar.id));
                break;

            case "gameEnd":
                Console.WriteLine("Race ended");
                break;

            case "gameStart":
                Console.WriteLine("Race starts");
                currentGameTick = 0;
                send(new Ping());
                break;

            case "turboAvailable":
                turboAvailable = true;
                Turbo turbo = JsonConvert.DeserializeObject <Turbo>(line);
                turboDetails    = turbo.data;
                currentGameTick = turbo.gameTick;
                break;

            case "lapFinished":
                LapFinished lapFinished = JsonConvert.DeserializeObject <LapFinished>(line);
                if (myCar.HasId(lapFinished.data.car))
                {
                    if (lapMaxAngle < 10)
                    {
                        constant           = constant * 1.4;
                        maxSpeedMultiplier = constant * friction;
                    }
                    else if (lapMaxAngle < 20)
                    {
                        constant           = constant * 1.3;
                        maxSpeedMultiplier = constant * friction;
                    }
                    else if (lapMaxAngle < 30)
                    {
                        constant           = constant * 1.2;
                        maxSpeedMultiplier = constant * friction;
                    }
                    else if (lapMaxAngle < 50)
                    {
                        constant           = constant * 1.1;
                        maxSpeedMultiplier = constant * friction;
                    }
                    Console.WriteLine("Lap finished, new spdmulti: " + maxSpeedMultiplier);
                }
                break;

            default:
                Console.WriteLine(line);
                break;
            }
        }
    }