Aetheria/Assets/Scripts/Gameplay/GameSettings.cs
Reinier Vens 54f7e3a66f Properties Panel Overhaul
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
2021-04-13 01:50:42 +01:00

75 lines
No EOL
2.7 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;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "Sector Display Properties", menuName = "Aetheria/Sector Display Properties")]
public class GameSettings : ScriptableObject
{
public string StartingHullName = "Longinus";
public float HeatstrokePhasingFloor = 0;
public float HeatstrokePhasingFrequency = 5;
public float WormholeDistanceRatio;
public float DefaultViewDistance;
public float MinimapZoneGravityRange;
public float[] MinimapZoomLevels;
public int DefaultMinimapZoom;
public ExponentialCurve IconSize;
public int AsteroidMeshCount = 5;
public float MinimapAsteroidSize = 3;
public float PlanetRotationSpeed = 1;
public SectorGenerationSettings SectorGenerationSettings;
public BodySettingsCollection[] BodySettingsCollections;
public PlanetSettings PlanetSettings;
public ZoneGenerationSettings ZoneSettings;
public GameplaySettings GameplaySettings;
public Color HullHitColor;
public Color ArmorHitColor;
public Color HardpointHitColor;
public Color GearHitColor;
public Gradient ArmorGradient;
public Gradient DurabilityGradient;
[HideInInspector] public Sprite[] ItemIcons;
[HideInInspector] public Sprite[] WeaponTypeIcons;
[HideInInspector] public Sprite[] WeaponCaliberIcons;
[HideInInspector] public Sprite[] WeaponRangeIcons;
[HideInInspector] public Sprite[] WeaponFireTypeIcons;
[HideInInspector] public Sprite[] WeaponModifierIcons;
public Sprite GetIcon(WeaponType type) => WeaponTypeIcons[(int) type];
public Sprite GetIcon(WeaponRange range) => WeaponRangeIcons[(int) range];
public Sprite GetIcon(WeaponCaliber caliber) => WeaponCaliberIcons[(int) caliber];
public IEnumerable<Sprite> GetIcons(WeaponFireType type)
{
var count = Enum.GetValues(typeof(WeaponFireType)).Length;
var t = (int) type;
for (int i = 0; i < count - 1; i++)
{
if (1 << i == (1 << i & t))
yield return WeaponFireTypeIcons[i + 1];
}
}
public IEnumerable<Sprite> GetIcons(WeaponModifiers type)
{
var count = Enum.GetValues(typeof(WeaponModifiers)).Length;
var t = (int) type;
for (int i = 0; i < count - 1; i++)
{
if (1 << i == (1 << i & t))
yield return WeaponModifierIcons[i + 1];
}
}
}
[Serializable]
public class BodySettingsCollection
{
public float MinimumMass;
public CelestialBodySettings[] BodySettings;
}