Skip to content

Commit

Permalink
Spanish translation added.
Browse files Browse the repository at this point in the history
AppLauncher button hiding fixed.
Performance issues fixed.
  • Loading branch information
formicant committed Jun 29, 2017
1 parent ed0ba16 commit e795311
Show file tree
Hide file tree
Showing 19 changed files with 232 additions and 174 deletions.
39 changes: 19 additions & 20 deletions GameData/CriticalTemperatureGauge/Localization/en-us.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,24 @@
{
en-us
{
#ModCriticalTemperatureGauge_Title = Critical Temperature Gauge
#ModCriticalTemperatureGauge_GaugeShowingThreshold = Gauge showing threshold:
#ModCriticalTemperatureGauge_GaugeHidingThreshold = Gauge hiding threshold:
#ModCriticalTemperatureGauge_ForceShowGauge = Force show gauge
#ModCriticalTemperatureGauge_ShowTemperature = Show temperature
#ModCriticalTemperatureGauge_ShowTemperatureLimit = Show temperature limit
#ModCriticalTemperatureGauge_ShowTemperatureRate = Show temperature rate
#ModCriticalTemperatureGauge_ShowCriticalPartName = Show critical part name
#ModCriticalTemperatureGauge_HighlightCriticalPart = Highlight critical part
#ModCriticalTemperatureGauge_IgnorePartModules = Ignore parts with following\n modules (comma-separated):
#ModCriticalTemperatureGauge_ShowTemperatureInPartMenu = Show temperature in part menu
#ModCriticalTemperatureGauge_LockGaugePosition = Lock gauge position
#ModCriticalTemperatureGauge_ShowAppLauncherButton = Show AppLauncher button
#ModCriticalTemperatureGauge_Temperature = <<1>> K
#ModCriticalTemperatureGauge_TemperatureWithLimit = <<1>> / <<2>> K
#ModCriticalTemperatureGauge_TemperatureRate = <<1>> K/s
#ModCriticalTemperatureGauge_Core = core
#ModCriticalTemperatureGauge_Skin = skin
#ModCriticalTemperatureGauge_PartMenuCore = Core temperature
#ModCriticalTemperatureGauge_PartMenuSkin = \u2009Skin temperature
#LOC_CriticalTemperatureGauge_Title = Critical Temperature Gauge
#LOC_CriticalTemperatureGauge_GaugeShowingThreshold = Gauge showing threshold:
#LOC_CriticalTemperatureGauge_GaugeHidingThreshold = Gauge hiding threshold:
#LOC_CriticalTemperatureGauge_AlwaysShowGauge = Always show gauge
#LOC_CriticalTemperatureGauge_ShowTemperature = Show temperature
#LOC_CriticalTemperatureGauge_ShowTemperatureLimit = Show temperature limit
#LOC_CriticalTemperatureGauge_ShowTemperatureRate = Show temperature rate
#LOC_CriticalTemperatureGauge_ShowCriticalPartName = Show critical part name
#LOC_CriticalTemperatureGauge_HighlightCriticalPart = Highlight critical part
#LOC_CriticalTemperatureGauge_IgnorePartModules = Ignore parts with following\n modules (comma-separated):
#LOC_CriticalTemperatureGauge_ShowTemperatureInPartMenu = Show temperature in part menu
#LOC_CriticalTemperatureGauge_LockGaugePosition = Lock gauge position
#LOC_CriticalTemperatureGauge_ShowAppLauncherButton = Show AppLauncher button
#LOC_CriticalTemperatureGauge_Kelvin = K
#LOC_CriticalTemperatureGauge_KelvinPerSecond = K/s
#LOC_CriticalTemperatureGauge_Core = core
#LOC_CriticalTemperatureGauge_Skin = skin
#LOC_CriticalTemperatureGauge_PartMenuCore = Core temperature
#LOC_CriticalTemperatureGauge_PartMenuSkin = \u2009Skin temperature
}
}
25 changes: 25 additions & 0 deletions GameData/CriticalTemperatureGauge/Localization/es-es.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Localization
{
es-es
{
#LOC_CriticalTemperatureGauge_Title = Medidor de temperatura crítica
#LOC_CriticalTemperatureGauge_GaugeShowingThreshold = Umbral de exposición del indicador:
#LOC_CriticalTemperatureGauge_GaugeHidingThreshold = Umbral de ocultación del indicador:
#LOC_CriticalTemperatureGauge_AlwaysShowGauge = Mostrar siempre indicador
#LOC_CriticalTemperatureGauge_ShowTemperature = Mostrar temperatura
#LOC_CriticalTemperatureGauge_ShowTemperatureLimit = Mostrar límite de temperatura
#LOC_CriticalTemperatureGauge_ShowTemperatureRate = Mostrar tasa de temperatura
#LOC_CriticalTemperatureGauge_ShowCriticalPartName = Mostrar nombre de la parte crítica
#LOC_CriticalTemperatureGauge_HighlightCriticalPart = Resaltar la parte crítica
#LOC_CriticalTemperatureGauge_IgnorePartModules = Ignorar partes con los siguientes\n módulos (separado por comas):
#LOC_CriticalTemperatureGauge_ShowTemperatureInPartMenu = Mostrar temperatura en el menú de piezas
#LOC_CriticalTemperatureGauge_LockGaugePosition = Bloquear posición del medidor
#LOC_CriticalTemperatureGauge_ShowAppLauncherButton = Mostrar botón lanzador de applicación
#LOC_CriticalTemperatureGauge_Kelvin = K
#LOC_CriticalTemperatureGauge_KelvinPerSecond = K/s
#LOC_CriticalTemperatureGauge_Core = interna
#LOC_CriticalTemperatureGauge_Skin = superficie
#LOC_CriticalTemperatureGauge_PartMenuCore = Temperatura int. \u2009
#LOC_CriticalTemperatureGauge_PartMenuSkin = Temperatura sup.
}
}
39 changes: 19 additions & 20 deletions GameData/CriticalTemperatureGauge/Localization/es-mx.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,24 @@
{
es-mx
{
#ModCriticalTemperatureGauge_Title = Medidor de temperatura crítica
#ModCriticalTemperatureGauge_GaugeShowingThreshold = Umbral del indicador de medición:
#ModCriticalTemperatureGauge_GaugeHidingThreshold = Umbral del indicador de ocultación:
#ModCriticalTemperatureGauge_ForceShowGauge = Indicador de muestra de fuerza
#ModCriticalTemperatureGauge_ShowTemperature = Mostrar temperatura
#ModCriticalTemperatureGauge_ShowTemperatureLimit = Mostrar límite de temperatura
#ModCriticalTemperatureGauge_ShowTemperatureRate = Mostrar tasa de temperatura
#ModCriticalTemperatureGauge_ShowCriticalPartName = Mostrar nombre de la parte crítica
#ModCriticalTemperatureGauge_HighlightCriticalPart = Resalte la parte crítica
#ModCriticalTemperatureGauge_IgnorePartModules = Ignorar partes con los siguientes\n módulos (separado por comas):
#ModCriticalTemperatureGauge_ShowTemperatureInPartMenu = Mostrar temperatura en el menú de piezas
#ModCriticalTemperatureGauge_LockGaugePosition = Posición del indicador de bloqueo
#ModCriticalTemperatureGauge_ShowAppLauncherButton = Botón Mostrar Lanzador de aplicaciones
#ModCriticalTemperatureGauge_Temperature = <<1>> K
#ModCriticalTemperatureGauge_TemperatureWithLimit = <<1>> / <<2>> K
#ModCriticalTemperatureGauge_TemperatureRate = <<1>> K/s
#ModCriticalTemperatureGauge_Core = núcleo
#ModCriticalTemperatureGauge_Skin = revestimiento
#ModCriticalTemperatureGauge_PartMenuCore = Temperatura del núcleo
#ModCriticalTemperatureGauge_PartMenuSkin = Temperatura del revestimiento
#LOC_CriticalTemperatureGauge_Title = Medidor de temperatura crítica
#LOC_CriticalTemperatureGauge_GaugeShowingThreshold = Umbral de exposición del indicador:
#LOC_CriticalTemperatureGauge_GaugeHidingThreshold = Umbral de ocultación del indicador:
#LOC_CriticalTemperatureGauge_AlwaysShowGauge = Mostrar siempre indicador
#LOC_CriticalTemperatureGauge_ShowTemperature = Mostrar temperatura
#LOC_CriticalTemperatureGauge_ShowTemperatureLimit = Mostrar límite de temperatura
#LOC_CriticalTemperatureGauge_ShowTemperatureRate = Mostrar tasa de temperatura
#LOC_CriticalTemperatureGauge_ShowCriticalPartName = Mostrar nombre de la parte crítica
#LOC_CriticalTemperatureGauge_HighlightCriticalPart = Resaltar la parte crítica
#LOC_CriticalTemperatureGauge_IgnorePartModules = Ignorar partes con los siguientes\n módulos (separado por comas):
#LOC_CriticalTemperatureGauge_ShowTemperatureInPartMenu = Mostrar temperatura en el menú de piezas
#LOC_CriticalTemperatureGauge_LockGaugePosition = Bloquear posición del medidor
#LOC_CriticalTemperatureGauge_ShowAppLauncherButton = Mostrar botón lanzador de applicación
#LOC_CriticalTemperatureGauge_Kelvin = K
#LOC_CriticalTemperatureGauge_KelvinPerSecond = K/s
#LOC_CriticalTemperatureGauge_Core = interna
#LOC_CriticalTemperatureGauge_Skin = superficie
#LOC_CriticalTemperatureGauge_PartMenuCore = Temperatura int. \u2009
#LOC_CriticalTemperatureGauge_PartMenuSkin = Temperatura sup.
}
}
39 changes: 19 additions & 20 deletions GameData/CriticalTemperatureGauge/Localization/ru.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,24 @@
{
ru
{
#ModCriticalTemperatureGauge_Title = Датчик критической температуры
#ModCriticalTemperatureGauge_GaugeShowingThreshold = Порог появления:
#ModCriticalTemperatureGauge_GaugeHidingThreshold = Порог скрытия:
#ModCriticalTemperatureGauge_ForceShowGauge = Показывать всегда
#ModCriticalTemperatureGauge_ShowTemperature = Показывать температуру на шкале
#ModCriticalTemperatureGauge_ShowTemperatureLimit = Показывать температурный предел
#ModCriticalTemperatureGauge_ShowTemperatureRate = Показывать скорость изменения температуры
#ModCriticalTemperatureGauge_ShowCriticalPartName = Показывать название критической детали
#ModCriticalTemperatureGauge_HighlightCriticalPart = Подсвечивать критическую деталь
#ModCriticalTemperatureGauge_IgnorePartModules = Игнорировать детали со следующими\n модулями (через запятую):
#ModCriticalTemperatureGauge_ShowTemperatureInPartMenu = Показывать температуру в меню деталей
#ModCriticalTemperatureGauge_LockGaugePosition = Зафиксировать расположение датчика
#ModCriticalTemperatureGauge_ShowAppLauncherButton = Показывать кнопку на панели
#ModCriticalTemperatureGauge_Temperature = <<1>> K
#ModCriticalTemperatureGauge_TemperatureWithLimit = <<1>> / <<2>> K
#ModCriticalTemperatureGauge_TemperatureRate = <<1>> K/c
#ModCriticalTemperatureGauge_Core = внутр.
#ModCriticalTemperatureGauge_Skin = обшив.
#ModCriticalTemperatureGauge_PartMenuCore = Температура внутр. \u2009
#ModCriticalTemperatureGauge_PartMenuSkin = Температура обшив.
#LOC_CriticalTemperatureGauge_Title = Датчик критической температуры
#LOC_CriticalTemperatureGauge_GaugeShowingThreshold = Порог появления:
#LOC_CriticalTemperatureGauge_GaugeHidingThreshold = Порог скрытия:
#LOC_CriticalTemperatureGauge_AlwaysShowGauge = Показывать всегда
#LOC_CriticalTemperatureGauge_ShowTemperature = Показывать температуру на шкале
#LOC_CriticalTemperatureGauge_ShowTemperatureLimit = Показывать температурный предел
#LOC_CriticalTemperatureGauge_ShowTemperatureRate = Показывать скорость изменения температуры
#LOC_CriticalTemperatureGauge_ShowCriticalPartName = Показывать название критической детали
#LOC_CriticalTemperatureGauge_HighlightCriticalPart = Подсвечивать критическую деталь
#LOC_CriticalTemperatureGauge_IgnorePartModules = Игнорировать детали со следующими\n модулями (через запятую):
#LOC_CriticalTemperatureGauge_ShowTemperatureInPartMenu = Показывать температуру в меню деталей
#LOC_CriticalTemperatureGauge_LockGaugePosition = Зафиксировать расположение датчика
#LOC_CriticalTemperatureGauge_ShowAppLauncherButton = Показывать кнопку на панели
#LOC_CriticalTemperatureGauge_Kelvin = K
#LOC_CriticalTemperatureGauge_KelvinPerSecond = K/c
#LOC_CriticalTemperatureGauge_Core = внутр.
#LOC_CriticalTemperatureGauge_Skin = обшив.
#LOC_CriticalTemperatureGauge_PartMenuCore = Температура внутр. \u2009
#LOC_CriticalTemperatureGauge_PartMenuSkin = Температура обшив.
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"MAJOR": 1,
"MINOR": 3,
"PATCH": 0,
"BUILD": 1
"BUILD": 3
},
"KSP_VERSION":
{
Expand Down
13 changes: 5 additions & 8 deletions src/CriticalTemperatureGauge/AppLauncher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,15 @@ public class AppLauncher : MonoBehaviour
public void Update()
{
if(_appLauncherButton != null)
_appLauncherButton.VisibleInScenes = Static.Settings.ShowAppLauncherButton
? ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.MAPVIEW
: ApplicationLauncher.AppScenes.NEVER;
_appLauncherButton.VisibleInScenes =
Static.Settings.ShowAppLauncherButton
? ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.MAPVIEW
: ApplicationLauncher.AppScenes.NEVER;
}

public bool ButtonState
{
get
{
return _settingsWindow.IsLogicallyVisible;
}
get => _settingsWindow.IsLogicallyVisible;
set
{
if(value)
Expand All @@ -46,7 +44,6 @@ public bool ButtonState

public void Start()
{
OnGUIApplicationLauncherReady();
Static.AppLauncher = this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Extensions.cs" />
<Compile Include="Format.cs" />
<Compile Include="PartTemperatureState.cs" />
<Compile Include="SettingsWindow.cs" />
<Compile Include="Flight.cs" />
Expand Down
25 changes: 0 additions & 25 deletions src/CriticalTemperatureGauge/Extensions.cs

This file was deleted.

4 changes: 2 additions & 2 deletions src/CriticalTemperatureGauge/Flight.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,14 @@ public void Update()
if(!_gaugeWindow.IsLogicallyVisible &&
criticalPartState != null &&
(criticalPartState.Index > Static.Settings.GaugeShowingThreshold ||
Static.Settings.ForceShowGauge))
Static.Settings.AlwaysShowGauge))
{
_gaugeWindow.Show();
}
else if(_gaugeWindow.IsLogicallyVisible &&
(criticalPartState == null ||
criticalPartState.Index < Static.Settings.GaugeHidingThreshold &&
!Static.Settings.ForceShowGauge))
!Static.Settings.AlwaysShowGauge))
{
_gaugeWindow.Hide();
}
Expand Down
55 changes: 55 additions & 0 deletions src/CriticalTemperatureGauge/Format.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using KSP.Localization;

namespace CriticalTemperatureGauge
{
internal static class Format
{
public static string Temperature(double temperature, double? temperatureLimit) =>
temperatureLimit.HasValue
? $"{temperature.ToUnsignedString(4)} / {temperatureLimit.Value.ToUnsignedString(3)} {Kelvin}"
: $"{temperature.ToUnsignedString(4)} {Kelvin}";

public static string TemperatureRate(double temperatureRate) =>
$" {temperatureRate.ToSignedString(1)} {KelvinPerSecond}";

public static string TemperatureWithRate(double temperature, double? temperatureLimit, double? temperatureRate) =>
temperatureRate.HasValue
? $"{Temperature(temperature, temperatureLimit)} {temperatureRate.Value.ToSignedString(3, ""/* U+2013 En Dash */)} {KelvinPerSecond}"
: $"{Temperature(temperature, temperatureLimit)}";

public static string PartName(string partName, bool isSkin) =>
$" {partName} ({(isSkin ? Skin : Core)})";


public static T? Then<T>(this bool condition, T thenValue)
where T : struct
=>
condition ? thenValue : (T?)null;


static string ToUnsignedString(this double value, int intPlaces)
{
var numberString = value.ToString("F0", CultureInfo.InvariantCulture);
var spaces = Math.Max(0, intPlaces - numberString.Length);
return new string(' '/* U+2007 Figure Space */, spaces) + numberString;
}

static string ToSignedString(this double value, int intPlaces, string minus = ""/* U+2212 Minus Sign */, string plus = "+")
{
var numberString = Math.Abs(value).ToString("F0", CultureInfo.InvariantCulture);
var signString = value < 0 ? minus : plus;
var spaces = Math.Max(0, intPlaces - numberString.Length);
return new string(' '/* U+2007 Figure Space */, spaces) + signString + numberString;
}


static readonly string Kelvin = Localizer.Format("#LOC_CriticalTemperatureGauge_Kelvin");
static readonly string KelvinPerSecond = Localizer.Format("#LOC_CriticalTemperatureGauge_KelvinPerSecond");
static readonly string Core = Localizer.Format("#LOC_CriticalTemperatureGauge_Core");
static readonly string Skin = Localizer.Format("#LOC_CriticalTemperatureGauge_Skin");
}
}
14 changes: 5 additions & 9 deletions src/CriticalTemperatureGauge/GaugeWindow.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using KSP.Localization;
using UnityEngine;

namespace CriticalTemperatureGauge
Expand Down Expand Up @@ -69,22 +68,19 @@ protected override void WindowGUI(int windowId)
// Drawing temperature and temperature limit values
if(Static.Settings.ShowTemperature)
DrawContrastLabel(InnerLabelRectangle, TextAnchor.MiddleCenter, FontSize,
Localizer.Format(Static.Settings.ShowTemperatureLimit ? "#ModCriticalTemperatureGauge_TemperatureWithLimit" : "#ModCriticalTemperatureGauge_Temperature",
Static.CriticalPartState.CriticalTemperature.ToUnsignedString(4, 0),
Static.CriticalPartState.CriticalTemperatureLimit.ToUnsignedString(3, 0)));
Format.Temperature(
Static.CriticalPartState.CriticalTemperature,
Static.Settings.ShowTemperatureLimit.Then(Static.CriticalPartState.CriticalTemperatureLimit)));

// Drawing temperature rate value
if(Static.Settings.ShowTemperatureRate)
DrawContrastLabel(InnerLabelRectangle, TextAnchor.MiddleLeft, FontSize,
" " +
Localizer.Format("#ModCriticalTemperatureGauge_TemperatureRate", Static.CriticalPartState.CriticalTemperatureRate.ToSignedString(1, 0)));
Format.TemperatureRate(Static.CriticalPartState.CriticalTemperatureRate));

// Drawing critical part name
if(Static.Settings.ShowCriticalPart)
DrawContrastLabel(OuterLabelRectangle, TextAnchor.MiddleLeft, FontSize,
$@" {
Static.CriticalPartState.Title} ({
Localizer.Format(Static.CriticalPartState.IsSkinCritical ? "#ModCriticalTemperatureGauge_Skin" : "#ModCriticalTemperatureGauge_Core")})");
Format.PartName(Static.CriticalPartState.Title, Static.CriticalPartState.IsSkinCritical));

GUILayout.EndVertical();

Expand Down
23 changes: 15 additions & 8 deletions src/CriticalTemperatureGauge/Highlighter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,17 @@ public class Highlighter
Color.blue,
};

const int FlashPeriod = 4;
const double FlashPeriod = 0.166;

int _currentHighlightColor = 0;
Part _previousHighlightedPart = null;
double _lastColorChangeTime;
int _currentHighlightColor;
Part _previousHighlightedPart;

/// <summary>Returns whether there is a highlighted part.</summary>
public bool IsThereHighlightedPart { get; private set; }

/// <summary>Highlights a given part.</summary>
/// <param name="part">Part to higilight or <c>null</c>.</param>
/// <param name="part">Part to highlight or <c>null</c>.</param>
public void SetHighlightedPart(Part part)
{
IsThereHighlightedPart = part != null;
Expand All @@ -44,7 +45,7 @@ void ResetPartHighlight(Part part)
if(part != null)
{
part.SetHighlightDefault();
part.SetHighlight(false, false);
part.SetHighlight(active: false, recursive: false);
}
}

Expand All @@ -53,10 +54,16 @@ void SetPartHighlight(Part part)
if(part != null)
{
part.highlightType = Part.HighlightType.AlwaysOn;
part.SetHighlightColor(HighlightColors[_currentHighlightColor / FlashPeriod]);
part.SetHighlight(true, false);
part.SetHighlightColor(HighlightColors[_currentHighlightColor]);
part.SetHighlight(active: true, recursive: false);

var time = Planetarium.GetUniversalTime();
if(time - _lastColorChangeTime > FlashPeriod * TimeWarp.CurrentRate)
{
_currentHighlightColor = (_currentHighlightColor + 1) % HighlightColors.Length;
_lastColorChangeTime = time;
}
}
_currentHighlightColor = (_currentHighlightColor + 1) % (HighlightColors.Length * FlashPeriod);
}
}
}
Loading

0 comments on commit e795311

Please sign in to comment.