using System;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Shared.Civ14.CivResearch;
[RegisterComponent]
[NetworkedComponent]
public sealed partial class CivResearchComponent : Component
{
///
/// Defines if research is currently active and progressing
///
[ViewVariables(VVAccess.ReadWrite)]
[DataField("researchEnabled")]
public bool ResearchEnabled { get; set; } = true;
///
/// The current research level. From 0 to 800.
///
[ViewVariables(VVAccess.ReadWrite)]
[DataField("researchLevel")]
public float ResearchLevel { get; set; } = 0f;
///
/// For autoresearch, how much research increases per tick.
/// This defaults to 100 levels per day.
///
[ViewVariables(VVAccess.ReadWrite)]
[DataField("researchSpeed")]
public float ResearchSpeed { get; set; } = 0.000057f;
///
/// The maximum research level.
/// Should probably stay below 900 as 9 is used as the research level for disabled and futuristic stuff.
///
[ViewVariables(VVAccess.ReadWrite)]
[DataField("maxResearch")]
public float MaxResearch { get; set; } = 800;
///
/// Calculates the current age based on the ResearchLevel.
/// Age is determined by flooring the division of ResearchLevel by 100.
///
/// The current age as an integer.
public int GetCurrentAge()
{
return (int)Math.Floor(ResearchLevel / 100f);
}
}