Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slightly reduced memory footprint of API structs and enums #1732

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 2 additions & 4 deletions TLM/TLM/UI/Helpers/DropDownOption.cs
Expand Up @@ -9,7 +9,7 @@ namespace TrafficManager.UI.Helpers {
using TrafficManager.Util;

public class DropDownOption<TEnum> : SerializableUIOptionBase<TEnum, UIDropDown, DropDownOption<TEnum>>
where TEnum : struct, Enum, IConvertible {
where TEnum : Enum, IConvertible {
private UILabel _dropdownLabel;

public DropDownOption(string fieldName, Scope scope = Scope.Savegame)
Expand Down Expand Up @@ -38,9 +38,7 @@ public DropDownOption(string fieldName, Scope scope = Scope.Savegame)
}

public override void Load(byte data) {
unchecked {
Value = (TEnum)(IConvertible)(int)data;
}
Value = (TEnum)(object)data;
}

public override byte Save() => Value.ToByte(null);
Expand Down
3 changes: 3 additions & 0 deletions TLM/TMPE.API/Traffic/Data/ExtBuilding.cs
@@ -1,4 +1,7 @@
namespace TrafficManager.API.Traffic.Data {
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Auto)]
public struct ExtBuilding {
/// <summary>
/// Building id
Expand Down
2 changes: 2 additions & 0 deletions TLM/TMPE.API/Traffic/Data/ExtCitizen.cs
@@ -1,6 +1,8 @@
namespace TrafficManager.API.Traffic.Data {
using System.Runtime.InteropServices;
using TrafficManager.API.Traffic.Enums;

[StructLayout(LayoutKind.Auto)]
public struct ExtCitizen {
public uint citizenId;

Expand Down
5 changes: 3 additions & 2 deletions TLM/TMPE.API/Traffic/Data/ExtCitizenInstance.cs
@@ -1,7 +1,8 @@
namespace TrafficManager.API.Traffic.Data {
using System;
using System.Runtime.InteropServices;
using TrafficManager.API.Traffic.Enums;

[StructLayout(LayoutKind.Auto)]
public struct ExtCitizenInstance {
public ushort instanceId;

Expand Down Expand Up @@ -123,7 +124,7 @@ public struct ExtCitizenInstance {
/// <param name="state"></param>
/// <returns></returns>
public static ExtSoftPathState ConvertPathStateToSoftPathState(ExtPathState state) {
return (ExtSoftPathState)((int)state);
return (ExtSoftPathState)((byte)state);
}
}
}
2 changes: 2 additions & 0 deletions TLM/TMPE.API/Traffic/Data/ExtNode.cs
@@ -1,8 +1,10 @@
namespace TrafficManager.API.Traffic.Data {
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using CSUtil.Commons;

[StructLayout(LayoutKind.Auto)]
public struct ExtNode : IEquatable<ExtNode> {
/// <summary>
/// Node id
Expand Down
2 changes: 2 additions & 0 deletions TLM/TMPE.API/Traffic/Data/ExtSegment.cs
@@ -1,6 +1,8 @@
namespace TrafficManager.API.Traffic.Data {
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Auto)]
public struct ExtSegment : IEquatable<ExtSegment> {
/// <summary>
/// Segment id
Expand Down
3 changes: 2 additions & 1 deletion TLM/TMPE.API/Traffic/Data/ExtSegmentEnd.cs
@@ -1,10 +1,11 @@
namespace TrafficManager.API.Traffic.Data
{
using System;
using CSUtil.Commons;
using System.Runtime.InteropServices;
using TrafficManager.API.Traffic.Enums;
using UnityEngine;

[StructLayout(LayoutKind.Auto)]
public struct ExtSegmentEnd : IEquatable<ExtSegmentEnd>
{
/// <summary>
Expand Down
3 changes: 2 additions & 1 deletion TLM/TMPE.API/Traffic/Data/ExtVehicle.cs
@@ -1,7 +1,8 @@
namespace TrafficManager.API.Traffic.Data {
using System;
using System.Runtime.InteropServices;
using TrafficManager.API.Traffic.Enums;

[StructLayout(LayoutKind.Auto)]
public struct ExtVehicle {
public ushort vehicleId;
public uint lastPathId;
Expand Down
3 changes: 2 additions & 1 deletion TLM/TMPE.API/Traffic/Data/LaneTrafficData.cs
@@ -1,6 +1,7 @@
namespace TrafficManager.API.Traffic.Data {
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Auto)]
public struct LaneTrafficData {
/// <summary>
/// Number of seen vehicles since last speed measurement
Expand Down
2 changes: 2 additions & 0 deletions TLM/TMPE.API/Traffic/Data/PathCreationArgs.cs
@@ -1,6 +1,8 @@
namespace TrafficManager.API.Traffic.Data {
using System.Runtime.InteropServices;
using TrafficManager.API.Traffic.Enums;

[StructLayout(LayoutKind.Auto)]
public struct PathCreationArgs {
/// <summary>
/// Extended path type
Expand Down
3 changes: 2 additions & 1 deletion TLM/TMPE.API/Traffic/Data/PathUnitQueueItem.cs
@@ -1,7 +1,8 @@
namespace TrafficManager.API.Traffic.Data {
using System;
using System.Runtime.InteropServices;
using TrafficManager.API.Traffic.Enums;

[StructLayout(LayoutKind.Auto)]
public struct PathUnitQueueItem {
public uint nextPathUnitId; // access requires acquisition of CustomPathFind.QueueLock
public ExtVehicleType vehicleType; // access requires acquisition of m_bufferLock
Expand Down
3 changes: 2 additions & 1 deletion TLM/TMPE.API/Traffic/Data/TurnOnRedSegments.cs
@@ -1,9 +1,10 @@
namespace TrafficManager.API.Traffic.Data {
using System;
using System.Runtime.InteropServices;

/// <summary>
/// Holds left/right turn-on-red candidate segments
/// </summary>
[StructLayout(LayoutKind.Auto)]
public struct TurnOnRedSegments {
/// <summary>
/// Left segment id (or 0 if no left turn-on-red candidate segment)
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/CarUsagePolicy.cs
Expand Up @@ -2,7 +2,7 @@ namespace TrafficManager.API.Traffic.Enums {
/// <summary>
/// Indicates if a private car [may]/[shall]/[must not] be used
/// </summary>
public enum CarUsagePolicy {
public enum CarUsagePolicy : byte {
/// <summary>
/// Citizens may use their own car
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ExtParkingSpaceLocation.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum ExtParkingSpaceLocation {
public enum ExtParkingSpaceLocation : byte {
/// <summary>
/// No parking space location
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ExtPathMode.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum ExtPathMode {
public enum ExtPathMode : byte {
None = 0,

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ExtPathState.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum ExtPathState {
public enum ExtPathState : byte {
/// <summary>
/// No path
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ExtPathType.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum ExtPathType {
public enum ExtPathType : byte {
/// <summary>
/// Mixed path
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ExtSoftPathState.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum ExtSoftPathState {
public enum ExtSoftPathState : byte {
/// <summary>
/// No path
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ExtTransportMode.cs
Expand Up @@ -2,7 +2,7 @@ namespace TrafficManager.API.Traffic.Enums {
using System;

[Flags]
public enum ExtTransportMode {
public enum ExtTransportMode : byte {
/// <summary>
/// No information about which mode of transport is used
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ExtVehicleFlags.cs
Expand Up @@ -3,7 +3,7 @@ namespace TrafficManager.API.Traffic.Enums {

// TODO why do we need this?
[Flags]
public enum ExtVehicleFlags {
public enum ExtVehicleFlags : byte {
None = 0,
Created = 1,
Spawned = 1 << 1,
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/LaneEndTransitionType.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum LaneEndTransitionType {
public enum LaneEndTransitionType : byte {
/// <summary>
/// No connection
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/ParkedCarApproachState.cs
Expand Up @@ -2,7 +2,7 @@ namespace TrafficManager.API.Traffic.Enums {
/// <summary>
/// Indicates the current state while approaching a private car
/// </summary>
public enum ParkedCarApproachState {
public enum ParkedCarApproachState : byte {
/// <summary>
/// Citizen is not approaching their parked car
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/PriorityType.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum PriorityType {
public enum PriorityType : byte {
None = 0,

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/RecklessDrivers.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum RecklessDrivers {
public enum RecklessDrivers : byte {
[LocaleKey("Gameplay.Dropdown.Option:Path Of Evil (10%)")]
PathOfEvil,

Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/SimulationAccuracy.cs
Expand Up @@ -4,7 +4,7 @@ namespace TrafficManager.API.Traffic.Enums {
/// <summary>
/// Represents accuracy of simulation
/// </summary>
public enum SimulationAccuracy {
public enum SimulationAccuracy : byte {
/// <summary>
/// Very low accuracy
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/VehicleJunctionTransitState.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum VehicleJunctionTransitState {
public enum VehicleJunctionTransitState : byte {
/// <summary>
/// Represents an unknown/ignored state
/// </summary>
Expand Down
Expand Up @@ -4,7 +4,7 @@ namespace TrafficManager.API.Traffic.Enums {
/// <summary>
/// Represents vehicle restrictions effect strength
/// </summary>
public enum VehicleRestrictionsAggression {
public enum VehicleRestrictionsAggression : byte {
/// <summary>
/// Low aggression
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion TLM/TMPE.API/Traffic/Enums/VehicleRestrictionsMode.cs
@@ -1,5 +1,5 @@
namespace TrafficManager.API.Traffic.Enums {
public enum VehicleRestrictionsMode {
public enum VehicleRestrictionsMode : byte {
/// <summary>
/// Interpret bus lanes as "free for all"
/// </summary>
Expand Down