You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.8 KiB

  1. local PlayerInfoManager = class("PlayerInfoManager")
  2. function PlayerInfoManager:ctor()
  3. --[[
  4. playerInfoList =
  5. {
  6. [uid] = {name = "zhangsan", sex = 0, head = "http://www.dingdingqipai.com/head.png"},
  7. [uid] = {name = "zhangsan", sex = 0, head = "http://www.dingdingqipai.com/head.png"},
  8. [uid] = {name = "zhangsan", sex = 0, head = "http://www.dingdingqipai.com/head.png"},
  9. }
  10. --]]
  11. self.playerInfoList = {}
  12. self.fileName = "PlayerInfoManager";
  13. self.waitingSave = false
  14. self.handlerWaitingSave = nil
  15. -- 初始化
  16. self:loadPlayerInfoList()
  17. end
  18. -- 所有子游戏战绩里面的玩家信息都要保存在这里共用
  19. function PlayerInfoManager:addPlayerInfo(uid, name, head, sex)
  20. if not uid then
  21. return
  22. end
  23. local playerInfo =
  24. {
  25. name = name or "",
  26. head = head or "",
  27. sex = sex or 0,
  28. }
  29. self.playerInfoList[tostring(uid)] = playerInfo;
  30. self:savePlayerInfoList();
  31. end
  32. -- 通过ID获取玩家信息
  33. function PlayerInfoManager:getPlayerInfo(uid)
  34. if self.playerInfoList and uid then
  35. return self.playerInfoList[tostring(uid)]
  36. end
  37. return nil
  38. end
  39. function PlayerInfoManager:loadPlayerInfoList()
  40. local jsonString = loadStringFromFile(self.fileName)
  41. if jsonString then
  42. self.playerInfoList = json.decode(jsonString) or {}
  43. end
  44. end
  45. function PlayerInfoManager:savePlayerInfoList()
  46. if self.waitingSave then
  47. return
  48. end
  49. self.waitingSave = true
  50. self.handlerWaitingSave = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
  51. if self.handlerWaitingSave then
  52. cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.handlerWaitingSave)
  53. end
  54. self.waitingSave = false;
  55. local jsonString = json.encode(self.playerInfoList)
  56. saveStringToFile(jsonString, self.fileName)
  57. end,1.0,false)
  58. end
  59. return PlayerInfoManager