From e7672d7b668959968916c36171abae1e3f65dd7a Mon Sep 17 00:00:00 2001 From: kakukri Date: Tue, 29 Dec 2015 01:00:14 +0000 Subject: [PATCH] Add minimal dashboard support for pitting to simuv2.1. git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@6319 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 44b3eee065f29aa7acd6f32013885da02071f6b5 Former-commit-id: 25a0371a336c667e8a77e2473ba6514229caa40b --- src/modules/simu/simuv2.1/car.cpp | 46 ++++++++++++++++++++++++++++++ src/modules/simu/simuv2.1/simu.cpp | 1 + 2 files changed, 47 insertions(+) diff --git a/src/modules/simu/simuv2.1/car.cpp b/src/modules/simu/simuv2.1/car.cpp index 5c3a625d..4990172d 100644 --- a/src/modules/simu/simuv2.1/car.cpp +++ b/src/modules/simu/simuv2.1/car.cpp @@ -137,6 +137,44 @@ SimCarConfig(tCar *car) car->corner[REAR_LFT].pos.x = (tdble) (- car->dimension.x * .5 - car->statGC.x); car->corner[REAR_LFT].pos.y = (tdble) (overallwidth * .5 - car->statGC.y); car->corner[REAR_LFT].pos.z = 0; + + /* minimal dashboard initialization */ + tPrivCar *priv = &(car->carElt->priv); + tCarSetup *setup = &(car->carElt->setup); + + priv->dashboardInstantNb = 0; + + setup->fuel.min = 0.0; + setup->fuel.max = car->tank; + setup->fuel.value = car->fuel; + setup->fuel.desired_value = car->fuel; + setup->fuel.stepsize = 1.0; + setup->fuel.changed = FALSE; + + setup->reqRepair.min = setup->reqRepair.value = setup->reqRepair.max = 0.0; + setup->reqRepair.desired_value = 0.0; + setup->reqRepair.stepsize = 500; + setup->reqRepair.changed = FALSE; + + setup->reqPenalty.min = 0.0; + setup->reqPenalty.max = 1.0; + setup->reqPenalty.value = 0.0; + setup->reqPenalty.desired_value = 0.0; //0.0 means refuel/repair next, 1.0 means serve penalty next + setup->reqPenalty.stepsize = 1.0; + setup->reqPenalty.changed = FALSE; + + priv->dashboardRequest[0].type = DI_FUEL; + priv->dashboardRequest[0].setup = &(setup->fuel); + priv->dashboardRequest[1].type = DI_REPAIR; + priv->dashboardRequest[1].setup = &(setup->reqRepair); + priv->dashboardRequest[2].type = DI_PENALTY; + priv->dashboardRequest[2].setup = &(setup->reqPenalty); + priv->dashboardRequestNb = 3; + priv->dashboardActiveItem = 0; + for (i = 3; i < NR_DI_REQUEST; i++) { + priv->dashboardRequest[i].type = DI_NONE; + priv->dashboardRequest[i].setup = NULL; + } } @@ -434,6 +472,14 @@ SimCarUpdate(tCar *car, tSituation * /* s */) CHECK(car); SimCarCollideXYScene(car); CHECK(car); + + /* update car->carElt->setup.reqRepair with damage */ + tCarSetupItem *repair = &(car->carElt->setup.reqRepair); + if ((repair->desired_value > 0.0) && (repair->max == repair->desired_value)) { + repair->max = repair->desired_value = car->dammage; + } else { + repair->max = car->dammage; + } } void diff --git a/src/modules/simu/simuv2.1/simu.cpp b/src/modules/simu/simuv2.1/simu.cpp index b5ed4456..9919f87e 100644 --- a/src/modules/simu/simuv2.1/simu.cpp +++ b/src/modules/simu/simuv2.1/simu.cpp @@ -156,6 +156,7 @@ SimReConfig(tCarElt *carElt) car->dammage -= carElt->pitcmd.repair; if (car->dammage < 0) car->dammage = 0; } + carElt->setup.reqRepair.desired_value = 0.0; }