chunk 1: core gameplay scripts scenes runtime assets
This commit is contained in:
170
Assets/Scripts/Announcement/Announcement.cs
Normal file
170
Assets/Scripts/Announcement/Announcement.cs
Normal file
@@ -0,0 +1,170 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
/*
|
||||
DESCRIPTION:
|
||||
1. announcement_progression has buttons which are used to navigate throught the content in announcement_content
|
||||
2. The logic of this script is as follows:
|
||||
- announcement_progression[1] only is visible when showing content in announcement_content[0]
|
||||
- announcement_progression[0] and announcement_progression[1] should be visible when showing content in announcement_content[1]
|
||||
- announcement_progression[0] and announcement_progression[2] should be visible when showing content in announcement_content[3]
|
||||
|
||||
*/
|
||||
|
||||
|
||||
public class Announcement : MonoBehaviour
|
||||
{
|
||||
public Button[] announcement_progression; //Buttons for navigating throught the Announcement Content | 0. Left, 1. Right
|
||||
public GameObject[] announcement_content; //Gameobjects to be shown for the Announcement Content | 0, 1, 2
|
||||
private int currentIndex = 0; //Which Announcement content is currently being shown
|
||||
[SerializeField]
|
||||
GameObject homeScreen;
|
||||
|
||||
void OnEnable(){
|
||||
// Set all content to false/not visible
|
||||
foreach (GameObject obj in announcement_content){
|
||||
obj.SetActive(false);
|
||||
}
|
||||
|
||||
currentIndex = 0; //Start with the first GameObject/Announcement Content
|
||||
|
||||
// Initialize the content visibility
|
||||
UpdateContentVisibility();
|
||||
}
|
||||
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
// Initialize button click listeners, for the Next and Previous buttons
|
||||
announcement_progression[0].onClick.AddListener(ShowPrevious);
|
||||
announcement_progression[1].onClick.AddListener(ShowNext);
|
||||
|
||||
|
||||
// Change UI after Announcement, "Next" Button, in the last page of the Announcements
|
||||
announcement_progression[2].onClick.AddListener(AfterAnnouncement);
|
||||
//select the right arrow key
|
||||
announcement_progression[1].Select();
|
||||
// PlayerPrefs code, Check the status of the PLAYERPREFS related to Announcement, referenced as "announcementStatus"
|
||||
// Check if the "announcement" key exists in PlayerPrefs
|
||||
if (PlayerPrefs.HasKey("announcementStatus")){
|
||||
|
||||
// Get the value of the "announcement" key
|
||||
string announcementValue = PlayerPrefs.GetString("announcementStatus");
|
||||
|
||||
// Check if the value is "0", if it is 0 means the Announcements have not yet been shown in the game
|
||||
/*if (announcementValue == "0"){
|
||||
Debug.Log("The 'announcement' key is assigned and its value is '0'.");
|
||||
}
|
||||
else{
|
||||
Debug.Log("The 'announcement' key is assigned but its value is not '0'.");
|
||||
}*/
|
||||
}
|
||||
|
||||
else{
|
||||
PlayerPrefs.SetString("announcementStatus", "0");
|
||||
//Debug.Log("The 'announcement' key is not assigned.");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Function for the button to go to the Previous Announcement Content
|
||||
void ShowPrevious()
|
||||
{
|
||||
if (currentIndex <= 0)
|
||||
{
|
||||
// currentIndex = announcement_content.Length - 1; // Wrap around to the last element
|
||||
currentIndex = currentIndex; // Wrap around to the last element
|
||||
|
||||
}else{
|
||||
// Decrease the index
|
||||
currentIndex--;
|
||||
}
|
||||
announcement_progression[0].Select();
|
||||
if(currentIndex == 0)//if on the first page
|
||||
announcement_progression[1].Select();
|
||||
// Update the content visibility
|
||||
UpdateContentVisibility();
|
||||
print("pressed");
|
||||
}
|
||||
|
||||
|
||||
//Function for the button to go to the Next Announcement Content
|
||||
void ShowNext()
|
||||
{
|
||||
if (currentIndex == (announcement_content.Length - 1))
|
||||
{
|
||||
// currentIndex = 0; // Wrap around to the first element
|
||||
currentIndex = currentIndex; // Wrap around to the first element
|
||||
|
||||
}else{
|
||||
// Increase the index
|
||||
currentIndex++;
|
||||
}
|
||||
announcement_progression[1].Select();
|
||||
if(currentIndex == 2)//if on the last page
|
||||
announcement_progression[0].Select();
|
||||
// Update the content visibility
|
||||
UpdateContentVisibility();
|
||||
print("pressed");
|
||||
}
|
||||
|
||||
|
||||
//After the last page of the Announcements, set the status to 1
|
||||
void AfterAnnouncement(){
|
||||
PlayerPrefs.SetString("announcementStatus", "1"); //Announcements Done
|
||||
gameObject.SetActive(false); //Set Announcements UI to false
|
||||
homeScreen.GetComponent<HomeSrceen>().primaryButton.Select();
|
||||
print("pressed");
|
||||
}
|
||||
|
||||
|
||||
//Function to Show the Announcement content based on the current index
|
||||
void UpdateContentVisibility()
|
||||
{
|
||||
// Hide all content elements
|
||||
for (int i = 0; i < announcement_content.Length; i++){
|
||||
announcement_content[i].SetActive(false);
|
||||
}
|
||||
|
||||
// Show the current content element
|
||||
if (announcement_content.Length > 0){
|
||||
announcement_content[currentIndex].SetActive(true);
|
||||
}
|
||||
|
||||
// Shows the first Announcement content
|
||||
if (currentIndex <= 0){
|
||||
announcement_content[0].SetActive(true); //Sets the first element to be visible
|
||||
|
||||
ShowOrHideButton(announcement_progression[0], false);
|
||||
ShowOrHideButton(announcement_progression[2], false);
|
||||
}
|
||||
|
||||
// Shows the second Announcement content
|
||||
if ((currentIndex > 0) && (currentIndex < (announcement_content.Length - 1))){
|
||||
ShowOrHideButton(announcement_progression[0], true);
|
||||
ShowOrHideButton(announcement_progression[1], true);
|
||||
ShowOrHideButton(announcement_progression[2], false);
|
||||
}
|
||||
|
||||
// Shows the third Announcement content
|
||||
if (currentIndex >= (announcement_content.Length - 1)){
|
||||
announcement_content[2].SetActive(true); //Sets the third element to be visible
|
||||
|
||||
//Takes you to next UI here
|
||||
ShowOrHideButton(announcement_progression[1], false);
|
||||
ShowOrHideButton(announcement_progression[2], true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Function to dynamically set the visibility of gameobject which takes a button as an argument
|
||||
void ShowOrHideButton(Button btn, bool buttonStatus){
|
||||
((btn).gameObject).SetActive(buttonStatus);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user