using UnityEngine; using System.Collections; using System.Collections.Generic; using LitJson; #if UNITY_IOS using UnityEngine.SocialPlatforms.GameCenter; #endif public class NetworkManager { public enum URL { Login, Binding, Notice, IOSPayment, LeaderBoard, ShopList, Buy, Equip, AddCoin, Mission, MissionReward, MissionProgress, Result, } public NetworkManager() { } private static Dictionary urlDict; public static string GetURL(URL url) { if(urlDict == null) { urlDict = new Dictionary(); urlDict.Add(URL.Login, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/login.php"); urlDict.Add(URL.Binding, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/binding.php"); urlDict.Add(URL.Notice, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/notice.php"); urlDict.Add(URL.IOSPayment, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/ios_payment.php"); urlDict.Add(URL.LeaderBoard, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/leaderboard.php"); urlDict.Add(URL.ShopList, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/shoplist.php"); urlDict.Add(URL.Buy, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/buy.php"); urlDict.Add(URL.Equip, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/equip.php"); urlDict.Add(URL.AddCoin, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/addcoin.php"); urlDict.Add(URL.Mission, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/mission.php"); urlDict.Add(URL.MissionReward, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/mission_reward.php"); urlDict.Add(URL.MissionProgress, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/mission_progress.php"); urlDict.Add(URL.Result, Config.URL_ADDRESS+"game/"+Config.VERSION_LABEL+"/result.php"); } return urlDict[url]; } public void Login(CallBackUtil.SimpleCallBack callBack) { string device = Session.GetInstance ().myUserData.deviceId; int id = 0; if(StringUtil.Empty(device)) { device = SystemInfo.deviceUniqueIdentifier; id = LocalSaver.GetInstance ().LoadId (); } ChatManager.GetInstance ().Clear (); UserRequest.Login (id, device, "ios", Config.USER_PORT).ResultEvent.AddListener((bool success, JsonData data) => { if(success) { JsonData info = data; UserData userData = Session.GetInstance().myUserData; userData.id = JsonUtil.ToInt(info["i"]); if(info["n"] != null) userData.nick = WWW.UnEscapeURL(info["n"].ToString()); else userData.nick = null; userData.coin = JsonUtil.ToInt(info["c"]); userData.diamond = JsonUtil.ToInt(info["d"]); userData.exp = JsonUtil.ToInt(info["e"]); userData.rank = JsonUtil.ToInt(info["r"]); userData.rankIndex = JsonUtil.ToInt(info["ri"]); userData.win = JsonUtil.ToInt(info["w"]); userData.lose = JsonUtil.ToInt(info["l"]); userData.clanId = JsonUtil.ToInt(info["a"]); if(JsonUtil.ContainKey(info, "v")) userData.vipExpireTime = info["v"].ToString(); JsonData craftList = info["cs"]; if(craftList.IsArray) { userData.craftSelectLimit = new int[craftList.Count]; for(int i=0; i{ Debuger.Log("Authenticate : "+success); // success = false; if(success) { int id = Session.GetInstance().myUserData.id; string uid = gameCenter.localUser.id; string nick = WWW.EscapeURL(gameCenter.localUser.userName); URLRequestData data = new URLRequestData(true); data.Add("id", id); data.Add("uid", uid); data.Add("nick", nick); URLRequest.CreateURLRequest (GetURL (URL.Binding), data, OnBinding, URLRequest.Method.POST); } }); } #else public void Binding() { } #endif private void OnBinding(JsonData data) { int resCode = (int)data["c"]; JsonData resData = data["d"]; if(resCode == 0) { if (JsonUtil.ContainKey (resData, "n")) { Session.GetInstance ().myUserData.nick = resData ["n"].ToString (); } } else if (resCode == 1) { int id = JsonUtil.ToInt (resData ["i"]); int rank = JsonUtil.ToInt (resData ["r"]); string info = string.Format (Language.GetStr ("Login", "toGCUser"), rank); AlertPanel.Show (null, info, AlertPanel.YES | AlertPanel.NO, (AlertCloseEvent evt) => { if (evt.detail == AlertPanel.YES) { LocalSaver.GetInstance ().SaveId (id); RestartGame(); } else if(evt.detail == AlertPanel.NO) { LocalSaver.GetInstance().noAutoBinding = 1; } }); } else if(resCode == 2) { AlertPanel.Show(null, Language.GetStr("MenuPage", "internetFailed"), 4, OnLoginAlertClose); } } public void GetMail(CallBackUtil.StringCallBack callBack) { URLRequestData data = new URLRequestData(true); data.Add("id", Session.GetInstance().myUserData.id); URLRequest.CreateURLRequest(GetURL(URL.Notice), data, (JsonData json)=>{ int resCode = (int)json["c"]; JsonData resData = json["d"]; if(resCode == 0) { if(callBack != null) callBack(resData.ToString()); } }); } public void GetLeaderBoard() { URLRequestData data = new URLRequestData(true); data.Add("id", 0); data.Add ("port", Config.USER_PORT); URLRequest.CreateURLRequest(GetURL(URL.LeaderBoard), data, (JsonData json)=>{ int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { JsonData info = json["d"]; if(JsonUtil.ContainKey(info, "l")) { JsonData list = info["l"]; LeaderBoardManager.GetInstance().SetData(list); } } else { Toast.MakeText(Language.GetStr("Menu", "rankListFailed"), false); } }, URLRequest.Method.POST); } // public void GetMyRank() // { // URLRequestData data = new URLRequestData(true); // UserData userData = Session.GetInstance().myUserData; // data.Add("id", userData.userId); // data.Add("rank", userData.rank); // // URLRequest.CreateURLRequest(GetURL(URL.LeaderBoard), data, (JsonData json)=>{ // // int resCode = JsonUtil.ToInt(json["c"]); // if(resCode == 0) // { // JsonData info = json["d"]; // if(JsonUtil.ContainKey(info, "o")) // { // userData.rankIndex = JsonUtil.ToInt(info["o"]); // } // } // }, URLRequest.Method.POST); // } public void ShopList(BuyUtil.ItemType itemType, CallBackUtil.SimpleCallBack callBack) { URLRequestData data = new URLRequestData(true); data.Add("type", itemType.ToString()); URLRequest.CreateURLRequest(GetURL(URL.ShopList), data, (JsonData json)=>{ int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { JsonData info = json["d"]; if(itemType == BuyUtil.ItemType.Halo) { HaloManager.GetInstance().SetDataList(info["l"]); } else if(itemType == BuyUtil.ItemType.Skin) { SkinManager.GetInstance().SetDataList(info["l"]); } ShopPanel.Refresh(); } else { Toast.MakeText(Language.GetStr("Shop", "listFailed"), false); } callBack(); }, URLRequest.Method.POST); } public void Buy(int itemId, BuyUtil.ItemType itemType) { URLRequestData data = new URLRequestData(true); UserData userData = Session.GetInstance().myUserData; data.Add("userid", userData.id); data.Add("id", itemId); data.Add("type", itemType.ToString()); ProgressPanel.Show(""); URLRequest.CreateURLRequest(GetURL(URL.Buy), data, OnBuy, URLRequest.Method.POST); } private void OnBuy(JsonData json) { ProgressPanel.Hide(); int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { JsonData info = json["d"]; string itemType = info["type"].ToString(); int itemId = JsonUtil.ToInt(info["id"]); if(itemType == BuyUtil.ItemType.Halo.ToString()) HaloManager.GetInstance().Bought(itemId); else if(itemType == BuyUtil.ItemType.Skin.ToString()) SkinManager.GetInstance().Bought(itemId); if(JsonUtil.ContainKey(info, "d")) Session.GetInstance().myUserData.diamond = JsonUtil.ToInt(info["d"]); if(JsonUtil.ContainKey(info, "c")) Session.GetInstance().myUserData.coin = JsonUtil.ToInt(info["c"]); ShopPanel.Refresh(); } else if(resCode == 2) { BuyDiamondPanel.Show(); } else if(resCode == 3) { BuyCoinPanel.Show(); } else { Toast.MakeText(Language.GetStr("Shop", "buyFailed"), false); } } public void Equip(BuyUtil.ItemType itemType, int itemId, int equip) { URLRequestData data = new URLRequestData(true); UserData userData = Session.GetInstance().myUserData; data.Add("userid", userData.id); data.Add("type", itemType.ToString()); data.Add("id", itemId); data.Add("equip", equip); URLRequest.CreateURLRequest(GetURL(URL.Equip), data, (JsonData json)=>{ int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { // if(itemType == BuyUtil.ItemType.Halo) // HaloManager.GetInstance().Equip(itemId); } }, URLRequest.Method.POST); } public void AddCoin(string itemId) { URLRequestData data = new URLRequestData(true); UserData userData = Session.GetInstance().myUserData; data.Add("userid", userData.id); data.Add("id", itemId); ProgressPanel.Show(""); URLRequest.CreateURLRequest(GetURL(URL.AddCoin), data, (JsonData json)=>{ ProgressPanel.Hide(); int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { JsonData info = json["d"]; int newCoin = JsonUtil.ToInt(info["coin"]); int newDiamond = JsonUtil.ToInt(info["diamond"]); UserData myUserData = Session.GetInstance().myUserData; Toast.MakeText(Language.GetStr("BuyCoin", "bought").Replace("%NUM%", (newCoin - myUserData.coin).ToString())); myUserData.coin = newCoin; myUserData.diamond = newDiamond; } else if(resCode == 3) { BuyDiamondPanel.Show(); } else { Toast.MakeText(Language.GetStr("Shop", "addCoinFailed"), false); } }, URLRequest.Method.POST); } public void GetMission() { URLRequestData data = new URLRequestData(true); UserData userData = Session.GetInstance().myUserData; data.Add("u", userData.id); URLRequest.CreateURLRequest(GetURL(URL.Mission), data, OnMissionGot, URLRequest.Method.POST); } private void OnMissionGot(JsonData json) { int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { JsonData info = json["d"]; MissionManager.GetInstance().Init(info); } } public void GetMissionReward(int id) { URLRequestData data = new URLRequestData(true); UserData userData = Session.GetInstance().myUserData; data.Add("u", userData.id); data.Add("m", id); ProgressPanel.Show(""); URLRequest.CreateURLRequest(GetURL(URL.MissionReward), data, OnMissionReward, URLRequest.Method.POST); } private void OnMissionReward(JsonData json) { ProgressPanel.Hide(); int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { JsonData info = json["d"]; int coin = JsonUtil.ToInt(info["c"]); int diamond = JsonUtil.ToInt(info["d"]); int missionId = JsonUtil.ToInt(info["m"]); MissionData data = MissionManager.GetInstance().GetData(missionId); MissionRewardPanel.Show(data); data.rewarded = 1; UserData userData = Session.GetInstance().myUserData; Dictionary dict = new Dictionary(); dict.Add("name", userData.nick+"["+userData.id.ToString()+"]"); dict.Add("id", missionId.ToString()); if(userData.coin != coin) dict.Add("coin", coin - userData.coin); else if(userData.diamond != diamond) dict.Add("diamond", diamond - userData.diamond); DGAnalytics.CustomEvent ("DailyMission", dict); userData.coin = coin; userData.diamond = diamond; } else { Toast.MakeText(Language.GetStr("Mission", "rewardFailedFailed"), false); } MissionManager.GetInstance().Refresh(); } public void MissionProgress(int id) { URLRequestData data = new URLRequestData(true); UserData userData = Session.GetInstance().myUserData; data.Add("u", userData.id); data.Add("m", id); URLRequest.CreateURLRequest(GetURL(URL.MissionProgress), data, OnMissionProgress, URLRequest.Method.POST); } private void OnMissionProgress(JsonData json) { int resCode = JsonUtil.ToInt(json["c"]); if(resCode == 0) { JsonData info = json["d"]; for(int i=0; i