ItemUseWebCommController.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. using UnityEngine.SceneManagement;
  7. /* 本代码主要是因为Unity限制Monobehavior不能new()。
  8. * 因此在本类中监控ItemUseController._itemUseId 一旦不是null就触发网络通讯
  9. */
  10. public class ItemUseWebCommController : MonoBehaviour
  11. {
  12. // Start is called once before the first execution of Update after the MonoBehaviour is created
  13. //void Start()
  14. //{
  15. //}
  16. // Update is called once per frame
  17. void Update()
  18. {
  19. if (ItemUseController._itemUseId != null)
  20. {
  21. StartCoroutine(ItemUsePost(ItemUseController._itemUseId));
  22. ItemUseController._itemUseId = null;
  23. }
  24. }
  25. // Post道具使用时网络通讯
  26. IEnumerator ItemUsePost(string itemId)
  27. {
  28. Debug.Log("Item use Post request");
  29. // 提交POST
  30. string url = "/api/item/use/";
  31. WWWForm form = new();
  32. form.AddField("user_id", UserProperty.userId);
  33. form.AddField("item_id", itemId);
  34. form.AddField("dog_names", UserProperty.dogNames());
  35. form.AddField("date_time", DateTime.Now.ToString());
  36. StartCoroutine(WebController.PostRequest(url, form, callback: ItemUseCallback));
  37. yield break;
  38. }
  39. // Post道具使用网络通讯后Callback
  40. void ItemUseCallback(string json)
  41. {
  42. var data = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
  43. if (data != null && data["status"].ToString() == "success")
  44. {
  45. var user_info = JsonConvert.DeserializeObject<Dictionary<string, string>>(data["user_info"].ToString());
  46. UserProperty.name = user_info["user_name"];
  47. UserProperty.coin = int.Parse(user_info["coin"]);
  48. UserProperty.mobile = user_info["mobile"];
  49. UserProperty.email = user_info["email"];
  50. UserProperty.level = user_info["level"];
  51. UserProperty.isRegUser = bool.Parse(user_info["isRegUser"]);
  52. // 清空现有数据保存狗的数据
  53. DogProperty[] dogProperties = JsonConvert.DeserializeObject<DogProperty[]>(data["dogs"].ToString());
  54. UserProperty.dogs.Clear();
  55. foreach (var dog in dogProperties)
  56. {
  57. UserProperty.dogs.Add(dog);
  58. }
  59. // 判断用户狗的数量,如果为0就跳转用户创建狗。
  60. if (UserProperty.dogs.Count < 1)
  61. {
  62. GameData.subScene = "Login_InitDog";
  63. SceneManager.LoadScene("Login");
  64. }
  65. }
  66. else
  67. {
  68. Debug.Log(data["message"]);
  69. }
  70. }
  71. }