private void EnsureLapFinished(RequiredModel model) { if (!model.InMenus && model.LapNumber > _previousModel?.LapNumber) { LapFinished?.Invoke(this, model); } }
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; } } }