Hot Liquid + Battery Juice Working

This commit is contained in:
Starystars67 2020-05-18 21:03:32 +01:00
parent 3dff45fc31
commit 098a78dc69
7 changed files with 332 additions and 0 deletions

View File

@ -0,0 +1,105 @@
local M = {}
print("Fuel Stations Initialising...")
local map = ""
local debug = false
local cVeh = 0
local stations = {
["/levels/east_coast_usa/info.json"] = {
{vec3(-778.813, 485.973, 23.4637), vec3(-778.813, 485.973, 25.4637), "Gas"},
{vec3(-776.504, 488.427, 23.4637), vec3(-776.504, 488.427, 25.4637), "Gas"},
{vec3(-775.036, 490.828, 23.4637), vec3(-775.036, 490.828, 25.4637), "Gas"},
{vec3(-772.457, 493.484, 23.4637), vec3(-772.457, 493.484, 25.4637), "Gas"},
{vec3(-770.871, 495.714, 23.4637), vec3(-770.871, 495.714, 25.4637), "Gas"},
{vec3(-768.417, 498.436, 23.4637), vec3(-768.417, 498.436, 25.4637), "Gas"},
{vec3(704.304, -23.125, 51.8), vec3(704.304, -23.125, 55.0), "Gas"},
{vec3(708.497, -23.3151, 51.8), vec3(708.497, -23.3151, 55.0), "Gas"},
{vec3(711.115, -23.5511, 51.8), vec3(711.115, -23.5511, 55.0), "Gas"},
{vec3(714.968, -23.6462, 51.8), vec3(714.968, -23.6462, 55.0), "Gas"},
{vec3(717.763, -23.9071, 51.8), vec3(717.763, -23.9071, 55.0), "Gas"},
{vec3(721.414, -24.0725, 51.8), vec3(721.414, -24.0725, 55.0), "Gas"},
{vec3(625.651, -183.448, 53.0), vec3(625.651, -183.448, 55.0), "EV"},
{vec3(622.667, -186.129, 53.0), vec3(622.667, -186.129, 55.0), "EV"},
{vec3(619.97, -189.098, 53.0), vec3(619.97, -189.098, 55.0), "EV"},
{vec3(617.164, -192.107, 53.0), vec3(617.164, -192.107, 55.0), "EV"},
}
}
local function distance (pos1, pos2, useZ)
local dx = pos1.x - pos2.x
local dy = pos1.y - pos2.y
local dz = pos1.z - pos2.z
if useZ then
return math.sqrt ( dx * dx + dy * dy + dz * dz )
else
return math.sqrt ( dx * dx + dy * dy )
end
end
local function IsEntityInsideArea(pos1, pos2)
if distance(pos1, pos2, true) < 1 then
return true
else
return false
end
end
local function addFuel()
--print("Should i add fuel?")
local veh = be:getObjectByID(cVeh)
if veh then
print("[Fuel Stations] [GE] Calling Add Fuel VE")
veh:queueLuaCommand("fuelStation.addFuel()")
end
end
local function onVehicleSwitched(oldID, newID)
print("[Fuel Stations] Active Vehicle Switched : "..oldID.." - "..newID)
cVeh = newID
end
local function onVehicleSpawned(gameVehicleID)
--print("[BeamMP] Vehicle spawned : "..gameVehicleID)
local veh = be:getObjectByID(gameVehicleID)
veh:queueLuaCommand("extensions.addModulePath('lua/vehicle/extensions/FuelStation')") -- Load lua files
veh:queueLuaCommand("extensions.loadModulesInDirectory('lua/vehicle/extensions/FuelStation')")
end
local function onUpdate()
local atStation = false
if debug then
debugDrawer:drawTextAdvanced(be:getObject(0):getPosition(), String(" "..tostring(be:getObject(0):getPosition())), ColorF(194/255, 55/255, 55/255, 255/255), true, false, ColorI(0,0,0,127))
end
map = getMissionFilename()
for k = 1, #stations[map] do
local color = 0
if stations[map][k][3] == "EV" then
color = ColorF(0.0,0.9,0.1,0.5)
else
color = ColorF(0.9,0.1,0.1,0.5)
end
debugDrawer:drawCylinder(stations[map][k][1]:toPoint3F(), stations[map][k][2]:toPoint3F(), 1, color)
for i = 0, be:getObjectCount() -1 do -- For each vehicle
local veh = be:getObject(i) -- Get vehicle
if IsEntityInsideArea(veh:getPosition(), stations[map][k][1]) then
-- we are inside one of the filling areas of the map
--ui_message("Press E To Refuel")
atStation = true
be:executeJS('fuelUIShowHide("true", "'..stations[map][k][3]..'")')
break
end
end
end
if not atStation then -- We are not in a spot for filling then we should force the UI to be hidden
be:executeJS('fuelUIShowHide("false")')
end
end
M.onUpdate = onUpdate
M.addFuel = addFuel
M.onVehicleSwitched = onVehicleSwitched
M.onVehicleSpawned = onVehicleSpawned
print("Fuel Stations Loaded")
return M

View File

@ -0,0 +1,53 @@
local M = {}
print("[Fuel Stations] [VE] Loaded")
local function addFuel()
print("[Fuel Stations] [VE] Add Fuel Called")
if energyStorage.getStorage('mainTank') ~= nil then
local Tank = energyStorage.getStorage('mainTank').remainingRatio
if Tank < 1 then
local Level = Tank + 0.005
print("Adding Fuel: "..Level)
energyStorage.getStorage('mainTank'):setRemainingRatio(Level)
else
energyStorage.getStorage('mainTank'):setRemainingRatio(1.0)
end
end
if energyStorage.getStorage('mainBattery') ~= nil then
local Battery = energyStorage.getStorage('mainBattery').remainingRatio
if Battery < 1 then
local Level = Battery + 0.005
print("Adding Fuel: "..Level)
energyStorage.getStorage('mainBattery'):setRemainingRatio(Level)
else
energyStorage.getStorage('mainBattery'):setRemainingRatio(1.0)
end
end
if energyStorage.getStorage('mainTankL') ~= nil then
local Tank = energyStorage.getStorage('mainTankL').remainingRatio
if Tank < 1 then
local Level = Tank + 0.005
print("Adding Fuel: "..Level)
energyStorage.getStorage('mainTankL'):setRemainingRatio(Level)
else
energyStorage.getStorage('mainTankL'):setRemainingRatio(1.0)
end
end
if energyStorage.getStorage('mainTankR') ~= nil then
local Tank = energyStorage.getStorage('mainTankR').remainingRatio
if Tank < 1 then
local Level = Tank + 0.005
print("Adding Fuel: "..Level)
energyStorage.getStorage('mainTankR'):setRemainingRatio(Level)
else
energyStorage.getStorage('mainTankR'):setRemainingRatio(1.0)
end
end
end
M.addFuel = addFuel
return M

View File

@ -0,0 +1,2 @@
load("fuelStations")
registerCoreModule("fuelStations")

View File

@ -0,0 +1,95 @@
<div ng-controller="fuelstation" id="fuelstation" class="fuelstation" ng-style="{'width': '100%', 'height': '100%'}" ng-init="init()">
<style id="applicationStylesheet" type="text/css">
.Background {
position: absolute;
overflow: visible;
width: 470px;
height: 309px;
left: 0px;
top: 0px;
}
#Gallon {
position: absolute;
left: 38px;
top: 46px;
overflow: visible;
width: 143px;
white-space: nowrap;
text-align: left;
font-family: Segoe UI;
font-style: normal;
font-weight: normal;
font-size: 50px;
color: rgba(255,255,255,1);
}
#Price {
position: absolute;
left: 38px;
top: 140px;
overflow: visible;
width: 108px;
white-space: nowrap;
text-align: left;
font-family: Segoe UI;
font-style: normal;
font-weight: normal;
font-size: 50px;
color: rgba(255,255,255,1);
}
#Fuel_served_at_5_degrees {
position: absolute;
left: 145px;
top: 227px;
overflow: visible;
width: 151px;
white-space: nowrap;
text-align: left;
font-family: Segoe UI;
font-style: normal;
font-weight: normal;
font-size: 14px;
color: rgba(255,255,255,1);
}
#AddFuel {
position: absolute;
right: -40px;
bottom: 130px;
overflow: visible;
width: 151px;
white-space: nowrap;
text-align: left;
font-family: Segoe UI;
font-style: normal;
font-weight: normal;
font-size: 14px;
color: rgba(255,255,255,1);
}
input.fuelStationNumberValue {
width: 250px;
right: -270px;
position: absolute;
}
button {
font-size: 30px;
}
</style>
<svg class="Background">
<rect fill="rgba(113,113,113,1)" stroke="rgba(255,255,255,1)" stroke-width="1px" stroke-linejoin="miter" stroke-linecap="butt" stroke-miterlimit="4" shape-rendering="auto" id="Background" rx="26" ry="26" x="0" y="0" width="470" height="309">
</rect>
</svg>
<div id="Gallon">
<span id="GasNote">Gallon</span>
<span id="EVNote">p/Kw</span>
<input type="number" name="" value="2.73" class="fuelStationNumberValue" disabled>
</div>
<div id="Price">
<span>Price</span>
<input type="number" name="" value="0.0" class="fuelStationNumberValue" style="right: -305px;" disabled id="FuelValueIncreasedBy">
</div>
<div id="Fuel_served_at_5_degrees">
<span id="FuelNote">Fuel served at 5 degrees</span>
</div>
<div id="AddFuel">
<button id="ActionButton" type="button" ng-mousedown='addFuel()' ng-mouseup="stopAddFuel()">Fuel</button>
</div>
</div>

View File

@ -0,0 +1,63 @@
var app = angular.module('beamng.apps');
app.directive('fuelstation', ['UiUnits', function (UiUnits) {
return {
templateUrl: 'modules/apps/FuelStation/app.html',
replace: true,
restrict: 'EA',
scope: true
}
}]);
app.controller("fuelstation", ['$scope', 'bngApi', '$interval', function ($scope, bngApi, $interval) {
$scope.init = function() {
};
$scope.reset = function() {
$scope.init();
};
$scope.select = function() {
bngApi.engineLua('setCEFFocus(true)');
};
var promise;
$scope.addFuel = function() {
if(promise){
$interval.cancel(promise);
}
promise = $interval(function () {
var v = document.querySelector('#FuelValueIncreasedBy').value;
document.querySelector('#FuelValueIncreasedBy').value = parseFloat(v) + 0.1;
bngApi.engineLua('fuelStations.addFuel(true)');
}, 100);
};
$scope.stopAddFuel = function () {
$interval.cancel(promise);
promise = null;
};
}]);
function fuelUIShowHide(b, t) {
//console.log("fuelUIShowHide("+b+")")
if (b == "true") {
if (document.querySelector('#fuelstation').style.display == "none") {
document.querySelector('#fuelstation').style.display = "block";
document.querySelector('#FuelValueIncreasedBy').value = 0.0;
if (t == "EV") {
document.querySelector('#EVNote').style.display = "";
document.querySelector('#GasNote').style.display = "none";
document.querySelector('#FuelNote').style.display = "none";
document.querySelector('#ActionButton').innerHTML = "Charge";
} else {
document.querySelector('#GasNote').style.display = "";
document.querySelector('#EVNote').style.display = "none";
document.querySelector('#FuelNote').style.display = "";
document.querySelector('#ActionButton').innerHTML = "Fuel";
}
}
} else if (b == "false") {
document.querySelector('#fuelstation').style.display = "none";
}
}

View File

@ -0,0 +1,14 @@
{
"name": "Fuel Station UI",
"author": "Titch2000",
"version": "0.2",
"description": "Fuel Station UI",
"directive": "fuelstation",
"domElement": "<fuelstation></fuelstation>",
"css": {
"left": "180px",
"bottom": "0px",
"width": "471px",
"height": "309px"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB