Marking player location on galaxy map Fixed non-input field focus disabling global key map Player start ship is now always the same Loadout generator now demands exact match for item dimensions Thermal damage now triggers ItemDamaged event = player can die from cockpit wear! Properties panel now has a much more attractive UI Implemented curve control for properties UI Centralized number formatting in player settings Moved significant digits to player settings Added temperature unit option in player settings
52 lines
No EOL
1.3 KiB
C#
52 lines
No EOL
1.3 KiB
C#
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
using System.Collections.Generic;
|
|
using MessagePack;
|
|
using Newtonsoft.Json;
|
|
using Unity.Mathematics;
|
|
using static Unity.Mathematics.math;
|
|
|
|
[Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn), Order(1000), RuntimeInspectable]
|
|
public class WearData : BehaviorData
|
|
{
|
|
[InspectableTemperature, JsonProperty("perSecond"), Key(1)]
|
|
public bool PerSecond = true;
|
|
|
|
public override IBehavior CreateInstance(EquippedItem item)
|
|
{
|
|
return new Wear(this, item);
|
|
}
|
|
}
|
|
|
|
public class Wear : IBehavior
|
|
{
|
|
private WearData _data;
|
|
|
|
public EquippedItem Item { get; }
|
|
|
|
public BehaviorData Data => _data;
|
|
|
|
public Wear(WearData data, EquippedItem item)
|
|
{
|
|
_data = data;
|
|
Item = item;
|
|
}
|
|
|
|
public bool Execute(float delta)
|
|
{
|
|
if (_data.PerSecond)
|
|
{
|
|
var dmg = Item.Wear * delta;
|
|
Item.EquippableItem.Durability -= dmg;
|
|
Item.Entity.ItemDamage.OnNext((Item, dmg));
|
|
}
|
|
else
|
|
{
|
|
Item.EquippableItem.Durability -= Item.Wear;
|
|
Item.Entity.ItemDamage.OnNext((Item, Item.Wear));
|
|
}
|
|
return true;
|
|
}
|
|
} |