mirror of
https://github.com/soarqin/DSP_Mods_TO.git
synced 2026-02-04 14:12:18 +08:00
WIP
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using CruiseAssist.Commons;
|
using CruiseAssist.Commons;
|
||||||
|
using CruiseAssist.UI;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
||||||
namespace CruiseAssist.Patches;
|
namespace CruiseAssist.Patches;
|
||||||
@@ -13,6 +14,7 @@ internal class Patch_GameMain
|
|||||||
ConfigManager.CheckConfig(ConfigManager.Step.GameMainBegin);
|
ConfigManager.CheckConfig(ConfigManager.Step.GameMainBegin);
|
||||||
CruiseAssistPlugin.Extensions.ForEach(delegate(ICruiseAssistExtensionAPI extension)
|
CruiseAssistPlugin.Extensions.ForEach(delegate(ICruiseAssistExtensionAPI extension)
|
||||||
{
|
{
|
||||||
|
CruiseAssistStarListUI.OnReset();
|
||||||
extension.CheckConfig(ConfigManager.Step.GameMainBegin.ToString());
|
extension.CheckConfig(ConfigManager.Step.GameMainBegin.ToString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
using System.Linq;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using CruiseAssist.Commons;
|
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
|
|
||||||
namespace CruiseAssist.UI;
|
namespace CruiseAssist.UI;
|
||||||
@@ -153,9 +154,11 @@ public static class CruiseAssistStarListUI
|
|||||||
switch (ListSelected)
|
switch (ListSelected)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
UpdateStarPlanetList();
|
||||||
var localStar = GameMain.localStar;
|
var localStar = GameMain.localStar;
|
||||||
var selectTargetStar = CruiseAssistPlugin.SelectTargetStar;
|
var selectTargetStar = CruiseAssistPlugin.SelectTargetStar;
|
||||||
GameMain.galaxy.stars.Select(star => new Tuple<StarData, double>(star, (star.uPosition - GameMain.mainPlayer.uPosition).magnitude)).OrderBy(tuple => tuple.Item2).Do(delegate(Tuple<StarData, double> tuple)
|
var targetStarId = selectTargetStar == null ? -1 : selectTargetStar.id;
|
||||||
|
GameMain.galaxy.stars.Select(star => new Commons.Tuple<StarData, double>(star, (star.uPosition - GameMain.mainPlayer.uPosition).magnitude)).OrderBy(tuple => tuple.Item2).Do(delegate(Commons.Tuple<StarData, double> tuple)
|
||||||
{
|
{
|
||||||
var star = tuple.Item1;
|
var star = tuple.Item1;
|
||||||
var range = tuple.Item2;
|
var range = tuple.Item2;
|
||||||
@@ -167,7 +170,7 @@ public static class CruiseAssistStarListUI
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (selectTargetStar != null && star.id == selectTargetStar.id && GameMain.history.universeObserveLevel >= (range >= 14400000.0 ? 4 : 3))
|
if (star.id == targetStarId && GameMain.history.universeObserveLevel >= (range >= 14400000.0 ? 4 : 3))
|
||||||
{
|
{
|
||||||
ok = true;
|
ok = true;
|
||||||
}
|
}
|
||||||
@@ -175,7 +178,7 @@ public static class CruiseAssistStarListUI
|
|||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
star.planets.Select(planet => new Tuple<PlanetData, double>(planet, (planet.uPosition - GameMain.mainPlayer.uPosition).magnitude)).AddItem(new Tuple<PlanetData, double>(null, (star.uPosition - GameMain.mainPlayer.uPosition).magnitude)).OrderBy(tuple2 => tuple2.Item2).Do(delegate(Tuple<PlanetData, double> tuple2)
|
star.planets.Select(planet => new Commons.Tuple<PlanetData, double>(planet, (planet.uPosition - GameMain.mainPlayer.uPosition).magnitude)).AddItem(new Commons.Tuple<PlanetData, double>(null, (star.uPosition - GameMain.mainPlayer.uPosition).magnitude)).OrderBy(tuple2 => tuple2.Item2).Do(delegate(Commons.Tuple<PlanetData, double> tuple2)
|
||||||
{
|
{
|
||||||
GUILayout.BeginHorizontal();
|
GUILayout.BeginHorizontal();
|
||||||
var planetData = tuple2.Item1;
|
var planetData = tuple2.Item1;
|
||||||
@@ -432,6 +435,8 @@ public static class CruiseAssistStarListUI
|
|||||||
|
|
||||||
public static void SelectStar(StarData star, PlanetData planet)
|
public static void SelectStar(StarData star, PlanetData planet)
|
||||||
{
|
{
|
||||||
|
if (star == CruiseAssistPlugin.SelectTargetStar && planet == CruiseAssistPlugin.SelectTargetPlanet) return;
|
||||||
|
_planets = null;
|
||||||
CruiseAssistPlugin.SelectTargetStar = star;
|
CruiseAssistPlugin.SelectTargetStar = star;
|
||||||
CruiseAssistPlugin.SelectTargetPlanet = planet;
|
CruiseAssistPlugin.SelectTargetPlanet = planet;
|
||||||
var uiGame = UIRoot.instance.uiGame;
|
var uiGame = UIRoot.instance.uiGame;
|
||||||
@@ -482,7 +487,6 @@ public static class CruiseAssistStarListUI
|
|||||||
|
|
||||||
private static void UIStarmap_OnStarClick(UIStarmap starmap, UIStarmapStar star)
|
private static void UIStarmap_OnStarClick(UIStarmap starmap, UIStarmapStar star)
|
||||||
{
|
{
|
||||||
var traverse = Traverse.Create(starmap);
|
|
||||||
if (starmap.focusStar != star)
|
if (starmap.focusStar != star)
|
||||||
{
|
{
|
||||||
if (starmap.viewPlanet != null || (starmap.viewStar != null && star.star != starmap.viewStar))
|
if (starmap.viewPlanet != null || (starmap.viewStar != null && star.star != starmap.viewStar))
|
||||||
@@ -491,14 +495,13 @@ public static class CruiseAssistStarListUI
|
|||||||
}
|
}
|
||||||
starmap.focusPlanet = null;
|
starmap.focusPlanet = null;
|
||||||
starmap.focusStar = star;
|
starmap.focusStar = star;
|
||||||
traverse.Field("_lastClickTime").SetValue(0.0);
|
starmap._lastClickTime = 0.0;
|
||||||
}
|
}
|
||||||
traverse.Field("forceUpdateCursorView").SetValue(true);
|
starmap.forceUpdateCursorView = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void UIStarmap_OnPlanetClick(UIStarmap starmap, UIStarmapPlanet planet)
|
private static void UIStarmap_OnPlanetClick(UIStarmap starmap, UIStarmapPlanet planet)
|
||||||
{
|
{
|
||||||
var traverse = Traverse.Create(starmap);
|
|
||||||
if (starmap.focusPlanet != planet)
|
if (starmap.focusPlanet != planet)
|
||||||
{
|
{
|
||||||
if ((starmap.viewPlanet != null && planet.planet != starmap.viewPlanet) || starmap.viewStar != null)
|
if ((starmap.viewPlanet != null && planet.planet != starmap.viewPlanet) || starmap.viewStar != null)
|
||||||
@@ -507,186 +510,159 @@ public static class CruiseAssistStarListUI
|
|||||||
}
|
}
|
||||||
starmap.focusPlanet = planet;
|
starmap.focusPlanet = planet;
|
||||||
starmap.focusStar = null;
|
starmap.focusStar = null;
|
||||||
traverse.Field("_lastClickTime").SetValue(0.0);
|
starmap._lastClickTime= 0.0;
|
||||||
|
}
|
||||||
|
starmap.forceUpdateCursorView = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void OnReset()
|
||||||
|
{
|
||||||
|
_planets = null;
|
||||||
|
_stars = null;
|
||||||
|
_nextCheckTick = 0;
|
||||||
|
_lastLocalStar = null;
|
||||||
|
_lastLocalPlanet = null;
|
||||||
|
_lastPlayerPos = VectorLF3.zero;
|
||||||
|
GameMain.history.onFunctionUnlocked += OnObserveUpgradeUnlocked;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void OnObserveUpgradeUnlocked(int func, double value, int _)
|
||||||
|
{
|
||||||
|
var num = (int)(value > 0.0 ? value + 0.5 : value - 0.5);
|
||||||
|
if (func == 23 && num > 2)
|
||||||
|
{
|
||||||
|
_planets = null;
|
||||||
}
|
}
|
||||||
traverse.Field("forceUpdateCursorView").SetValue(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UpdateStarPlanetList()
|
public static void UpdateStarPlanetList()
|
||||||
{
|
{
|
||||||
var gameMain = GameMain.instance;
|
var gameMain = GameMain.instance;
|
||||||
if (gameMain == null) return;
|
if (gameMain == null) return;
|
||||||
var recheck = gameMain.timei >= _nextCheckTick;
|
|
||||||
var gameData = GameMain.data;
|
var gameData = GameMain.data;
|
||||||
|
if (gameData == null) return;
|
||||||
|
if (_stars == null) LoadAllStars();
|
||||||
|
if (_planets == null) LoadCurrentStarPlanets();
|
||||||
var localPlanet = gameData.localPlanet;
|
var localPlanet = gameData.localPlanet;
|
||||||
if (!recheck && localPlanet != _lastLocalPlanet)
|
var mainPlayer = gameData.mainPlayer;
|
||||||
{
|
if (localPlanet != null && localPlanet == _lastLocalPlanet)
|
||||||
recheck = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
var localStar = gameData.localStar;
|
|
||||||
var mainPlayer = GameMain.mainPlayer;
|
|
||||||
if (!recheck && localStar == _lastLocalStar && (mainPlayer.uPosition - _lastPlayerPos).sqrMagnitude < 2000.0 * 2000.0)
|
|
||||||
{
|
{
|
||||||
|
if (gameMain.timei < _nextCheckTick) return;
|
||||||
|
SortPlanets();
|
||||||
|
_nextCheckTick = gameMain.timei + 300;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_nextCheckTick = gameMain.timei + 300;
|
|
||||||
_lastLocalPlanet = localPlanet;
|
_lastLocalPlanet = localPlanet;
|
||||||
_lastLocalStar = localStar;
|
|
||||||
_lastPlayerPos = mainPlayer.uPosition;
|
_lastPlayerPos = mainPlayer.uPosition;
|
||||||
|
SortPlanets();
|
||||||
var selectTargetStar = CruiseAssistPlugin.SelectTargetStar;
|
_nextCheckTick = gameMain.timei + 300;
|
||||||
var selectTargetPlanet = CruiseAssistPlugin.SelectTargetPlanet;
|
var localStar = gameData.localStar;
|
||||||
GameMain.galaxy.stars.Select(star => new Tuple<StarData, double>(star, (star.uPosition - mainPlayer.uPosition).magnitude)).OrderBy(tuple => tuple.Item2).Do(delegate(Tuple<StarData, double> tuple)
|
if (localStar == _lastLocalStar)
|
||||||
{
|
{
|
||||||
var star = tuple.Item1;
|
if ((mainPlayer.uPosition - _lastPlayerPos).sqrMagnitude < 2000.0 * 2000.0)
|
||||||
var range = tuple.Item2;
|
return;
|
||||||
var starName = CruiseAssistPlugin.GetStarName(star);
|
|
||||||
var ok = false;
|
|
||||||
if (localStar != null && star.id == localStar.id)
|
|
||||||
{
|
|
||||||
ok = true;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (selectTargetStar != null && star.id == selectTargetStar.id && GameMain.history.universeObserveLevel >= (range >= 14400000.0 ? 4 : 3))
|
_lastLocalStar = localStar;
|
||||||
{
|
if (localStar != null)
|
||||||
ok = true;
|
LoadCurrentStarPlanets();
|
||||||
}
|
}
|
||||||
|
SortStars();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ok)
|
private static void LoadAllStars()
|
||||||
{
|
{
|
||||||
star.planets.Select(planet => new Tuple<PlanetData, double>(planet, (planet.uPosition - mainPlayer.uPosition).magnitude)).AddItem(new Tuple<PlanetData, double>(null, (star.uPosition - mainPlayer.uPosition).magnitude)).OrderBy(tuple2 => tuple2.Item2).Do(delegate(Tuple<PlanetData, double> tuple2)
|
_stars = [];
|
||||||
|
var uPos = GameMain.mainPlayer.uPosition;
|
||||||
|
foreach (var star in GameMain.galaxy.stars)
|
||||||
{
|
{
|
||||||
GUILayout.BeginHorizontal();
|
if (star == null) continue;
|
||||||
var planetData = tuple2.Item1;
|
var visted = CruiseAssistPlugin.Conf.MarkVisitedFlag && star.planets.Count(p => p.factory != null) > 0;
|
||||||
var distance = tuple2.Item2;
|
_stars.Add(new StarInfo
|
||||||
_nameLabelStyle.normal.textColor = Color.white;
|
|
||||||
_nRangeLabelStyle.normal.textColor = Color.white;
|
|
||||||
float height;
|
|
||||||
if (planetData == null)
|
|
||||||
{
|
{
|
||||||
if (selectTargetPlanet == null && selectTargetStar != null && star.id == selectTargetStar.id)
|
Data = star,
|
||||||
{
|
Name = (visted ? VisitedMark : NonVisitMark) + CruiseAssistPlugin.GetStarName(star),
|
||||||
_nameLabelStyle.normal.textColor = Color.cyan;
|
Range = (star.uPosition - uPos).magnitude,
|
||||||
_nRangeLabelStyle.normal.textColor = Color.cyan;
|
Visited = visted
|
||||||
}
|
|
||||||
var name = starName;
|
|
||||||
if (CruiseAssistPlugin.Conf.MarkVisitedFlag)
|
|
||||||
{
|
|
||||||
name = (star.planets.Where(p => p.factory != null).Count() > 0 ? VisitedMark : NonVisitMark) + name;
|
|
||||||
}
|
|
||||||
GUILayout.Label(name, _nameLabelStyle);
|
|
||||||
height = _nameLabelStyle.CalcHeight(new GUIContent(name), _nameLabelStyle.fixedWidth);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (selectTargetPlanet != null && planetData.id == selectTargetPlanet.id)
|
|
||||||
{
|
|
||||||
_nameLabelStyle.normal.textColor = Color.cyan;
|
|
||||||
_nRangeLabelStyle.normal.textColor = Color.cyan;
|
|
||||||
}
|
|
||||||
var name = starName + " - " + CruiseAssistPlugin.GetPlanetName(planetData);
|
|
||||||
if (CruiseAssistPlugin.Conf.MarkVisitedFlag)
|
|
||||||
{
|
|
||||||
name = (planetData.factory != null ? VisitedMark : NonVisitMark) + name;
|
|
||||||
}
|
|
||||||
GUILayout.Label(name, _nameLabelStyle);
|
|
||||||
height = _nameLabelStyle.CalcHeight(new GUIContent(name), _nameLabelStyle.fixedWidth);
|
|
||||||
}
|
|
||||||
GUILayout.FlexibleSpace();
|
|
||||||
GUILayout.Label(CruiseAssistMainUI.RangeToString(planetData == null ? range : distance), height < 30f ? _nRangeLabelStyle : _hRangeLabelStyle);
|
|
||||||
if (GUILayout.Button(ActionSelected[ListSelected] == 0 ? "SET" : planetData == null ? "-" : CruiseAssistPlugin.Bookmark.Contains(planetData.id) ? "DEL" : "ADD", height < 30f ? _nActionButtonStyle : _hActionButtonStyle))
|
|
||||||
{
|
|
||||||
VFAudio.Create("ui-click-0", null, Vector3.zero, true);
|
|
||||||
if (ActionSelected[ListSelected] == 0)
|
|
||||||
{
|
|
||||||
SelectStar(star, planetData);
|
|
||||||
var closeStarListWhenSetTargetPlanetFlag = CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag;
|
|
||||||
if (closeStarListWhenSetTargetPlanetFlag)
|
|
||||||
{
|
|
||||||
Show[_wIdx] = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (planetData != null)
|
|
||||||
{
|
|
||||||
if (CruiseAssistPlugin.Bookmark.Contains(planetData.id))
|
|
||||||
{
|
|
||||||
CruiseAssistPlugin.Bookmark.Remove(planetData.id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (CruiseAssistPlugin.Bookmark.Count <= 128)
|
|
||||||
{
|
|
||||||
CruiseAssistPlugin.Bookmark.Add(planetData.id);
|
|
||||||
CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300L;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
_nameLabelStyle.normal.textColor = Color.white;
|
|
||||||
_nRangeLabelStyle.normal.textColor = Color.white;
|
|
||||||
if (selectTargetStar != null && star.id == selectTargetStar.id)
|
|
||||||
{
|
|
||||||
_nameLabelStyle.normal.textColor = Color.cyan;
|
|
||||||
_nRangeLabelStyle.normal.textColor = Color.cyan;
|
|
||||||
}
|
|
||||||
var name = starName;
|
|
||||||
if (CruiseAssistPlugin.Conf.MarkVisitedFlag)
|
|
||||||
{
|
|
||||||
name = (star.planets.Count(p => p.factory != null) > 0 ? VisitedMark : NonVisitMark) + name;
|
|
||||||
}
|
|
||||||
GUILayout.Label(name, _nameLabelStyle);
|
|
||||||
var height = _nameLabelStyle.CalcHeight(new GUIContent(name), _nameLabelStyle.fixedWidth);
|
|
||||||
GUILayout.FlexibleSpace();
|
|
||||||
GUILayout.Label(CruiseAssistMainUI.RangeToString(range), height < 30f ? _nRangeLabelStyle : _hRangeLabelStyle);
|
|
||||||
if (GUILayout.Button(ActionSelected[ListSelected] == 0 ? "SET" : "-", height < 30f ? _nActionButtonStyle : _hActionButtonStyle))
|
|
||||||
{
|
|
||||||
VFAudio.Create("ui-click-0", null, Vector3.zero, true);
|
|
||||||
if (ActionSelected[ListSelected] == 0)
|
|
||||||
{
|
|
||||||
SelectStar(star, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct StarInfo
|
private static void LoadCurrentStarPlanets()
|
||||||
|
{
|
||||||
|
_planets = [];
|
||||||
|
var localStar = GameMain.localStar;
|
||||||
|
VectorLF3 uPos;
|
||||||
|
if (localStar != null)
|
||||||
|
{
|
||||||
|
uPos = GameMain.mainPlayer.uPosition;
|
||||||
|
foreach (var planet in localStar.planets)
|
||||||
|
{
|
||||||
|
if (planet == null) continue;
|
||||||
|
var visted = CruiseAssistPlugin.Conf.MarkVisitedFlag && planet.factory != null;
|
||||||
|
_planets.Add(new PlanetInfo
|
||||||
|
{
|
||||||
|
Data = planet,
|
||||||
|
Name = (visted ? VisitedMark : NonVisitMark) + CruiseAssistPlugin.GetPlanetName(planet),
|
||||||
|
Range = (planet.uPosition - uPos).magnitude,
|
||||||
|
Visited = visted
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var selectedStar = CruiseAssistPlugin.SelectTargetStar;
|
||||||
|
if (selectedStar == null || selectedStar == localStar) return;
|
||||||
|
uPos = GameMain.mainPlayer.uPosition;
|
||||||
|
var range = (selectedStar.uPosition - uPos).magnitude;
|
||||||
|
if (GameMain.history.universeObserveLevel < (range >= 14400000.0 ? 4 : 3)) return;
|
||||||
|
foreach (var planet in selectedStar.planets)
|
||||||
|
{
|
||||||
|
if (planet == null) continue;
|
||||||
|
var visted = CruiseAssistPlugin.Conf.MarkVisitedFlag && planet.factory != null;
|
||||||
|
_planets.Add(new PlanetInfo
|
||||||
|
{
|
||||||
|
Data = planet,
|
||||||
|
Name = (visted ? VisitedMark : NonVisitMark) + CruiseAssistPlugin.GetPlanetName(planet),
|
||||||
|
Range = (planet.uPosition - uPos).magnitude,
|
||||||
|
Visited = visted
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SortStars()
|
||||||
|
{
|
||||||
|
_stars.Sort((s1, s2) => s1.Range.CompareTo(s2.Range));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SortPlanets()
|
||||||
|
{
|
||||||
|
_planets.Sort((p1, p2) => p1.Range.CompareTo(p2.Range));
|
||||||
|
}
|
||||||
|
|
||||||
|
private class StarInfo
|
||||||
{
|
{
|
||||||
public StarData Data;
|
public StarData Data;
|
||||||
public string Name;
|
public string Name;
|
||||||
public double sqrDistance;
|
public double Range;
|
||||||
public bool Visited;
|
public bool Visited;
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct PlanetInfo
|
private class PlanetInfo
|
||||||
{
|
{
|
||||||
public PlanetData Data;
|
public PlanetData Data;
|
||||||
public string Name;
|
public string Name;
|
||||||
public double sqrDistance;
|
public double Range;
|
||||||
public bool Visited;
|
public bool Visited;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static StarInfo[] _stars = [];
|
private static List<StarInfo> _stars;
|
||||||
private static PlanetInfo[] _planets = [];
|
private static List<PlanetInfo> _planets;
|
||||||
|
|
||||||
|
private static long _nextCheckTick;
|
||||||
private static StarData _lastLocalStar;
|
private static StarData _lastLocalStar;
|
||||||
private static PlanetData _lastLocalPlanet;
|
private static PlanetData _lastLocalPlanet;
|
||||||
private static VectorLF3 _lastPlayerPos = VectorLF3.zero;
|
private static VectorLF3 _lastPlayerPos = VectorLF3.zero;
|
||||||
private static long _nextCheckTick;
|
|
||||||
private static int _wIdx;
|
private static int _wIdx;
|
||||||
public const float WindowWidth = 400f;
|
public const float WindowWidth = 400f;
|
||||||
public const float WindowHeight = 480f;
|
public const float WindowHeight = 480f;
|
||||||
|
|||||||
Reference in New Issue
Block a user