builds
This commit is contained in:
81
Scripts/MainMenuUI/GameUI.cs
Normal file
81
Scripts/MainMenuUI/GameUI.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
public class GameUI : MonoBehaviour
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
#endregion
|
||||
#region VARIABLES
|
||||
|
||||
private UIDocument _document;
|
||||
private Button _pauseButton;
|
||||
private Button _playButton;
|
||||
private Button _exitButton;
|
||||
|
||||
#endregion
|
||||
#region EVENTS
|
||||
private void OnPauseButton(ClickEvent e)
|
||||
{
|
||||
GameHandler.Instance.PauseGame();
|
||||
}
|
||||
private void OnPlayButton(ClickEvent e)
|
||||
{
|
||||
GameHandler.Instance.ResumeGame();
|
||||
}
|
||||
private void OnExitButton(ClickEvent e)
|
||||
{
|
||||
GameController.Instance.ExitToMenu("Retour au menu principal");
|
||||
}
|
||||
private void React_OnGamePaused(object sender, EventArgs e)
|
||||
{
|
||||
ChangeButtonsVisibility(true);
|
||||
}
|
||||
private void React_OnGameResumed(object sender, EventArgs e)
|
||||
{
|
||||
ChangeButtonsVisibility(false);
|
||||
}
|
||||
#endregion
|
||||
#region METHODS
|
||||
private void ChangeButtonsVisibility(bool isPaused)
|
||||
{
|
||||
if (isPaused)
|
||||
{
|
||||
_pauseButton.style.display = DisplayStyle.None;
|
||||
_playButton.style.display = DisplayStyle.Flex;
|
||||
_exitButton.style.display = DisplayStyle.Flex;
|
||||
}
|
||||
else
|
||||
{
|
||||
_playButton.style.display = DisplayStyle.None;
|
||||
_exitButton.style.display = DisplayStyle.None;
|
||||
_pauseButton.style.display = DisplayStyle.Flex;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
#region LIFECYCLE
|
||||
private void Awake()
|
||||
{
|
||||
_document=GetComponent<UIDocument>();
|
||||
_pauseButton = _document.rootVisualElement.Q("PauseButton") as Button;
|
||||
_pauseButton.RegisterCallback<ClickEvent>(OnPauseButton);
|
||||
_playButton = _document.rootVisualElement.Q("PlayButton") as Button;
|
||||
_playButton.RegisterCallback<ClickEvent>(OnPlayButton);
|
||||
_exitButton = _document.rootVisualElement.Q("ExitButton") as Button;
|
||||
_exitButton.RegisterCallback<ClickEvent>(OnExitButton);
|
||||
|
||||
ChangeButtonsVisibility(false);
|
||||
|
||||
GameHandler.Instance.OnGamePaused += React_OnGamePaused;
|
||||
GameHandler.Instance.OnGameResumed += React_OnGameResumed;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
41
Scripts/MainMenuUI/HoverDescripionScript.cs
Normal file
41
Scripts/MainMenuUI/HoverDescripionScript.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using TMPro;
|
||||
|
||||
public class HoverDescriptionScript : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
|
||||
{
|
||||
[SerializeField] private string description; // La description à afficher
|
||||
private TextMeshProUGUI descriptionText; // Référence au TextMeshPro pour afficher la description
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// Trouver l'objet Infobox dans la scène et obtenir le TextMeshPro
|
||||
GameObject infobox = GameObject.Find("Infobox");
|
||||
if (infobox != null)
|
||||
{
|
||||
descriptionText = infobox.GetComponentInChildren<TextMeshProUGUI>();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("Infobox not found in the scene.");
|
||||
}
|
||||
}
|
||||
|
||||
// Méthode appelée quand la souris entre dans le collider de l'objet
|
||||
public void OnPointerEnter(PointerEventData eventData)
|
||||
{
|
||||
if (descriptionText != null)
|
||||
{
|
||||
descriptionText.text = description;
|
||||
}
|
||||
}
|
||||
|
||||
// Méthode appelée quand la souris sort du collider de l'objet
|
||||
public void OnPointerExit(PointerEventData eventData)
|
||||
{
|
||||
if (descriptionText != null)
|
||||
{
|
||||
descriptionText.text = "Survolez un element pour en avoir une description !";
|
||||
}
|
||||
}
|
||||
}
|
256
Scripts/MainMenuUI/MenuController.cs
Normal file
256
Scripts/MainMenuUI/MenuController.cs
Normal file
@@ -0,0 +1,256 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.SceneManagement;
|
||||
using TMPro;
|
||||
using Unity.VisualScripting;
|
||||
|
||||
public class MenuController : MonoBehaviour
|
||||
{
|
||||
[Header("Play Button")]
|
||||
[SerializeField] Button playerButton;
|
||||
|
||||
[Header("Player Selection Settings")]
|
||||
[SerializeField] Toggle omnicientBotToggler = null;
|
||||
[SerializeField] Toggle observerBotToggler = null;
|
||||
[SerializeField] Toggle iteratorBotToggler = null;
|
||||
[SerializeField] Toggle humanPlayerToggler = null;
|
||||
|
||||
[Header("Level Settings")]
|
||||
[SerializeField] Toggle laserToggler = null;
|
||||
[SerializeField] Toggle missileToggler = null;
|
||||
[SerializeField] Toggle coinToggler = null;
|
||||
[SerializeField] Toggle badCoinToggler = null;
|
||||
[SerializeField] Toggle surviveScoreToggler = null;
|
||||
|
||||
[Header("Seed Settings")]
|
||||
[SerializeField] Toggle changeSeedToggler = null;
|
||||
[SerializeField] Toggle useDefaultSeedToggler = null;
|
||||
[SerializeField] TMP_InputField defaultSeedInputField = null;
|
||||
[SerializeField] TMP_InputField customSeedInputField = null;
|
||||
|
||||
[Header("Session Settings")]
|
||||
[SerializeField] Slider maxSpeedSlider = null;
|
||||
[SerializeField] Slider startSpeedSlider = null;
|
||||
[SerializeField] Slider difficultyMultiplyerSlider = null;
|
||||
[SerializeField] Toggle rushModeToggler = null;
|
||||
[SerializeField] TMP_InputField maxTryInputField = null;
|
||||
[SerializeField] TMP_InputField maxTimeInputField = null;
|
||||
[SerializeField] TMP_InputField maxDistanceInputField = null;
|
||||
|
||||
[Header("Menu Controller")]
|
||||
public string _statsScene;
|
||||
public string _playScene;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
Time.timeScale = 1;
|
||||
SetMaxSpeed();
|
||||
SetStartSpeed();
|
||||
SetDifficultyMultiplyer();
|
||||
SetRushModeToggle();
|
||||
SetMaxTry();
|
||||
SetMaxTime();
|
||||
SetMaxDistance();
|
||||
SetChangeSeed();
|
||||
SetUseDefaultSeed();
|
||||
SetDefaultSeedValue();
|
||||
SetCustomSeedValue();
|
||||
SetLaserToggle();
|
||||
SetMissileToggle();
|
||||
SetCoinToggle();
|
||||
SetBadCoinToggle();
|
||||
SetSurviveScoreToggle();
|
||||
SetOmnicientBotSelected();
|
||||
SetObserverBotSelected();
|
||||
SetIteratorBotSelected();
|
||||
SetHumanPlayerSelected();
|
||||
}
|
||||
|
||||
public void StatsButtonClicked()
|
||||
{
|
||||
Debug.Log("=============================================");
|
||||
SceneManager.LoadScene(_statsScene);
|
||||
}
|
||||
public void PlayButtonClicked()
|
||||
{
|
||||
Debug.Log("=============================================");
|
||||
SceneManager.LoadScene(_playScene);
|
||||
}
|
||||
|
||||
void OnPlayerSelectionChanged()
|
||||
{
|
||||
bool omnicient = omnicientBotToggler.isOn;
|
||||
bool observer = observerBotToggler.isOn;
|
||||
bool iterator = iteratorBotToggler.isOn;
|
||||
bool human = humanPlayerToggler.isOn;
|
||||
|
||||
playerButton.interactable = (omnicient || observer || iterator || human);
|
||||
}
|
||||
|
||||
public void QuitButtonClicked()
|
||||
{
|
||||
Debug.Log("Game quitting");
|
||||
Application.Quit();
|
||||
}
|
||||
|
||||
// Session Rules
|
||||
public void SetMaxSpeed()
|
||||
{
|
||||
float speed = maxSpeedSlider.value;
|
||||
PlayerPrefs.SetFloat(Settings.MaxSpeedSettingValue, speed);
|
||||
Debug.Log($"Game's max speed is set to {speed}");
|
||||
}
|
||||
public void SetStartSpeed()
|
||||
{
|
||||
float speed = startSpeedSlider.value;
|
||||
PlayerPrefs.SetFloat(Settings.StartSpeedSettingValue, speed);
|
||||
Debug.Log($"Game's starting speed is set to {speed}");
|
||||
}
|
||||
public void SetDifficultyMultiplyer()
|
||||
{
|
||||
float value = difficultyMultiplyerSlider.value;
|
||||
PlayerPrefs.SetFloat(Settings.DifficultyMultiplierSettingValue, value);
|
||||
Debug.Log($"Game's difficulty multiplyer is set to {value}");
|
||||
}
|
||||
public void SetRushModeToggle()
|
||||
{
|
||||
bool toggle = rushModeToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.RushModeSettingToggle, toggle.ToString());
|
||||
Debug.Log($"Rush Mode has been toggeled to {toggle}");
|
||||
}
|
||||
public void SetMaxTry()
|
||||
{
|
||||
int value = 0;
|
||||
string text = maxTryInputField.text;
|
||||
if (text != "")
|
||||
{
|
||||
value = int.Parse(text);
|
||||
}
|
||||
PlayerPrefs.SetInt(Settings.MaxTrySettingValue, value);
|
||||
Debug.Log($"Game's maximum try count is set to {value}");
|
||||
}
|
||||
public void SetMaxTime()
|
||||
{
|
||||
int seconds = 0;
|
||||
string text = maxTimeInputField.text;
|
||||
if (text != "")
|
||||
{
|
||||
seconds = int.Parse(text);
|
||||
}
|
||||
PlayerPrefs.SetInt(Settings.MaxTimeSettingValue, seconds);
|
||||
Debug.Log($"Game's session maximum time is set to {seconds} seconds");
|
||||
}
|
||||
public void SetMaxDistance()
|
||||
{
|
||||
int distance = 0;
|
||||
string text = maxDistanceInputField.text;
|
||||
if (text != "")
|
||||
{
|
||||
distance = int.Parse(text);
|
||||
}
|
||||
PlayerPrefs.SetFloat(Settings.MaxDistanceSettingValue, distance);
|
||||
Debug.Log($"Level's max distance is set to {distance} units");
|
||||
}
|
||||
|
||||
// Seed Rules
|
||||
public void SetChangeSeed()
|
||||
{
|
||||
bool toggle = changeSeedToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.ChangeSeedSetting, toggle.ToString());
|
||||
Debug.Log($"Changing seed for each level is set to {toggle}");
|
||||
}
|
||||
public void SetUseDefaultSeed()
|
||||
{
|
||||
bool toggle = useDefaultSeedToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.UseDefaultSeedSetting, toggle.ToString());
|
||||
Debug.Log($"Usign default seed is set to {toggle}");
|
||||
}
|
||||
public void SetDefaultSeedValue()
|
||||
{
|
||||
int value = 0;
|
||||
string text = defaultSeedInputField.text;
|
||||
if(text != "")
|
||||
{
|
||||
value = int.Parse(text);
|
||||
}
|
||||
PlayerPrefs.SetInt(Settings.DefaultSeedSettingValue, value);
|
||||
Debug.Log($"Default seed has been set to {value}");
|
||||
}
|
||||
public void SetCustomSeedValue()
|
||||
{
|
||||
int value = 0;
|
||||
string text = customSeedInputField.text;
|
||||
if (text != "")
|
||||
{
|
||||
value = int.Parse(text);
|
||||
}
|
||||
PlayerPrefs.SetInt(Settings.CustomSeedSettingValue, value);
|
||||
Debug.Log($"Custom seed has been set to {value}");
|
||||
}
|
||||
|
||||
|
||||
// Level Rules
|
||||
public void SetLaserToggle()
|
||||
{
|
||||
bool toggle = laserToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.LaserSettingToggle, toggle.ToString());
|
||||
Debug.Log($"Laser have been toggeled to {toggle}");
|
||||
}
|
||||
public void SetMissileToggle()
|
||||
{
|
||||
bool toggle = missileToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.MissileSettingToggle, toggle.ToString());
|
||||
Debug.Log($"Missiles have been toggeled to {toggle}");
|
||||
}
|
||||
public void SetCoinToggle()
|
||||
{
|
||||
bool toggle = coinToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.CoinSettingToggle, toggle.ToString());
|
||||
Debug.Log($"Coins have been toggeled to {toggle}");
|
||||
}
|
||||
public void SetBadCoinToggle()
|
||||
{
|
||||
bool toggle = badCoinToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.BadCoinSettingToggle, toggle.ToString());
|
||||
Debug.Log($"Bad Coins have been toggeled to {toggle}");
|
||||
}
|
||||
public void SetSurviveScoreToggle()
|
||||
{
|
||||
bool toggle = surviveScoreToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.SurviveScoreSettingToggle, toggle.ToString());
|
||||
Debug.Log($"Increasing score with surviving time has been toggeled to {toggle}");
|
||||
}
|
||||
|
||||
// Player Selection
|
||||
public void SetOmnicientBotSelected()
|
||||
{
|
||||
bool toggle = omnicientBotToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.OmnicientBotSelected, toggle.ToString());
|
||||
OnPlayerSelectionChanged();
|
||||
Debug.Log($"Omnicient bot selected has been set to {toggle}");
|
||||
}
|
||||
public void SetObserverBotSelected()
|
||||
{
|
||||
bool toggle = observerBotToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.ObserverBotSelected, toggle.ToString());
|
||||
OnPlayerSelectionChanged();
|
||||
Debug.Log($"Observer bot selected has been set to {toggle}");
|
||||
}
|
||||
public void SetIteratorBotSelected()
|
||||
{
|
||||
bool toggle = iteratorBotToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.IteratorBotSelected, toggle.ToString());
|
||||
OnPlayerSelectionChanged();
|
||||
Debug.Log($"Iterator bot selected has been set to {toggle}");
|
||||
}
|
||||
public void SetHumanPlayerSelected()
|
||||
{
|
||||
bool toggle = humanPlayerToggler.isOn;
|
||||
PlayerPrefs.SetString(Settings.HumanPlayerSelected, toggle.ToString());
|
||||
OnPlayerSelectionChanged();
|
||||
Debug.Log($"Human player selected has been set to {toggle}");
|
||||
}
|
||||
|
||||
}
|
20
Scripts/MainMenuUI/PlayButtonBehaviour.cs
Normal file
20
Scripts/MainMenuUI/PlayButtonBehaviour.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class PlayButtonBehaviour : MonoBehaviour
|
||||
{
|
||||
[Header("Player Selection Buttons")]
|
||||
[SerializeField] Toggle omnicientBot;
|
||||
[SerializeField] Toggle observerBot;
|
||||
[SerializeField] Toggle iteratorBot;
|
||||
[SerializeField] Toggle humanPlayer;
|
||||
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
43
Scripts/MainMenuUI/ScrollerBehavior.cs
Normal file
43
Scripts/MainMenuUI/ScrollerBehavior.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class ScrollerBehavior : MonoBehaviour
|
||||
{
|
||||
|
||||
[SerializeField] TMP_Text sliderValue = null;
|
||||
[SerializeField] Slider slider = null;
|
||||
[SerializeField] Slider intricatedSlider = null;
|
||||
[SerializeField] bool canBeSuperiorToIntricated = false;
|
||||
[SerializeField] bool canBeInferiorToIntricated = false;
|
||||
|
||||
float intricatedValue = 0.0f;
|
||||
|
||||
void Start()
|
||||
{
|
||||
OnIntricatedValueChanged();
|
||||
OnValueChanged();
|
||||
}
|
||||
|
||||
public void OnValueChanged()
|
||||
{
|
||||
float value = slider.value;
|
||||
if(intricatedSlider != null)
|
||||
{
|
||||
if ((!canBeSuperiorToIntricated && value >= intricatedValue) || (!canBeInferiorToIntricated && value <= intricatedValue))
|
||||
{
|
||||
slider.value = intricatedValue;
|
||||
}
|
||||
}
|
||||
sliderValue.text = slider.value.ToString("0.0");
|
||||
}
|
||||
|
||||
// Call this method when an intricated slider change its value
|
||||
public void OnIntricatedValueChanged()
|
||||
{
|
||||
if(intricatedSlider != null)
|
||||
intricatedValue = intricatedSlider.value;
|
||||
}
|
||||
}
|
25
Scripts/MainMenuUI/ScrollingTexture.cs
Normal file
25
Scripts/MainMenuUI/ScrollingTexture.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
public class ScrollingTexture : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private float scrollSpeedX;
|
||||
[SerializeField] private float scrollSpeedY;
|
||||
private CanvasRenderer canvasRenderer;
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
canvasRenderer = GetComponent<CanvasRenderer>();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
Vector2 textureOffset = new Vector2(Time.realtimeSinceStartup * scrollSpeedX, Time.realtimeSinceStartup * scrollSpeedY);
|
||||
|
||||
if(canvasRenderer.GetMaterial() != null) {
|
||||
canvasRenderer.GetMaterial().mainTextureOffset = textureOffset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user