Files
WordConnect/Assets/WordConnectGameToolkit/Scripts/GUI/BackgroundChanger.cs

84 lines
2.6 KiB
C#

// // ©2015 - 2025 Candy Smith
// // All rights reserved
// // Redistribution of this software is strictly not allowed.
// // Copy of this software can be obtained from unity asset store only.
// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// // THE SOFTWARE.
using UnityEngine;
using UnityEngine.UI;
using VContainer;
using WordsToolkit.Scripts.Gameplay.Managers;
using WordsToolkit.Scripts.Infrastructure.Service;
using WordsToolkit.Scripts.Levels;
using WordsToolkit.Scripts.Popups;
using WordsToolkit.Scripts.System;
namespace WordsToolkit.Scripts.GUI
{
public class BackgroundChanger : MonoBehaviour
{
[SerializeField]
private Image image;
private ILevelLoaderService levelLoaderService;
private StateManager stateManager;
[SerializeField]
private Sprite mainBackground;
[Inject]
public void Construct(ILevelLoaderService levelLoaderService, StateManager stateManager)
{
this.levelLoaderService = levelLoaderService;
this.levelLoaderService.OnLevelLoaded += OnLevelLoaded;
SceneLoader.OnGameStart += SetBack;
this.stateManager = stateManager;
}
private void OnEnable()
{
stateManager.OnStateChanged.AddListener(OnStateChanged);
}
private void OnStateChanged(EScreenStates arg0)
{
if (arg0 == EScreenStates.Game)
{
SetBack();
}else if (arg0 == EScreenStates.MainMenu)
{
image.sprite = mainBackground;
}
}
private void SetBack()
{
image.sprite = GameDataManager.GetLevel().background;
}
private void OnDestroy()
{
if (levelLoaderService != null)
{
levelLoaderService.OnLevelLoaded -= OnLevelLoaded;
SceneLoader.OnGameStart -= SetBack;
stateManager.OnStateChanged.RemoveListener(OnStateChanged);
}
}
private void OnLevelLoaded(Level level)
{
image.sprite = level.background;
}
public void SetBackground(Sprite bg)
{
image.sprite = bg;
}
}
}