1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-09 12:53:34 +08:00

Dustbin 1.3.0 WIP

This commit is contained in:
2023-08-15 21:19:22 +08:00
parent 7dcd7b56a3
commit 078af5bc59
13 changed files with 501 additions and 270 deletions

View File

@@ -0,0 +1,77 @@
using NebulaAPI;
namespace Dustbin.NebulaSupport
{
namespace Packet
{
public class SyncPlanetData
{
public byte[] Data { get; set; }
public SyncPlanetData()
{
}
public SyncPlanetData(byte[] data)
{
Data = data;
}
}
public class ToggleEvent
{
public int PlanetId { get; set; }
public int StorageId { get; set; }
public bool Enable { get; set; }
public ToggleEvent()
{
}
public ToggleEvent(int planetId, int storageId, bool enable)
{
PlanetId = planetId;
StorageId = storageId;
Enable = enable;
}
}
[RegisterPacketProcessor]
internal class SyncPlanetDataProcessor : BasePacketProcessor<SyncPlanetData>
{
public override void ProcessPacket(SyncPlanetData packet, INebulaConnection conn)
{
Dustbin.ImportData(packet.Data);
}
}
[RegisterPacketProcessor]
internal class ToggleEventProcessor : BasePacketProcessor<ToggleEvent>
{
public override void ProcessPacket(ToggleEvent packet, INebulaConnection conn)
{
var factory = GameMain.galaxy.PlanetById(packet.PlanetId)?.factory;
if (factory == null) return;
var storageId = packet.StorageId;
switch (storageId)
{
case 0:
NebulaModAPI.MultiplayerSession.Network.SendPacket(new SyncPlanetData(Dustbin.ExportData(factory)));
return;
case < 0:
{
var tankPool = factory.factoryStorage.tankPool;
TankPatch.IsDustbinField.SetValue(tankPool[-storageId], packet.Enable);
return;
}
default:
{
var storagePool = factory.factoryStorage.storagePool;
StoragePatch.IsDustbinField.SetValue(storagePool[storageId], packet.Enable);
return;
}
}
}
}
}
}