mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-20 15:41:01 +00:00
add component repair tick event
This commit is contained in:
parent
fc50ec4e38
commit
a66892f70b
@ -75,5 +75,6 @@
|
||||
public static string QSBHullRepaired = "QSBHullRepaired";
|
||||
public static string QSBComponentDamaged = "QSBComponentDamaged";
|
||||
public static string QSBComponentRepaired = "QSBComponentRepaired";
|
||||
public static string QSBComponentRepairTick = "QSBComponentRepairTick";
|
||||
}
|
||||
}
|
@ -51,6 +51,7 @@
|
||||
HullChangeIntegrity,
|
||||
HullRepaired,
|
||||
ComponentDamaged,
|
||||
ComponentRepaired
|
||||
ComponentRepaired,
|
||||
ComponentRepairTick
|
||||
}
|
||||
}
|
@ -89,7 +89,8 @@ namespace QSB.Events
|
||||
new HullChangeIntegrityEvent(),
|
||||
new HullRepairedEvent(),
|
||||
new ComponentDamagedEvent(),
|
||||
new ComponentRepairedEvent()
|
||||
new ComponentRepairedEvent(),
|
||||
new ComponentRepairTickEvent()
|
||||
};
|
||||
|
||||
if (UnitTestDetector.IsInUnitTest)
|
||||
|
@ -243,6 +243,7 @@
|
||||
<Compile Include="ShipSync\ComponentType.cs" />
|
||||
<Compile Include="ShipSync\Events\Component\ComponentDamagedEvent.cs" />
|
||||
<Compile Include="ShipSync\Events\Component\ComponentRepairedEvent.cs" />
|
||||
<Compile Include="ShipSync\Events\Component\ComponentRepairTickEvent.cs" />
|
||||
<Compile Include="ShipSync\Events\FunnelEnableEvent.cs" />
|
||||
<Compile Include="ShipSync\Events\Hull\HullChangeIntegrityEvent.cs" />
|
||||
<Compile Include="ShipSync\Events\Hull\HullChangeIntegrityMessage.cs" />
|
||||
@ -251,6 +252,7 @@
|
||||
<Compile Include="ShipSync\Events\Hull\HullImpactMessage.cs" />
|
||||
<Compile Include="ShipSync\Events\Hull\HullRepairedEvent.cs" />
|
||||
<Compile Include="ShipSync\Events\ImpactDataMessage.cs" />
|
||||
<Compile Include="ShipSync\Events\RepairTickMessage.cs" />
|
||||
<Compile Include="ShipSync\WorldObjects\QSBShipComponent.cs" />
|
||||
<Compile Include="ShipSync\WorldObjects\QSBShipHull.cs" />
|
||||
<Compile Include="Syncs\ISectoredSync.cs" />
|
||||
|
39
QSB/ShipSync/Events/Component/ComponentRepairTickEvent.cs
Normal file
39
QSB/ShipSync/Events/Component/ComponentRepairTickEvent.cs
Normal file
@ -0,0 +1,39 @@
|
||||
using QSB.Events;
|
||||
using QSB.ShipSync.WorldObjects;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
|
||||
namespace QSB.ShipSync.Events.Component
|
||||
{
|
||||
class ComponentRepairTickEvent : QSBEvent<RepairTickMessage>
|
||||
{
|
||||
public override EventType Type => EventType.ComponentRepairTick;
|
||||
|
||||
public override void SetupListener() => GlobalMessenger<ShipComponent, float>.AddListener(EventNames.QSBComponentRepairTick, Handler);
|
||||
public override void CloseListener() => GlobalMessenger<ShipComponent, float>.RemoveListener(EventNames.QSBComponentRepairTick, Handler);
|
||||
|
||||
private void Handler(ShipComponent hull, float repairFraction) => SendEvent(CreateMessage(hull, repairFraction));
|
||||
|
||||
private RepairTickMessage CreateMessage(ShipComponent hull, float repairFraction)
|
||||
{
|
||||
var worldObject = QSBWorldSync.GetWorldFromUnity<QSBShipComponent, ShipComponent>(hull);
|
||||
return new RepairTickMessage
|
||||
{
|
||||
AboutId = LocalPlayerId,
|
||||
ObjectId = worldObject.ObjectId,
|
||||
RepairNumber = repairFraction
|
||||
};
|
||||
}
|
||||
|
||||
public override void OnReceiveLocal(bool server, RepairTickMessage message)
|
||||
{
|
||||
DebugLog.DebugWrite($"[S COMPONENT] {message.ObjectId} Repair tick {message.RepairNumber}", OWML.Common.MessageType.Warning);
|
||||
}
|
||||
|
||||
public override void OnReceiveRemote(bool server, RepairTickMessage message)
|
||||
{
|
||||
var worldObject = QSBWorldSync.GetWorldFromId<QSBShipComponent>(message.ObjectId);
|
||||
worldObject.RepairTick(message.RepairNumber);
|
||||
}
|
||||
}
|
||||
}
|
22
QSB/ShipSync/Events/RepairTickMessage.cs
Normal file
22
QSB/ShipSync/Events/RepairTickMessage.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using QSB.WorldSync.Events;
|
||||
using QuantumUNET.Transport;
|
||||
|
||||
namespace QSB.ShipSync.Events
|
||||
{
|
||||
class RepairTickMessage : WorldObjectMessage
|
||||
{
|
||||
public float RepairNumber { get; set; }
|
||||
|
||||
public override void Deserialize(QNetworkReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
RepairNumber = reader.ReadSingle();
|
||||
}
|
||||
|
||||
public override void Serialize(QNetworkWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(RepairNumber);
|
||||
}
|
||||
}
|
||||
}
|
@ -35,5 +35,12 @@ namespace QSB.ShipSync.WorldObjects
|
||||
var damageEffect = AttachedObject.GetValue<DamageEffect>("_damageEffect");
|
||||
damageEffect.SetEffectBlend(0f);
|
||||
}
|
||||
|
||||
public void RepairTick(float repairFraction)
|
||||
{
|
||||
AttachedObject.SetValue("_repairFraction", repairFraction);
|
||||
var damageEffect = AttachedObject.GetValue<DamageEffect>("_damageEffect");
|
||||
damageEffect.SetEffectBlend(1f - repairFraction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user