|
@@ -15,13 +15,14 @@ using UnityEngine.UIElements;
|
|
|
public class InitDogUIController : MonoBehaviour
|
|
|
{
|
|
|
private TextField dogNameTextField;
|
|
|
+ private Label priceLabel;
|
|
|
private Label leftArrow, rightArrow;
|
|
|
private DropdownField breedDropdownField, sexDropdownField;
|
|
|
private Button confirmBtn, cancelBtn;
|
|
|
private DogBreed dogBreed; // 狗品种的具体设定数据
|
|
|
private string femaleText, maleText;
|
|
|
private int dogSkinIndex = 0; // 显示狗的皮肤颜色
|
|
|
- private DogProperty dogProperty = new(); // 用于暂存生成狗的属性配置
|
|
|
+ private DogProperty InitDogProperty = new(); // 用于暂存生成狗的属性配置
|
|
|
|
|
|
private string displayDogName = "createdDog";
|
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
@@ -42,6 +43,7 @@ public class InitDogUIController : MonoBehaviour
|
|
|
cancelBtn = root.Q<VisualElement>("confirmArea").Q<Button>("cancel");
|
|
|
leftArrow = root.Q<Label>("leftArrow");
|
|
|
rightArrow = root.Q<Label>("rightArrow");
|
|
|
+ priceLabel = root.Q<Label>("price");
|
|
|
|
|
|
InitSetting();
|
|
|
cancelBtn.clicked += CancelClick;
|
|
@@ -70,20 +72,21 @@ public class InitDogUIController : MonoBehaviour
|
|
|
}
|
|
|
|
|
|
dogBreed = EnviromentSetting.dogBreeds[breedDropdownField.index];
|
|
|
-
|
|
|
- dogProperty.breed = dogBreed.breed;
|
|
|
- dogProperty.skin = dogBreed.skin[dogSkinIndex];
|
|
|
- var location = new Vector3(19.5f, 0, 15);
|
|
|
+ priceLabel.text = dogBreed.cost.ToString();
|
|
|
+
|
|
|
+ InitDogProperty.breed = dogBreed.breed;
|
|
|
+ InitDogProperty.skin = dogBreed.skin[dogSkinIndex];
|
|
|
+ var location = new Vector3(19.5f, 0, 15);
|
|
|
var rotation = new Vector3(0f, -135f, 0f);
|
|
|
var scale = new Vector3(2f, 2f, 2f);
|
|
|
|
|
|
- GameObject dog = Instantiate(Resources.Load<GameObject>("Dog/Breed/" + dogProperty.breed));
|
|
|
+ GameObject dog = Instantiate(Resources.Load<GameObject>("Dog/Breed/" + InitDogProperty.breed));
|
|
|
dog.name = displayDogName;
|
|
|
if (dog != null)
|
|
|
{
|
|
|
- GameObject dogL2 = GameObject.Find(dogProperty.breed);
|
|
|
+ GameObject dogL2 = GameObject.Find(InitDogProperty.breed);
|
|
|
Renderer renderer = dogL2.GetComponent<Renderer>();
|
|
|
- Material mat = Resources.Load<Material>("Dog/Skin/" + dogProperty.breed + "/" + dogProperty.skin);
|
|
|
+ Material mat = Resources.Load<Material>("Dog/Skin/" + InitDogProperty.breed + "/" + InitDogProperty.skin);
|
|
|
if (mat != null && renderer != null)
|
|
|
{
|
|
|
renderer.material = mat;
|
|
@@ -107,10 +110,10 @@ public class InitDogUIController : MonoBehaviour
|
|
|
{
|
|
|
dogSkinIndex = 0;
|
|
|
}
|
|
|
- dogProperty.skin = dogBreed.skin[dogSkinIndex];
|
|
|
+ InitDogProperty.skin = dogBreed.skin[dogSkinIndex];
|
|
|
ChangeDogSkin();
|
|
|
- Debug.Log("current dog skin index is: " + dogSkinIndex);
|
|
|
- Debug.Log("current dog skin name is: " + dogProperty.skin);
|
|
|
+ Debug.Log("current dog skin index is: " + dogSkinIndex);
|
|
|
+ Debug.Log("current dog skin name is: " + InitDogProperty.skin);
|
|
|
}
|
|
|
|
|
|
void LeftArrowClicked(ClickEvent e)
|
|
@@ -120,10 +123,10 @@ public class InitDogUIController : MonoBehaviour
|
|
|
{
|
|
|
dogSkinIndex = dogBreed.skin.Length - 1;
|
|
|
}
|
|
|
- dogProperty.skin = dogBreed.skin[dogSkinIndex];
|
|
|
+ InitDogProperty.skin = dogBreed.skin[dogSkinIndex];
|
|
|
ChangeDogSkin();
|
|
|
Debug.Log("current dog skin index is: " + dogSkinIndex);
|
|
|
- Debug.Log("current dog skin name is: " + dogProperty.skin);
|
|
|
+ Debug.Log("current dog skin name is: " + InitDogProperty.skin);
|
|
|
}
|
|
|
|
|
|
// 更换狗的皮肤
|
|
@@ -132,9 +135,9 @@ public class InitDogUIController : MonoBehaviour
|
|
|
var dog = GameObject.Find(displayDogName);
|
|
|
if (dog != null)
|
|
|
{
|
|
|
- GameObject dogL2 = GameObject.Find(dogProperty.breed);
|
|
|
+ GameObject dogL2 = GameObject.Find(InitDogProperty.breed);
|
|
|
Renderer renderer = dogL2.GetComponent<Renderer>();
|
|
|
- Material mat = Resources.Load<Material>("Dog/Skin/" + dogProperty.breed + "/" + dogProperty.skin);
|
|
|
+ Material mat = Resources.Load<Material>("Dog/Skin/" + InitDogProperty.breed + "/" + InitDogProperty.skin);
|
|
|
if (mat != null && renderer != null)
|
|
|
{
|
|
|
renderer.material = mat;
|
|
@@ -144,37 +147,48 @@ public class InitDogUIController : MonoBehaviour
|
|
|
// 绑定点击按键
|
|
|
void ConfirmClick()
|
|
|
{
|
|
|
- dogProperty.dog_name = dogNameTextField.text;
|
|
|
- bool dogNameAllowed = true;
|
|
|
- foreach (var dog in UserProperty.dogs)
|
|
|
+ InitDogProperty.dog_name = dogNameTextField.text;
|
|
|
+ // bool dogNameAllowed = true;
|
|
|
+ // foreach (var dog in UserProperty.dogs)
|
|
|
+ // {
|
|
|
+ // if (InitDogProperty.dog_name == dog.dog_name){
|
|
|
+ // dogNameAllowed = false;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ if (GameTool.NewDogNameAllowed(InitDogProperty.dog_name))
|
|
|
{
|
|
|
- if (dogProperty.dog_name == dog.dog_name){
|
|
|
- dogNameAllowed = false;
|
|
|
+ if (UserProperty.coin < dogBreed.cost && UserProperty.dogs.Count > 1)
|
|
|
+ {
|
|
|
+ // 当用户狗的数量超过1条的时候,检测用户是否有足够的金币
|
|
|
+ string msg = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "game_message", "dog_create_fail_no_enough_coin", EnviromentSetting.languageCode });
|
|
|
+ MessageBoxController.ShowMessage(msg);
|
|
|
+ return;
|
|
|
}
|
|
|
- }
|
|
|
- if (dogNameAllowed)
|
|
|
- {
|
|
|
- ConfirmClickPost();
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ConfirmClickRequest();
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
string msg = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "game_message", "dog_name_duplicated", EnviromentSetting.languageCode });
|
|
|
- msg.Replace("<<dog_name>>", dogProperty.dog_name);
|
|
|
+ msg.Replace("<<dog_name>>", InitDogProperty.dog_name);
|
|
|
MessageBoxController.ShowMessage(msg);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// ConfirmClick点击后第一步POST事件
|
|
|
- void ConfirmClickPost()
|
|
|
+ void ConfirmClickRequest()
|
|
|
{
|
|
|
string url = "/api/initial/dog/";
|
|
|
Dictionary<string, string> formData = new Dictionary<string, string>();
|
|
|
WWWForm wwwForm = new WWWForm();
|
|
|
wwwForm.AddField("user_id", UserProperty.userId);
|
|
|
- wwwForm.AddField("dog_name", dogProperty.dog_name);
|
|
|
- wwwForm.AddField("sex", dogProperty.sex);
|
|
|
- wwwForm.AddField("breed", dogProperty.breed);
|
|
|
- wwwForm.AddField("skin", dogProperty.skin);
|
|
|
+ wwwForm.AddField("dog_name", InitDogProperty.dog_name);
|
|
|
+ wwwForm.AddField("sex", InitDogProperty.sex);
|
|
|
+ wwwForm.AddField("breed", InitDogProperty.breed);
|
|
|
+ wwwForm.AddField("skin", InitDogProperty.skin);
|
|
|
|
|
|
StartCoroutine(WebController.PostRequest(url, wwwForm, callback: ConfirmClickCallback));
|
|
|
}
|
|
@@ -186,9 +200,18 @@ public class InitDogUIController : MonoBehaviour
|
|
|
if (data != null && data["status"].ToString() == "success")
|
|
|
{
|
|
|
string msg = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "game_message", "dog_create_success", EnviromentSetting.languageCode });
|
|
|
- msg=msg.Replace("<<dog_name>>", dogProperty.dog_name);
|
|
|
+ msg = msg.Replace("<<dog_name>>", InitDogProperty.dog_name);
|
|
|
MessageBoxController.ShowMessage(msg, FreshUserData);
|
|
|
}
|
|
|
+ else if (data != null && data["status"].ToString() == "fail")
|
|
|
+ {
|
|
|
+ string msg = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "game_message", "dog_create_fail_no_enough_coin", EnviromentSetting.languageCode });
|
|
|
+ MessageBoxController.ShowMessage(msg);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Debug.Log(data["message"]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 刷新用户狗的数据
|
|
@@ -207,15 +230,19 @@ public class InitDogUIController : MonoBehaviour
|
|
|
var data = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
|
|
|
if (data != null && data["status"].ToString() == "success")
|
|
|
{
|
|
|
- UserProperty.dogs.Clear();
|
|
|
+ // 刷新用户所有数据
|
|
|
+ var user_info = data["user_info"].ToString();
|
|
|
+ UserProperty.FreshUserInfo(user_info);
|
|
|
|
|
|
// 保存狗的数据
|
|
|
- DogProperty[] dogProperties = JsonConvert.DeserializeObject<DogProperty[]>(data["dogs"].ToString());
|
|
|
- foreach (var dog in dogProperties)
|
|
|
- {
|
|
|
- UserProperty.dogs.Add(dog);
|
|
|
- }
|
|
|
- SceneManager.LoadScene("Home");
|
|
|
+ string dogsJson = data["dogs"].ToString();
|
|
|
+ UserProperty.FreshDogInfo(dogsJson);
|
|
|
+
|
|
|
+ // 保存道具数据
|
|
|
+ UserProperty.FreshUserItems(data["props"].ToString());
|
|
|
+
|
|
|
+ // SceneManager.LoadScene("Home");
|
|
|
+ MaskTransitions.TransitionManager.Instance.LoadLevel("Home");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -262,7 +289,7 @@ public class InitDogUIController : MonoBehaviour
|
|
|
cancelBtn.style.display = DisplayStyle.None;
|
|
|
}
|
|
|
|
|
|
- foreach(var item in EnviromentSetting.dogBreeds)
|
|
|
+ foreach (var item in EnviromentSetting.dogBreeds)
|
|
|
{
|
|
|
breedDropdownField.choices.Add(item.name[EnviromentSetting.languageCode]);
|
|
|
}
|
|
@@ -281,7 +308,7 @@ public class InitDogUIController : MonoBehaviour
|
|
|
{
|
|
|
confirmBtn.SetEnabled(true);
|
|
|
}
|
|
|
- else { confirmBtn.SetEnabled(false); }
|
|
|
+ else { confirmBtn.SetEnabled(false); }
|
|
|
}
|
|
|
|
|
|
// 根据品种加载狗的动画
|
|
@@ -296,7 +323,7 @@ public class InitDogUIController : MonoBehaviour
|
|
|
Animator animator = dog.GetComponent<Animator>();
|
|
|
RuntimeAnimatorController animatorController = Resources.Load<RuntimeAnimatorController>("Dog/AnimatorController/shibaInu/CreateDogAnimController");
|
|
|
//AnimatorController animatorController = new AnimatorController();
|
|
|
- if (dogProperty.breed == "shibaInu") { animatorController = Resources.Load<RuntimeAnimatorController>("Dog/AnimatorController/shibaInu/CreateDogAnimController"); }
|
|
|
+ if (InitDogProperty.breed == "shibaInu") { animatorController = Resources.Load<RuntimeAnimatorController>("Dog/AnimatorController/shibaInu/CreateDogAnimController"); }
|
|
|
|
|
|
animator.runtimeAnimatorController = animatorController;
|
|
|
}
|