RiftMayhem/Assets/Scripts/UI/CharacterListController.cs
Pedro Gomes c2b076ff5a Bugfixing null references corner cases
- fixed possible null on show tooltip of consumable item that was just used.
- fixed an issue preventing all characters from being loaded on character list if one in between was pointing to a null reference in playerprefs
2024-08-05 00:40:08 +01:00

72 lines
2.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CharacterListController : MonoBehaviour
{
public GameObject togglePrefab;
public StringSharedField playerAccountName;
public Transform listParent;
public Button confirmButton;
GameObject characterToggleGO;
CharacterToggleInstance characterToggle;
PlayerAccountData playerAccount;
CharacterData characterData;
private void Awake()
{
playerAccount = PlayerDataHandler.Instance.LoadPlayerAccountData(playerAccountName.Value);
}
private void Start()
{
if (playerAccount != null)
{
if (playerAccount.characterNames.Count > 0)
{
GenerateCharacterListFromAccountData(playerAccount);
confirmButton.interactable = true;
}
else
confirmButton.interactable = false;
}
else
{
playerAccount = new PlayerAccountData(playerAccountName.Value);
PlayerDataHandler.Instance.SavePlayerAccountData(playerAccountName.Value, playerAccount);
confirmButton.interactable = false;
}
}
private void GenerateCharacterListFromAccountData(PlayerAccountData accountData)
{
foreach (string characterName in accountData.characterNames)
{
characterData = PlayerDataHandler.Instance.LoadCharacterData(playerAccountName.Value, characterName);
if (characterData == null) continue;
if (characterData.characterClass == null) continue;
if (characterData.characterName == null) continue;
if (characterData.playerOwnerID == null) continue;
Debug.Log("CD " + characterData);
Debug.Log("CD " + (characterData == null).ToString());
Debug.Log("CD " + characterData.characterClass);
Debug.Log("CD " + characterData.characterName);
Debug.Log("CD " + characterData.playerOwnerID);
characterToggleGO = Instantiate(togglePrefab, listParent);
characterToggle = characterToggleGO.GetComponent<CharacterToggleInstance>();
characterToggle.InitializeCharacterToggle(characterData);
}
}
}