190 lines
5.1 KiB
C#
190 lines
5.1 KiB
C#
using UnityEngine;
|
|
|
|
[CreateAssetMenu(fileName = "PlayerDefaultSO", menuName = "SO_Data/PlayerSO")]
|
|
public class Player_SO : ScriptableObject
|
|
{
|
|
[Header("Inspector")]
|
|
public int player_currentEXP;
|
|
public int player_currentLevel;
|
|
|
|
[Header("economics")]
|
|
[SerializeField] private int player_coins;
|
|
[SerializeField] private int player_material;
|
|
|
|
[Header("exp bottles")]
|
|
[SerializeField] private int emptyExpBottle78000;
|
|
[SerializeField] private int commonExpBottle78001;
|
|
[SerializeField] private int mediumExpBottle78002;
|
|
[SerializeField] private int superiorExpBottle78003;
|
|
[SerializeField] private int supremeExpBottle78004;
|
|
[SerializeField] private int extraordinaryExpBottle78005;
|
|
[SerializeField] private int celestialExpBottle78006;
|
|
[SerializeField] private int dushMaterial78021;
|
|
[SerializeField] private int dushMaterial78022;
|
|
[SerializeField] private int dushMaterial78023;
|
|
[SerializeField] private int dushMaterial78024;
|
|
|
|
[Header("Device Records")]
|
|
public string firstLaunchDate;
|
|
|
|
public int Coins
|
|
{
|
|
get { return player_coins; }
|
|
}
|
|
|
|
public int Material
|
|
{
|
|
get { return player_material; }
|
|
}
|
|
|
|
public void SetCoins(int value)
|
|
{
|
|
player_coins = Mathf.Max(0, value);
|
|
PersistEditorChanges();
|
|
}
|
|
|
|
public void AddCoins(int amount)
|
|
{
|
|
if (amount == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
SetCoins(player_coins + amount);
|
|
}
|
|
|
|
public void AddMaterial(int amount)
|
|
{
|
|
if (amount == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
SetMaterial(player_material + amount);
|
|
}
|
|
|
|
public void AddPlayerExperience(int amount)
|
|
{
|
|
if (amount == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
player_currentEXP = Mathf.Max(0, player_currentEXP + amount);
|
|
PersistEditorChanges();
|
|
}
|
|
|
|
public bool TrySpendCoins(int amount)
|
|
{
|
|
if (amount <= 0)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if (player_coins < amount)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
SetCoins(player_coins - amount);
|
|
return true;
|
|
}
|
|
|
|
public void SetMaterial(int value)
|
|
{
|
|
player_material = Mathf.Max(0, value);
|
|
PersistEditorChanges();
|
|
}
|
|
|
|
public int GetLegacyExpBottleCount(string fieldName)
|
|
{
|
|
switch (fieldName)
|
|
{
|
|
case "emptyExpBottle78000": return emptyExpBottle78000;
|
|
case "commonExpBottle78001": return commonExpBottle78001;
|
|
case "mediumExpBottle78002": return mediumExpBottle78002;
|
|
case "superiorExpBottle78003": return superiorExpBottle78003;
|
|
case "supremeExpBottle78004": return supremeExpBottle78004;
|
|
case "extraordinaryExpBottle78005": return extraordinaryExpBottle78005;
|
|
case "celestialExpBottle78006": return celestialExpBottle78006;
|
|
default: return 0;
|
|
}
|
|
}
|
|
|
|
public void SetLegacyExpBottleCount(string fieldName, int value)
|
|
{
|
|
int safeValue = Mathf.Max(0, value);
|
|
switch (fieldName)
|
|
{
|
|
case "emptyExpBottle78000":
|
|
emptyExpBottle78000 = safeValue;
|
|
break;
|
|
case "commonExpBottle78001":
|
|
commonExpBottle78001 = safeValue;
|
|
break;
|
|
case "mediumExpBottle78002":
|
|
mediumExpBottle78002 = safeValue;
|
|
break;
|
|
case "superiorExpBottle78003":
|
|
superiorExpBottle78003 = safeValue;
|
|
break;
|
|
case "supremeExpBottle78004":
|
|
supremeExpBottle78004 = safeValue;
|
|
break;
|
|
case "extraordinaryExpBottle78005":
|
|
extraordinaryExpBottle78005 = safeValue;
|
|
break;
|
|
case "celestialExpBottle78006":
|
|
celestialExpBottle78006 = safeValue;
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
|
|
PersistEditorChanges();
|
|
}
|
|
|
|
public int GetLegacyDushMaterialCount(string fieldName)
|
|
{
|
|
switch (fieldName)
|
|
{
|
|
case "dushMaterial78021": return dushMaterial78021;
|
|
case "dushMaterial78022": return dushMaterial78022;
|
|
case "dushMaterial78023": return dushMaterial78023;
|
|
case "dushMaterial78024": return dushMaterial78024;
|
|
default: return 0;
|
|
}
|
|
}
|
|
|
|
public void SetLegacyDushMaterialCount(string fieldName, int value)
|
|
{
|
|
int safeValue = Mathf.Max(0, value);
|
|
switch (fieldName)
|
|
{
|
|
case "dushMaterial78021":
|
|
dushMaterial78021 = safeValue;
|
|
break;
|
|
case "dushMaterial78022":
|
|
dushMaterial78022 = safeValue;
|
|
break;
|
|
case "dushMaterial78023":
|
|
dushMaterial78023 = safeValue;
|
|
break;
|
|
case "dushMaterial78024":
|
|
dushMaterial78024 = safeValue;
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
|
|
PersistEditorChanges();
|
|
}
|
|
|
|
private void PersistEditorChanges()
|
|
{
|
|
#if UNITY_EDITOR
|
|
UnityEditor.EditorUtility.SetDirty(this);
|
|
#endif
|
|
}
|
|
}
|