-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRoROdometer.as
More file actions
68 lines (56 loc) · 2.21 KB
/
Copy pathRoROdometer.as
File metadata and controls
68 lines (56 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Base implementation of RoROdometer.
// This file is under the MIT License. See LICENSE for details.
// Copyright (C) 2026 Ezequiel M.
namespace RoROdometer
{
const string OdometerScriptIDCVarName = "app_odometer_script_id";
shared abstract class Odometer
{
double GetMainOdometer() { return 0; }
double GetTripOdometer() { return 0; }
void ResetTripOdometer() {}
string GetVehicleName() { return ""; }
string GetVehicleTruckfile() { return ""; }
string GetVehicleConfigName() { return ""; }
}
shared abstract class OdometerHelper
{
array<string>@ GetOdometerKeys() { return null; }
Odometer@ TryGetOdometerByKey(string odometerKey) { return null; }
Odometer@ TryGetOdometerByActor(BeamClass@ vehicle) { return null; }
bool TryRemoveOdometerByKey(string odometerKey) { return false; }
bool TryRemoveOdometerByActor(BeamClass@ vehicle) { return false; }
}
string ValidateVariableName(string varName)
{
for (uint i = 0; i < varName.length(); i++)
{
uint8 character = varName[i];
bool isNumeric = character >= 48 && character <= 57;
bool isAlpha = (character >= 65 && character <= 90) || (character >= 97 && character <= 122);
if (!isNumeric && !isAlpha)
varName[i] = 95; // _ char
}
return varName;
}
string GetVehicleID(BeamClass@ vehicle)
{
string vehicleID = vehicle.getTruckFileName();
if (vehicle.getSectionConfig() != "")
vehicleID += "_" + vehicle.getSectionConfig();
return ValidateVariableName(vehicleID);
}
OdometerHelper@ GetOdometerHelper()
{
OdometerHelper@ reader = null;
CVarClass@ odometerScriptIDCVar = console.cVarFind(OdometerScriptIDCVarName);
if (@odometerScriptIDCVar != null && odometerScriptIDCVar.getStr() != "")
{
int odometerScriptID = parseInt(odometerScriptIDCVar.getStr());
ScriptRetCode result = game.getScriptVariable("OdometerHelper", @reader, odometerScriptID);
if (result != 0)
@reader = null;
}
return reader;
}
}