93 lines
3.0 KiB
C#
93 lines
3.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class CharacterCustomizer : MonoBehaviour
|
|
{
|
|
[SerializeField] Characters charactersData;
|
|
public List<CharacterObjects> characterObjects;
|
|
[EasyButtons.Button]
|
|
void clearDuplicates(){
|
|
List<int> duplicates = new List<int>();
|
|
for(int i =0; i < characterObjects.Count; i++){
|
|
if(duplicates.Contains(characterObjects[i].id)){
|
|
characterObjects.RemoveAt(i);
|
|
}else{
|
|
duplicates.Add(characterObjects[i].id);
|
|
}
|
|
}
|
|
}
|
|
|
|
[EasyButtons.Button]
|
|
void clearEmptyObjectsRows(){
|
|
for(int i =0; i < characterObjects.Count; i++){
|
|
bool exist = false;
|
|
foreach(CharacterPreset preset in charactersData.characters){
|
|
if(preset.characterId == characterObjects[i].id){ exist=true;break;}
|
|
}
|
|
|
|
if(!exist){characterObjects.RemoveAt(i);}
|
|
}
|
|
}
|
|
|
|
[EasyButtons.Button]
|
|
void refresh(){
|
|
validateCharacterData();
|
|
}
|
|
|
|
void OnValidate()
|
|
{
|
|
validateCharacterData();
|
|
}
|
|
|
|
void validateCharacterData()
|
|
{
|
|
charactersData = Resources.Load<Characters>("characters");
|
|
if (charactersData == null) { Debug.LogError("No Character Data Found!"); return; }
|
|
|
|
clearEmptyObjectsRows();
|
|
|
|
foreach(CharacterPreset preset in charactersData.characters){
|
|
bool exists = false;
|
|
for(int i =0; i < characterObjects.Count; i++){
|
|
if(characterObjects[i].id == preset.characterId){
|
|
if(characterObjects[i].name != preset.name){characterObjects[i].name=preset.name;}
|
|
exists=true;
|
|
}
|
|
}
|
|
|
|
if(!exists){characterObjects.Add(new CharacterObjects(preset.characterId,preset.name));}
|
|
}
|
|
}
|
|
|
|
public void ChangeCharacter(int characterId){
|
|
|
|
foreach(CharacterObjects obj in characterObjects){
|
|
if(obj.id == characterId){
|
|
foreach(GameObject go in obj.body){go.SetActive(true);}
|
|
}else{
|
|
foreach(GameObject go in obj.body){go.SetActive(false);}
|
|
foreach(GameObject go in obj.hair){go.SetActive(false);}
|
|
foreach(GameObject go in obj.gloves){go.SetActive(false);}
|
|
foreach(GameObject go in obj.eyeWears){go.SetActive(false);}
|
|
foreach(GameObject go in obj.tops){go.SetActive(false);}
|
|
foreach(GameObject go in obj.bottoms){go.SetActive(false);}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ChangeCharacter(string characterName){
|
|
ChangeCharacter(GetCharacterId(characterName));
|
|
}
|
|
|
|
public int GetCharacterId(string name){
|
|
foreach(CharacterPreset preset in charactersData.characters){
|
|
if(preset.name == name){return preset.characterId;}
|
|
}
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|