Space Soccer, Minigames

Adds background changing, and adds the new ver stuff, add game versions to the Asset Bundle stuff (and remove some testing code)
This commit is contained in:
Amy54Desu 2023-01-03 10:29:33 -05:00
parent ae44bebf90
commit a360735531
5 changed files with 139 additions and 20 deletions

View file

@ -192,6 +192,7 @@ namespace HeavenStudio
Debug.Log("ASYNC loading assetbundle for game " + gameName); Debug.Log("ASYNC loading assetbundle for game " + gameName);
StartCoroutine(inf.LoadCommonAssetBundleAsync()); StartCoroutine(inf.LoadCommonAssetBundleAsync());
StartCoroutine(inf.LoadLocalizedAssetBundleAsync()); StartCoroutine(inf.LoadLocalizedAssetBundleAsync());
StartCoroutine(inf.LoadVersionAssetBundleAsync());
} }
currentPreSwitch++; currentPreSwitch++;
} }
@ -212,6 +213,7 @@ namespace HeavenStudio
Debug.Log("ASYNC loading assetbundle for game " + gameName); Debug.Log("ASYNC loading assetbundle for game " + gameName);
StartCoroutine(inf.LoadCommonAssetBundleAsync()); StartCoroutine(inf.LoadCommonAssetBundleAsync());
StartCoroutine(inf.LoadLocalizedAssetBundleAsync()); StartCoroutine(inf.LoadLocalizedAssetBundleAsync());
StartCoroutine(inf.LoadVersionAssetBundleAsync());
} }
} }
currentPreEvent++; currentPreEvent++;

View file

@ -41,6 +41,27 @@ namespace HeavenStudio.Games.Loaders
}, },
inactiveFunction = delegate { SpaceSoccer.Voice(eventCaller.currentEntity.beat, eventCaller.currentEntity["type"]); } inactiveFunction = delegate { SpaceSoccer.Voice(eventCaller.currentEntity.beat, eventCaller.currentEntity["type"]); }
}, },
new GameAction("set bg color", "Set Background Color")
{
function = delegate { var e = eventCaller.currentEntity; SpaceSoccer.instance.ChangeBackgroundColor(0f, e["type"], e["color"]); },
defaultLength = 0.5f,
parameters = new List<Param>()
{
new Param("type", SpaceSoccer.BackgroundColors.Ver0, "Backgrounds", "The normal backgrounds used in the game"),
new Param("color", SpaceSoccer.ver0BgColor, "Custom Color", "Custom background color"),
}
},
new GameAction("fade bg color", "Fade Background Color")
{
function = delegate { var e = eventCaller.currentEntity; SpaceSoccer.instance.ChangeBackgroundColor(e.length, e["type"], e["color"]); },
defaultLength = 1f,
resizable = true,
parameters = new List<Param>()
{
new Param("type", SpaceSoccer.BackgroundColors.Ver0, "Backgrounds", "The normal backgrounds used in the game"),
new Param("color", SpaceSoccer.ver1BgColor, "Background Color", "Changes the background color"),
}
},
// This is still here for "backwards-compatibility" but is hidden in the editor (it does absolutely nothing however) // This is still here for "backwards-compatibility" but is hidden in the editor (it does absolutely nothing however)
new GameAction("keep-up", "") new GameAction("keep-up", "")
{ {
@ -50,8 +71,9 @@ namespace HeavenStudio.Games.Loaders
}, },
}, },
new List<string>() {"ntr", "keep"}, new List<string>() {"ntr", "keep"},
"ntrlifting", "jp", "ntrlifting", "jp", Minigames.Version, //"remix6",
new List<string>() {"en", "jp", "ko"} new List<string>() {"en", "jp", "ko"},
new List<string>() {"ver0", "ver2", "remix6"}
); );
} }
} }
@ -59,6 +81,7 @@ namespace HeavenStudio.Games.Loaders
namespace HeavenStudio.Games namespace HeavenStudio.Games
{ {
using DG.Tweening;
using Scripts_SpaceSoccer; using Scripts_SpaceSoccer;
public class SpaceSoccer : Minigame public class SpaceSoccer : Minigame
@ -73,6 +96,13 @@ namespace HeavenStudio.Games
Toe, Toe,
} }
public enum BackgroundColors
{
Ver0,
Ver1,
Custom
}
[Header("Components")] [Header("Components")]
[SerializeField] private GameObject ballRef; [SerializeField] private GameObject ballRef;
[SerializeField] private List<Kicker> kickers; [SerializeField] private List<Kicker> kickers;
@ -82,8 +112,30 @@ namespace HeavenStudio.Games
[Header("Properties")] [Header("Properties")]
[SerializeField] private bool ballDispensed; //unused [SerializeField] private bool ballDispensed; //unused
public static SpaceSoccer instance { get; private set; } [Header("Backgrounds")]
public SpriteRenderer bg;
Tween bgColorTween;
public static SpaceSoccer instance { get; private set; }
private static Color _ver0BgColor;
public static Color ver0BgColor
{
get
{
ColorUtility.TryParseHtmlString("#FF7D27", out _ver0BgColor);
return _ver0BgColor;
}
}
private static Color _ver1BgColor;
public static Color ver1BgColor
{
get
{
ColorUtility.TryParseHtmlString("#010161", out _ver1BgColor);
return _ver1BgColor;
}
}
private void Awake() private void Awake()
{ {
instance = this; instance = this;
@ -167,6 +219,36 @@ namespace HeavenStudio.Games
string[] VoiceClips = { "down", "and", "andAlt", "kick", "highkicktoe1", "highkicktoe3" }; string[] VoiceClips = { "down", "and", "andAlt", "kick", "highkicktoe1", "highkicktoe3" };
Jukebox.PlayOneShotGame("spaceSoccer/" + VoiceClips[type], forcePlay:true); Jukebox.PlayOneShotGame("spaceSoccer/" + VoiceClips[type], forcePlay:true);
} }
public void ChangeBackgroundColor(float beats, int type, Color color)
{
var seconds = Conductor.instance.secPerBeat * beats;
var newColor = color;
if (bgColorTween != null)
bgColorTween.Kill(true);
switch (type)
{
case (int) BackgroundColors.Ver0:
newColor = _ver0BgColor;
break;
case (int) BackgroundColors.Ver1:
newColor = _ver1BgColor;
break;
default:
break;
}
if (seconds == 0)
{
bg.color = newColor;
}
else
{
bgColorTween = bg.DOColor(newColor, seconds);
}
}
} }
} }

View file

@ -518,7 +518,7 @@ namespace HeavenStudio.Editor
private void UpdateEditorStatus(bool updateTime) private void UpdateEditorStatus(bool updateTime)
{ {
if (discordDuringTesting || !Application.isEditor) if (discordDuringTesting || !Application.isEditor)
DiscordRPC.DiscordRPC.UpdateActivity("リミックスを作っている", $"{remixName}", updateTime);//("In Editor", $"{remixName}", updateTime); DiscordRPC.DiscordRPC.UpdateActivity("In Editor", $"{remixName}", updateTime);
} }
public string GetJson() public string GetJson()

View file

@ -19,7 +19,6 @@ namespace HeavenStudio
public class Minigames public class Minigames
{ {
public string cueLanguage;
public class Minigame public class Minigame
{ {
public string name; public string name;
@ -32,12 +31,15 @@ namespace HeavenStudio
public List<string> tags; public List<string> tags;
public string defaultLocale = "en"; public string defaultLocale = "en";
public string defaultVersion = "ver0";
public string wantAssetBundle = ""; public string wantAssetBundle = "";
public List<string> supportedLocales; public List<string> supportedLocales;
public List<string> gameVersions;
public bool usesAssetBundle => (wantAssetBundle != ""); public bool usesAssetBundle => (wantAssetBundle != "");
public bool hasLocales => (supportedLocales.Count > 0); public bool hasLocales => (supportedLocales.Count > 0);
public bool AssetsLoaded => (((hasLocales && localeLoaded && currentLoadedLocale == defaultLocale) || (!hasLocales)) && commonLoaded); public bool hasVersions => (gameVersions.Count > 0);
public bool AssetsLoaded => (((hasLocales && localeLoaded && currentLoadedLocale == defaultLocale) || (hasVersions && versionLoaded && currentLoadedVersion == defaultVersion) || (!hasLocales || !hasVersions)) && commonLoaded);
private AssetBundle bundleCommon = null; private AssetBundle bundleCommon = null;
private bool commonLoaded = false; private bool commonLoaded = false;
@ -46,8 +48,12 @@ namespace HeavenStudio
private AssetBundle bundleLocalized = null; private AssetBundle bundleLocalized = null;
private bool localeLoaded = false; private bool localeLoaded = false;
private bool localePreloaded = false; private bool localePreloaded = false;
private string currentLoadedVersion = "";
private AssetBundle bundleVersion = null;
private bool versionLoaded = false;
private bool versionPreloaded = false;
public Minigame(string name, string displayName, string color, bool threeD, bool fxOnly, List<GameAction> actions, List<string> tags = null, string assetBundle = "", string defaultLocale = "en", List<string> supportedLocales = null) public Minigame(string name, string displayName, string color, bool threeD, bool fxOnly, List<GameAction> actions, List<string> tags = null, string assetBundle = "", string defaultLocale = "en", string defaultVersion = "ver0", List<string> supportedLocales = null, List<string> gameVersions = null)
{ {
this.name = name; this.name = name;
this.displayName = displayName; this.displayName = displayName;
@ -60,6 +66,23 @@ namespace HeavenStudio
this.wantAssetBundle = assetBundle; this.wantAssetBundle = assetBundle;
this.defaultLocale = defaultLocale; this.defaultLocale = defaultLocale;
this.supportedLocales = supportedLocales ?? new List<string>(); this.supportedLocales = supportedLocales ?? new List<string>();
this.defaultVersion = defaultVersion;
this.gameVersions = gameVersions;
}
public AssetBundle GetVariationAssetBundle()
{
if (!hasVersions) return null;
if (!usesAssetBundle) return null;
if (bundleVersion == null || currentLoadedVersion != defaultVersion) //TEMPORARY: use the game's default locale until we add localization support
{
if (versionLoaded) return bundleVersion;
// TODO: try/catch for missing assetbundles
currentLoadedVersion = defaultVersion;
bundleLocalized = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, wantAssetBundle + "/ver." + defaultVersion));
versionLoaded = true;
}
return bundleVersion;
} }
public AssetBundle GetLocalizedAssetBundle() public AssetBundle GetLocalizedAssetBundle()
@ -133,6 +156,29 @@ namespace HeavenStudio
currentLoadedLocale = defaultLocale; currentLoadedLocale = defaultLocale;
localeLoaded = true; localeLoaded = true;
} }
public IEnumerator LoadVersionAssetBundleAsync()
{
if (versionPreloaded) yield break;
versionPreloaded = true;
if (!hasVersions) yield break;
if (!usesAssetBundle) yield break;
if (versionLoaded && bundleVersion != null && currentLoadedVersion == defaultVersion) yield break;
AssetBundleCreateRequest asyncBundleRequest = AssetBundle.LoadFromFileAsync(Path.Combine(Application.streamingAssetsPath, wantAssetBundle + "/ver." + defaultVersion));
if (versionLoaded && bundleVersion != null && currentLoadedVersion == defaultVersion) yield break;
yield return asyncBundleRequest;
AssetBundle localAssetBundle = asyncBundleRequest.assetBundle;
if (versionLoaded && bundleVersion != null && currentLoadedVersion == defaultVersion) yield break;
yield return localAssetBundle;
if (localAssetBundle == null) yield break;
bundleVersion = localAssetBundle;
currentLoadedVersion = defaultVersion;
versionLoaded = true;
}
} }
public class GameAction public class GameAction
@ -234,8 +280,10 @@ namespace HeavenStudio
} }
public static string Version = "remix6";
public static void Init(EventCaller eventCaller) public static void Init(EventCaller eventCaller)
{ {
Version = "remix6";
eventCaller.minigames = new List<Minigame>() eventCaller.minigames = new List<Minigame>()
{ {
new Minigame("gameManager", "Game Manager", "", false, true, new List<GameAction>() new Minigame("gameManager", "Game Manager", "", false, true, new List<GameAction>()
@ -264,13 +312,6 @@ namespace HeavenStudio
GameManager.instance.ToggleInputs(eventCaller.currentEntity["toggle"]); GameManager.instance.ToggleInputs(eventCaller.currentEntity["toggle"]);
} }
), ),
//new GameAction("cueLanguage", "Cue Language", 0.5f, false,
// new List<Param>()
// {
// new Param("type", SoundEffects.Langauges.English, "Language", "The language the cues will be in")
// },
// delegate { SoundEffects.LanguageChange(this, eventCaller.currentEntity["type"]); }
//),
// These are still here for backwards-compatibility but are hidden in the editor // These are still here for backwards-compatibility but are hidden in the editor
new GameAction("flash", "", 1f, true, new GameAction("flash", "", 1f, true,

View file

@ -99,12 +99,6 @@ namespace HeavenStudio
sound += "2"; sound += "2";
Jukebox.PlayOneShot(sound); Jukebox.PlayOneShot(sound);
} }
public static void LanguageChange(Minigames minigame, int lang)
{
string[] languages = { "en", "jp", "ko" };
minigame.cueLanguage = languages[lang];
}
} }
} }