Skip to content

Commit d07fa6c

Browse files
committed
add ability to set produced quantity for buildings
1 parent 050ab24 commit d07fa6c

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

Dat/Objects/BuildingObject.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public record BuildingObject(
3838
[property: LocoStructOffset(0x9E)] uint8_t GeneratorFunction,
3939
[property: LocoStructOffset(0x9F)] uint8_t AverageNumberOnMap,
4040
[property: LocoStructOffset(0xA0), LocoArrayLength(BuildingObject.MaxProducedQuantity)] uint8_t[] ProducedQuantity,
41-
[property: LocoStructOffset(0xA2), LocoStructVariableLoad, LocoArrayLength(BuildingObject.MaxProducedCargoType), Browsable(false)] List<object_id> _ProducedCargoType,
42-
[property: LocoStructOffset(0xA4), LocoStructVariableLoad, LocoArrayLength(BuildingObject.MaxRequiredCargoType), Browsable(false)] List<object_id> _RequiredCargoType,
41+
[property: LocoStructOffset(0xA2), LocoStructVariableLoad, LocoArrayLength(BuildingObject.MaxProducedCargoType)] List<S5Header> ProducedCargo,
42+
[property: LocoStructOffset(0xA4), LocoStructVariableLoad, LocoArrayLength(BuildingObject.MaxRequiredCargoType)] List<S5Header> RequiredCargo,
4343
[property: LocoStructOffset(0xA6), LocoStructVariableLoad, LocoArrayLength(2)] List<uint8_t> var_A6,
4444
[property: LocoStructOffset(0xA8), LocoStructVariableLoad, LocoArrayLength(2)] List<uint8_t> var_A8,
4545
[property: LocoStructOffset(0xAA)] int16_t DemolishRatingReduction,
@@ -56,9 +56,6 @@ public record BuildingObject(
5656
public const int MaxRequiredCargoType = 2;
5757
public const int MaxElevatorHeightSequences = 4;
5858

59-
public List<S5Header> ProducedCargo { get; set; } = [];
60-
public List<S5Header> RequiredCargo { get; set; } = [];
61-
6259
public List<uint8_t[]> ElevatorHeightSequences { get; set; } = [];
6360

6461
// known issues:
@@ -94,12 +91,12 @@ public ReadOnlySpan<byte> Load(ReadOnlySpan<byte> remainingData)
9491

9592
// produced cargo
9693
ProducedCargo.Clear();
97-
ProducedCargo = SawyerStreamReader.LoadVariableCountS5Headers(remainingData, MaxProducedCargoType);
94+
ProducedCargo.AddRange(SawyerStreamReader.LoadVariableCountS5Headers(remainingData, MaxProducedCargoType));
9895
remainingData = remainingData[(S5Header.StructLength * MaxProducedCargoType)..];
9996

10097
// required cargo
10198
RequiredCargo.Clear();
102-
RequiredCargo = SawyerStreamReader.LoadVariableCountS5Headers(remainingData, MaxRequiredCargoType);
99+
RequiredCargo.AddRange(SawyerStreamReader.LoadVariableCountS5Headers(remainingData, MaxRequiredCargoType));
103100
remainingData = remainingData[(S5Header.StructLength * MaxRequiredCargoType)..];
104101

105102
// animation sequences

Gui/Models/ObjectEditorModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ public async Task UploadDatToServer(ObjectIndexEntry dat)
375375
var minimumDate = new DateTime(2024, 01, 01);
376376
if (File.GetCreationTimeUtc(filename) > minimumDate || File.GetLastWriteTimeUtc(filename) > minimumDate)
377377
{
378-
Logger.Debug("File is really new - skipping automatic upload for now as this doens't seem like an historical dat file");
378+
Logger.Debug("File is really new - skipping automatic upload for now as this doesn't seem like an historical dat file");
379379
return;
380380
}
381381

Gui/ViewModels/DatTypes/Objects/BuildingViewModel.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ public class BuildingViewModel : ReactiveObject, IObjectViewModel<ILocoStruct>
2525
[Reactive, Category("Cost")] public uint16_t SellCostFactor { get; set; }
2626
[Reactive, Category("Production"), Length(0, BuildingObject.MaxProducedCargoType)] public BindingList<S5Header> ProducedCargo { get; set; }
2727
[Reactive, Category("Production"), Length(0, BuildingObject.MaxProducedCargoType)] public BindingList<S5Header> RequiredCargo { get; set; }
28+
[Reactive, Category("Production"), Length(1, BuildingObject.MaxProducedQuantity)] public BindingList<uint8_t> ProducedQuantity { get; set; }
2829
[Reactive, Category("Building"), Length(1, BuildingObject.BuildingVariationCount)] public BindingList<BindingList<uint8_t>> BuildingVariations { get; set; } // NumBuildingVariations
2930
[Reactive, Category("Building"), Length(1, BuildingObject.BuildingHeightCount)] public BindingList<uint8_t> BuildingHeights { get; set; } // NumBuildingParts
3031
[Reactive, Category("Building"), Length(1, BuildingObject.BuildingAnimationCount)] public BindingList<BuildingPartAnimation> BuildingAnimations { get; set; } // NumBuildingParts
3132

3233
// note: these height sequences are massive. BLDCTY28 has 2 sequences, 512 in length and 1024 in length. Avalonia PropertyGrid takes 30+ seconds to render this. todo: don't use property grid in future
33-
[Reactive, Category("Building"), Length(1, BuildingObject.MaxElevatorHeightSequences), Browsable(false)] public BindingList<BindingList<uint8_t>> ElevatorHeightSequences { get; set; } // NumElevatorSequences
34+
//[Reactive, Category("Building"), Length(1, BuildingObject.MaxElevatorHeightSequences), Browsable(false)] public BindingList<BindingList<uint8_t>> ElevatorHeightSequences { get; set; } // NumElevatorSequences
35+
3436
[Reactive, Category("<unknown>"), Length(2, 2)] public BindingList<uint8_t> var_A6 { get; set; }
3537
[Reactive, Category("<unknown>"), Length(2, 2)] public BindingList<uint8_t> var_A8 { get; set; }
3638
[Reactive, Category("<unknown>")] public uint8_t var_AC { get; set; }
@@ -50,6 +52,7 @@ public BuildingViewModel(BuildingObject bo)
5052
SellCostFactor = bo.SellCostFactor;
5153
ProducedCargo = new(bo.ProducedCargo);
5254
RequiredCargo = new(bo.RequiredCargo);
55+
ProducedQuantity = new(bo.ProducedQuantity);
5356
BuildingHeights = new(bo.BuildingHeights);
5457
BuildingAnimations = new(bo.BuildingAnimations);
5558
BuildingVariations = new(bo.BuildingVariations.Select(x => new BindingList<uint8_t>(x)).ToBindingList());

Gui/Views/MainWindow.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@
250250
<DataTemplate>
251251
<Border BorderThickness="2">
252252
<StackPanel>
253-
<TextBlock Margin="4" Text="{Binding}" />
253+
<TextBlock Margin="4" Text="{Binding Name}" />
254254
</StackPanel>
255255
</Border>
256256
</DataTemplate>

0 commit comments

Comments
 (0)