Changed all int and some float things in Reagent code to Decimals

This commit is contained in:
PrPleGoo
2020-03-14 12:55:07 +01:00
parent b9f9eb6651
commit f05fdfb5fc
19 changed files with 101 additions and 81 deletions

View File

@@ -28,7 +28,7 @@ namespace Content.Server.Chemistry.Metabolism
}
//Remove reagent at set rate, satiate thirst if a ThirstComponent can be found
int IMetabolizable.Metabolize(IEntity solutionEntity, string reagentId, float tickTime)
decimal IMetabolizable.Metabolize(IEntity solutionEntity, string reagentId, float tickTime)
{
int metabolismAmount = (int)Math.Round(MetabolismRate * tickTime);
if (solutionEntity.TryGetComponent(out ThirstComponent thirst))

View File

@@ -1,6 +1,7 @@
using System;
using Content.Server.GameObjects.Components.Nutrition;
using Content.Shared.Interfaces.Chemistry;
using Content.Shared.Maths;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Serialization;
using Robust.Shared.Serialization;
@@ -14,25 +15,25 @@ namespace Content.Server.Chemistry.Metabolism
class DefaultFood : IMetabolizable
{
//Rate of metabolism in units / second
private int _metabolismRate;
public int MetabolismRate => _metabolismRate;
private decimal _metabolismRate;
public decimal MetabolismRate => _metabolismRate;
//How much hunger is satiated when 1u of the reagent is metabolized
private float _nutritionFactor;
public float NutritionFactor => _nutritionFactor;
private decimal _nutritionFactor;
public decimal NutritionFactor => _nutritionFactor;
void IExposeData.ExposeData(ObjectSerializer serializer)
{
serializer.DataField(ref _metabolismRate, "rate", 1);
serializer.DataField(ref _nutritionFactor, "nutrimentFactor", 30.0f);
serializer.DataField(ref _metabolismRate, "rate", 1M);
serializer.DataField(ref _nutritionFactor, "nutrimentFactor", 30.0M);
}
//Remove reagent at set rate, satiate hunger if a HungerComponent can be found
int IMetabolizable.Metabolize(IEntity solutionEntity, string reagentId, float tickTime)
decimal IMetabolizable.Metabolize(IEntity solutionEntity, string reagentId, float tickTime)
{
int metabolismAmount = (int)Math.Round(MetabolismRate * tickTime);
var metabolismAmount = (MetabolismRate * (decimal) tickTime).RoundForReagents();
if (solutionEntity.TryGetComponent(out HungerComponent hunger))
hunger.UpdateFood(metabolismAmount * NutritionFactor);
hunger.UpdateFood((float)(metabolismAmount * NutritionFactor));
//Return amount of reagent to be removed, remove reagent regardless of HungerComponent presence
return metabolismAmount;

View File

@@ -35,9 +35,9 @@ namespace Content.Server.Chemistry.ReactionEffects
serializer.DataField(ref _maxScale, "maxScale", 1);
}
public void React(IEntity solutionEntity, int intensity)
public void React(IEntity solutionEntity, decimal intensity)
{
float floatIntensity = intensity; //Use float to avoid truncation in scaling
float floatIntensity = (float)intensity;
if (solutionEntity == null)
return;
if(!solutionEntity.TryGetComponent(out SolutionComponent solution))