111 lines
4.5 KiB
C#
111 lines
4.5 KiB
C#
|
|
using System;
|
||
|
|
using System.Collections;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using Ichni.RhythmGame.Beatmap;
|
||
|
|
using UnityEngine;
|
||
|
|
|
||
|
|
namespace Ichni.RhythmGame
|
||
|
|
{
|
||
|
|
public partial class BackgroundSetter : GameElement
|
||
|
|
{
|
||
|
|
public bool useSkybox;
|
||
|
|
public string skyboxThemeBundleName;
|
||
|
|
public string skyboxMaterialName;
|
||
|
|
public Material skyboxMaterial;
|
||
|
|
public string backgroundSpriteName;
|
||
|
|
public Sprite backgroundSprite;
|
||
|
|
|
||
|
|
public static BackgroundSetter GenerateElement(string elementName, Guid id, List<string> tags,
|
||
|
|
bool isFirstGenerated, GameElement parentElement, bool useSkybox, string skyboxThemeBundleName,
|
||
|
|
string skyboxMaterialName, string backgroundSpriteName)
|
||
|
|
{
|
||
|
|
BackgroundSetter backgroundSetter = Instantiate(GameManager.instance.basePrefabs.emptyObject)
|
||
|
|
.AddComponent<BackgroundSetter>();
|
||
|
|
GameManager.instance.backgroundSetter = backgroundSetter;
|
||
|
|
backgroundSetter.Initialize(elementName, id, tags, isFirstGenerated, parentElement);
|
||
|
|
backgroundSetter.useSkybox = useSkybox;
|
||
|
|
backgroundSetter.skyboxThemeBundleName = skyboxThemeBundleName;
|
||
|
|
backgroundSetter.skyboxMaterialName = skyboxMaterialName;
|
||
|
|
backgroundSetter.backgroundSpriteName = backgroundSpriteName;
|
||
|
|
return backgroundSetter;
|
||
|
|
}
|
||
|
|
public override void Refresh()
|
||
|
|
{
|
||
|
|
GameManager.instance.backgroundController.EnableBackground(!useSkybox);
|
||
|
|
if (useSkybox)
|
||
|
|
{
|
||
|
|
SetSkybox(skyboxThemeBundleName, skyboxMaterialName);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
SetBackgroundSprite(backgroundSpriteName);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public partial class BackgroundSetter
|
||
|
|
{
|
||
|
|
public override void SaveBM()
|
||
|
|
{
|
||
|
|
matchedBM = new BackgroundSetter_BM(elementName, elementGuid, tags, null,
|
||
|
|
useSkybox, skyboxThemeBundleName, skyboxMaterialName, backgroundSpriteName);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public partial class BackgroundSetter
|
||
|
|
{
|
||
|
|
private void SetSkybox(string themeBundleName, string materialName)
|
||
|
|
{
|
||
|
|
skyboxThemeBundleName = themeBundleName;
|
||
|
|
skyboxMaterialName = materialName;
|
||
|
|
skyboxMaterial = ThemeBundleManager.instance.GetObject<Material>(themeBundleName, materialName);
|
||
|
|
if (skyboxMaterial == null) skyboxMaterial = GameManager.instance.basePrefabs.defaultSkyboxMaterial;
|
||
|
|
GameManager.instance.backgroundController.SetSkybox(skyboxMaterial);
|
||
|
|
}
|
||
|
|
|
||
|
|
private void SetBackgroundSprite(string spriteName)
|
||
|
|
{
|
||
|
|
string path = GameManager.instance.projectInformation.projectPath + "/Sprites/" + spriteName + ".png";
|
||
|
|
backgroundSprite = ES3.FileExists(path) ? ES3.Load<Sprite>(path) : GameManager.instance.basePrefabs.defaultBackground;
|
||
|
|
GameManager.instance.backgroundController.SetBackground(backgroundSprite);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
namespace Beatmap
|
||
|
|
{
|
||
|
|
public class BackgroundSetter_BM : GameElement_BM
|
||
|
|
{
|
||
|
|
public bool useSkybox;
|
||
|
|
public string skyboxThemeBundleName;
|
||
|
|
public string skyboxMaterialName;
|
||
|
|
public string backgroundSpriteName;
|
||
|
|
|
||
|
|
public BackgroundSetter_BM()
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
public BackgroundSetter_BM(string elementName, Guid elementGuid, List<string> tags, GameElement_BM attachedElement,
|
||
|
|
bool useSkybox, string skyboxThemeBundleName, string skyboxMaterialName, string backgroundSpriteName)
|
||
|
|
: base(elementName, elementGuid, tags, attachedElement)
|
||
|
|
{
|
||
|
|
this.useSkybox = useSkybox;
|
||
|
|
this.skyboxThemeBundleName = skyboxThemeBundleName;
|
||
|
|
this.skyboxMaterialName = skyboxMaterialName;
|
||
|
|
this.backgroundSpriteName = backgroundSpriteName;
|
||
|
|
}
|
||
|
|
|
||
|
|
public override void ExecuteBM()
|
||
|
|
{
|
||
|
|
matchedElement = BackgroundSetter.GenerateElement(elementName, elementGuid, tags, false,
|
||
|
|
GetElement(attachedElementGuid), useSkybox, skyboxThemeBundleName, skyboxMaterialName, backgroundSpriteName);
|
||
|
|
}
|
||
|
|
|
||
|
|
public override GameElement DuplicateBM(GameElement attached)
|
||
|
|
{
|
||
|
|
return BackgroundSetter.GenerateElement(elementName, Guid.NewGuid(), tags, false, attached,
|
||
|
|
useSkybox, skyboxThemeBundleName, skyboxMaterialName, backgroundSpriteName);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|