Beispiel #1
0
 /// <summary>
 /// 更新下载进度
 /// </summary>
 /// <param name="done"></param>
 /// <param name="total"></param>
 public void DownloadProcess(long done, long total)
 {
     SampleDebuger.Log("++ done: " + done + " total: " + total);
     progressSlider.value = done > 0 ? (float)done / (float)total : 0;
     //descText.text = LangSetting.GetWord("UI_DownLoadingRes_desc");
     //statusText.text = Mathf.Floor(done / 1024).ToString() + "KB /" + Mathf.Floor(total / 1024).ToString() + "KB";
 }
Beispiel #2
0
    IEnumerator CheckVersion()
    {
        string path = Globals.wwwPersistenPath + "/version.txt";
        WWW    www  = new WWW(path);

        yield return(www);

        string oldVersionStr = "0.0.0";

        if (www.error == null)
        {
            oldVersionStr = www.text.Trim();
        }
        Version oldVersion = new Version(oldVersionStr);

        www = new WWW(Globals.wwwStreamingPath + "/version.txt");
        yield return(www);

        string  curVersionStr = www.text.Trim();
        Version curVersion    = new Version(curVersionStr);

        SampleDebuger.Log("old version : " + oldVersion.proCurVersion + ", cur version : " + curVersion.proCurVersion);
        if (oldVersion.IsLower(curVersion))
        {
            DeleteUpdateBundle();
        }
    }
Beispiel #3
0
    public bool InitSession(SessionType eType, string szIp, UInt16 wPort)
    {
        SampleDebuger.Log("type : " + eType.ToString() + ", ip : " + szIp + ", port : " + wPort);
        m_szIP         = szIp;
        m_wPort        = wPort;
        m_eSessionType = eType;

        switch (m_eSessionType)
        {
        case SessionType.SessionType_TCP:
        {
            m_pSession = new BinarySession(this);
        }
        break;

        case SessionType.SessionType_WebSocket:
        {
            m_pSession = new WebSocketSession(this);
        }
        break;

        default:
        {
            return(false);
            //throw new ArgumentException("error session type : " + m_eSessionType.ToString());
        }
        }

        m_pSession.Init(m_szIP, m_wPort);
        m_pClientSocket = m_pSession.Reconnect();
        return(true);
    }
Beispiel #4
0
 public override IFxClientSocket Reconnect()
 {
     SampleDebuger.Log("Reconnect");
     m_pSocket.Init(this);
     m_pSocket.Connect(m_oGameObject, m_szIp, m_wPort);
     return(m_pSocket);
 }
Beispiel #5
0
    public void Init(string szUrl)
    {
        SampleDebuger.Log(szUrl);
        Uri uri = new Uri(szUrl);

        string szBaseUrl;
        NameValueCollection nvcParam;

        ParseUrl(szUrl, out szBaseUrl, out nvcParam);

        PlayerData.Instance().SetPlatform(nvcParam.Get("platform"));
        PlayerData.Instance().SetName(nvcParam.Get("name"));
        PlayerData.Instance().SetHeadImage(nvcParam.Get("head_img"));
        StartCoroutine(H5Helper.SendGet(PlayerData.Instance().proHeadImage, delegate(Texture2D tex)
        {
            PlayerData.Instance().SetHeadTex(tex);
        })
                       );
        PlayerData.Instance().SetAccessToken(nvcParam.Get("access_token"));
        PlayerData.Instance().SetOpenId(nvcParam.Get("openid"));

        string szSex         = nvcParam.Get("sex");
        string szExpiresDate = nvcParam.Get("expires_date");
        uint   dwSex         = 0;
        uint   dwExpiresDate = 0;

        uint.TryParse(szSex, out dwSex);
        uint.TryParse(szExpiresDate, out dwExpiresDate);

        PlayerData.Instance().SetSex(dwSex);
        PlayerData.Instance().SetExpiresDate(dwExpiresDate);
    }
Beispiel #6
0
    IEnumerator GetServerVersion()
    {
        string szVersion = GameInstance.Instance().proServerUrl
                           + GameInstance.Instance().proServerVersion + "?" + Time.realtimeSinceStartup.ToString();
        WWW www = new WWW(szVersion);

        yield return(www);

        if (!string.IsNullOrEmpty(www.error))
        {
            //无法连接资源服务器
            SampleDebuger.LogWarning("url " + www.url + " ,error:" + www.error);
            m_comEnvChecker.GameInit();
            yield break;
        }

        if (!www.isDone)
        {
            yield return(www);
        }

        string versionStr = www.text.Trim();

        m_verServerVersion = new Version(versionStr);
        SampleDebuger.Log(" server version = " + m_verServerVersion.ToString());
        if (VersionManager.Instance().m_verVersion.IsLower(m_verServerVersion))
        {
            StartCoroutine(CheckVersionContent());
        }
        else
        {
            //进入游戏
            m_comEnvChecker.GameInit();
        }
    }
Beispiel #7
0
    public void OnLoginNotifyPlayerTeamInfo(byte[] pBuf)
    {
        GameProto.LoginNotifyPlayerTeamInfo oRet = GameProto.LoginNotifyPlayerTeamInfo.Parser.ParseFrom(pBuf);
        if (oRet == null)
        {
            SampleDebuger.Log("OnLoginNotifyPlayerTeamInfo error parse");
            return;
        }
        string szContent = "OnLoginNotifyPlayerTeamInfo team id : " + oRet.QwTeamId.ToString() + "\n";

        for (int i = 0; i < oRet.TeamRoleData.Count; ++i)
        {
            szContent += "playerid : " + oRet.TeamRoleData[i].RoleData.QwPlayerId.ToString()
                         + ", slot id : " + oRet.TeamRoleData[i].DwSlotId.ToString()
                         + ", serverid : " + oRet.TeamRoleData[i].DwServerId.ToString() + "\n";
        }

        SampleDebuger.Log(szContent);
        TeamData.Instance().SetTeamRoleData(oRet.TeamRoleData);

        if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name != GameConstant.g_szLobbyTeamScene)
        {
            AssetBundleLoader.Instance().LoadLevelAsset(GameConstant.g_szLobbyTeamScene, delegate()
            {
            }
                                                        );
        }
        else
        {
            TeamPlayerManager.SyncTeamInfo(oRet);
        }
    }
Beispiel #8
0
    /// <summary>
    /// 下载进度变化回调
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>

    private void OnDownloadProcess(object sender, DownloadProgressChangedEventArgs e)
    {
        SampleDebuger.Log(string.Format("received: {0} total: ", e.BytesReceived, e.TotalBytesToReceive));
        lock (AssetDownloader.Instance().m_lockWeb)
        {
            m_qwLoaded = e.BytesReceived;
            m_qwTotal  = e.TotalBytesToReceive;
        }
    }
Beispiel #9
0
 public void OnGameNotifyPlayerGameRoleData(byte[] pBuf)
 {
     GameProto.GameNotifyPlayerGameRoleData oRet = GameProto.GameNotifyPlayerGameRoleData.Parser.ParseFrom(pBuf);
     if (oRet == null)
     {
         SampleDebuger.Log("OnGameNotifyPlayerGameRoleData error parse");
         return;
     }
 }
Beispiel #10
0
 public void OnLoginAckPlayerInviteTeam(byte[] pBuf)
 {
     GameProto.LoginAckPlayerInviteTeam oRet = GameProto.LoginAckPlayerInviteTeam.Parser.ParseFrom(pBuf);
     if (oRet == null)
     {
         SampleDebuger.Log("OnLoginAckPlayerInviteTeam error parse");
         return;
     }
     SampleDebuger.Log("invite team ret : " + oRet.DwResult.ToString());
 }
Beispiel #11
0
    public IEnumerator Reload()
    {
        var request = AssetBundleManager.ReloadManifest(GetBundleDirName());

        if (request != null)
        {
            SampleDebuger.Log("reloading manifest");
            yield return(StartCoroutine(request));
        }
    }
Beispiel #12
0
 public void OnLoginNotifyPlayerGameKick(byte[] pBuf)
 {
     GameProto.LoginNotifyPlayerGameKick oRet = GameProto.LoginNotifyPlayerGameKick.Parser.ParseFrom(pBuf);
     if (oRet == null)
     {
         SampleDebuger.Log("OnLoginNotifyPlayerGameKick error parse");
         return;
     }
     SampleDebuger.Log("game kick ret : " + oRet.DwResult.ToString());
 }
Beispiel #13
0
    public void OnConnect()
    {
        SampleDebuger.Log("game connected");
        GameData.Instance().Reset();

        GameProto.PlayerRequestGameEnter oRequest = new GameProto.PlayerRequestGameEnter();

        oRequest.QwPlayerId = PlayerData.Instance().proPlayerId;

        SysUtil.SendMessage(m_pSession, oRequest, "GameProto.PlayerRequestGameEnter");
    }
Beispiel #14
0
    IEnumerator CheckVersionContent()
    {
        string szVersionMark = GameInstance.Instance().proServerUrl
                               + string.Format(GameInstance.Instance().proServerMarkPath, VersionManager.Instance().GetVersionUrl()) + "?" + Time.realtimeSinceStartup.ToString();
        WWW www = new WWW(szVersionMark);

        SampleDebuger.Log("+++++++++++ checkVersionContent +++++++++++ ");
        yield return(www);

        if (!string.IsNullOrEmpty(www.error))
        {
            SampleDebuger.Log(szVersionMark);
            AssetBundleLoader.Instance().LoadAsset(GameObjectConstant.GetABUIPath(GameObjectConstant.g_szConfirmPanel), GameObjectConstant.g_szConfirmPanel, delegate(UnityEngine.Object ob)
            {
                GameObject go_RoleList = Instantiate((GameObject)ob, MainCanvas.Instance().transform);
                go_RoleList.GetComponent <ConfirmPanel>().Init("检测到大版本更新,请前往官网或者应用商店下载最新版本",
                                                               delegate(object ob1)
                {
                    //todo 下载
                    SampleDebuger.LogGreen("begin down load");
                }, null, delegate(object ob1)
                {
                    //todo 取消下载
                    SampleDebuger.LogGreen("cancel down load");
                }, null
                                                               );
            }
                                                   );
            yield break;
        }
        //下载更新包
        if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
        {
            m_comEnvChecker.StartDownload();
        }
        else
        {
            AssetBundleLoader.Instance().LoadAsset(GameObjectConstant.GetABUIPath(GameObjectConstant.g_szConfirmPanel), GameObjectConstant.g_szConfirmPanel, delegate(UnityEngine.Object ob)
            {
                GameObject go_RoleList = Instantiate((GameObject)ob, MainCanvas.Instance().transform);
                go_RoleList.GetComponent <ConfirmPanel>().Init("检测到游戏更新,请点击更新!",
                                                               delegate(object ob1)
                {
                    m_comEnvChecker.StartDownload();
                }, null, delegate(object ob1)
                {
                    //todo 取消下载
                    SampleDebuger.LogGreen("cancel down load");
                }, null
                                                               );
            }
                                                   );
        }
    }
Beispiel #15
0
    public void OnLoginNotifyPlayerRefuseEnterTeam(byte[] pBuf)
    {
        GameProto.LoginNotifyPlayerRefuseEnterTeam oRet = GameProto.LoginNotifyPlayerRefuseEnterTeam.Parser.ParseFrom(pBuf);
        if (oRet == null)
        {
            SampleDebuger.Log("OnLoginNotifyPlayerRefuseEnterTeam error parse");
            return;
        }

        SampleDebuger.LogError("OnLoginNotifyPlayerRefuseEnterTeam reason : " + oRet.SzReason);
    }
Beispiel #16
0
    public void OnGameNotifyPlayerGameReadyTime(byte[] pBuf)
    {
        GameProto.GameNotifyPlayerGameReadyTime oRet = GameProto.GameNotifyPlayerGameReadyTime.Parser.ParseFrom(pBuf);
        if (oRet == null)
        {
            SampleDebuger.LogYellow("GameNotifyPlayerGameReadyTime error parse");
            return;
        }
        SampleDebuger.Log("game ready time left : " + oRet.DwLeftTime.ToString());

        ReadyTime.SetReadyTime(oRet.DwLeftTime);
    }
Beispiel #17
0
    public void OnGameAckPlayerEnter(byte[] pBuf)
    {
        GameProto.GameAckPlayerEnter oRet = GameProto.GameAckPlayerEnter.Parser.ParseFrom(pBuf);
        if (oRet == null)
        {
            SampleDebuger.LogYellow("OnGameAckPlayerEnter error parse");
            return;
        }
        SampleDebuger.Log("game enter : " + oRet.DwResult.ToString());

        TetrisDataManager.Instance().SetOwner(PlayerData.Instance().proPlayerId);
    }
Beispiel #18
0
    public void DownloadUrl(string url)
    {
        m_dwCurFileCount++;

        Uri uri = new Uri(url, UriKind.Absolute);

        string tmpFile = m_szTempPath + "/" + m_dwCurFileCount + "-" + DateTime.Now.Ticks.ToString();

        m_webClient.DownloadFileAsync(uri, tmpFile, tmpFile);

        SampleDebuger.Log("++++ downloading url: " + uri.ToString());
    }
Beispiel #19
0
    public void OnLoginAckPlayerGameStart(byte[] pBuf)
    {
        GameProto.LoginAckPlayerGameStart oRet = GameProto.LoginAckPlayerGameStart.Parser.ParseFrom(pBuf);
        if (oRet == null)
        {
            SampleDebuger.Log("OnLoginAckPlayerGameStart error parse");
            return;
        }
        SampleDebuger.Log("game start : " + oRet.DwResult.ToString());

        H5Manager.Instance().ConnectGame(oRet.SzListenIp, (ushort)oRet.DwPlayerPort);
    }
Beispiel #20
0
    /// <summary>
    /// 版本检查
    /// </summary>
    /// <returns></returns>
    IEnumerator CheckVersion()
    {
        string path = Globals.wwwPersistenPath + "/version.txt";
        WWW    www  = new WWW(path);

        yield return(www);

        SampleDebuger.Log("version  = " + www.text);

        if (string.IsNullOrEmpty(www.text) || (www.error != null))
        { //没读取到,是第一次安装,拷贝资源
            SampleDebuger.Log("First Time Launch!");
            //读取应用程序版本号
            www = new WWW(Globals.wwwStreamingPath + "/version.txt");
            yield return(www);

            m_szCurrentVersion = www.text.Trim();
            //versionText.text = currentVersion;
            BeginCopy();
            www.Dispose();
        }
        else
        {                                        //已安装过
            SampleDebuger.Log(" installed");
            string oldVersion = www.text.Trim(); //读取当前旧版本号

            //读取应用程序版本号
            www = new WWW(Globals.wwwStreamingPath + "/version.txt");
            yield return(www);

            m_szCurrentVersion = www.text.Trim();
            //versionText.text = currentVersion;
            //版本号小于安装程序中包含的版本号,删除旧资源再拷贝当前资源

            Version old_v = new Version(oldVersion);
            Version app_v = new Version(m_szCurrentVersion);
            if (old_v.IsLower(app_v))
            {
                string abPath = Application.persistentDataPath + "/AssetBundles";
                FileUtil.RemoveFolder(abPath);
                BeginCopy();
            }
            else
            {
                VersionManager.Instance().proCurVersion = oldVersion;
                _assetUpdater.CheckVersionWithServer();
            }
        }
    }
Beispiel #21
0
    /// <summary>
    /// 将文件拷贝到路径中
    /// </summary>
    /// <param name="streamPath"></param>
    /// <returns></returns>
    IEnumerator BeginCopy(string path)
    {
        yield return(new WaitForSeconds(2.0f));

        WWW www = new WWW(path + "/streamPath.txt");

        yield return(www);

        string[] content = www.text.Split(new string[] { "\n" }, System.StringSplitOptions.RemoveEmptyEntries);
        www.Dispose();
        int total    = content.Length;
        int curIndex = 0;

        foreach (string item in content)
        {
            string it       = item.Trim(); //window下会有\r,需要删除
            int    fileFlag = int.Parse(it.Split('|')[1]);
            it = it.Split('|')[0];
            SampleDebuger.Log(path);
            it = it.Trim();

            if (fileFlag == 1)
            {
                www = new WWW(path + it);
                yield return(www);

                File.WriteAllBytes(Application.persistentDataPath + it, www.bytes);
                //更新进度
                SetProcess(curIndex, total);
                www.Dispose();
            }
            else if (fileFlag == 0)
            {
                SampleDebuger.Log("Create dir " + Application.persistentDataPath + it);
                Directory.CreateDirectory(Application.persistentDataPath + it);
            }
            else
            {
                SampleDebuger.LogError("既不是文件夹也不是文件 路径为" + Application.persistentDataPath + it);
            }
            ++curIndex;
        }

        SampleDebuger.Log(" writeversion");

        // 同步版本
        VersionManager.Instance().proCurVersion = m_szCurrentVersion;
        _assetUpdater.CheckVersionWithServer();
    }
Beispiel #22
0
    public static IEnumerator SendGet(string _url, System.Action <string> cbf)
    {
        WWW getData = new WWW(_url);

        yield return(getData);

        if (getData.error != null)
        {
            SampleDebuger.Log(getData.error);
        }
        else
        {
            cbf(getData.text);
        }
    }
Beispiel #23
0
    public override bool Update()
    {
        base.Update();

        if (m_Request != null && m_Request.isDone)
        {
            AssetBundleManager.AssetBundleManifestObject = GetAsset <AssetBundleManifest>();
            SampleDebuger.Log("AssetBundleManifest was been loaded!");
            return(false);
        }
        else
        {
            return(true);
        }
    }
Beispiel #24
0
    public static IEnumerator SendPost(string _url, WWWForm _wForm, System.Action <string> cbf)
    {
        WWW postData = new WWW(_url, _wForm);

        yield return(postData);

        if (postData.error != null)
        {
            SampleDebuger.Log(postData.error);
        }
        else
        {
            cbf(postData.text);
        }
    }
Beispiel #25
0
    public static IEnumerator SendGet(string _url, System.Action <Texture2D> cbf)
    {
        WWW imageData = new WWW(_url);

        yield return(imageData);

        if (imageData.error != null)
        {
            SampleDebuger.Log(imageData.error);
        }
        else
        {
            cbf(imageData.texture);
        }
    }
Beispiel #26
0
    //生成AB包
    public static void GenerateAB()
    {
        string resPath = GetABPath();

        if (!Directory.Exists(resPath))
        {
            Directory.CreateDirectory(resPath);
        }

        if (Packager.bAssetBundle)
        {
            SampleDebuger.Log("build : " + resPath);
            BuildPipeline.BuildAssetBundles(resPath, BuildAssetBundleOptions.UncompressedAssetBundle | BuildAssetBundleOptions.ForceRebuildAssetBundle, EditorUserBuildSettings.activeBuildTarget);
        }
        AssetDatabase.Refresh();
    }
Beispiel #27
0
    public void OnPlayerRequestGameTest(byte[] pBuf)
    {
        GameProto.PlayerRequestGameTest oTest = GameProto.PlayerRequestGameTest.Parser.ParseFrom(pBuf);
        if (oTest == null)
        {
            SampleDebuger.LogYellow("OnTest error parse");
            return;
        }

        SampleDebuger.Log(oTest.SzTest.ToString());

        oTest.SzTest = String.Format("{0}, {1}, {2}, {3}, {4}, {5}",
                                     "sessionobject.cs", 106, "SessionObject::OnRecv", dw1++,
                                     ToString(), DateTime.Now.ToLocalTime().ToString());

        SysUtil.SendMessage(m_pSession, oTest, "GameProto.PlayerRequestGameTest");
    }
Beispiel #28
0
    public void OnLoginAckPlayerOnLinePlayer(byte[] pBuf)
    {
        GameProto.LoginAckPlayerOnLinePlayer oRet = GameProto.LoginAckPlayerOnLinePlayer.Parser.ParseFrom(pBuf);
        if (oRet == null)
        {
            SampleDebuger.Log("OnLoginAckPlayerOnLinePlayer error parse");
            return;
        }
        SampleDebuger.Log("online player ret : " + oRet.DwResult.ToString());

        AssetBundleLoader.Instance().LoadAsset(GameObjectConstant.GetABUIPath(GameObjectConstant.g_szPlayerList), GameObjectConstant.g_szPlayerList, delegate(UnityEngine.Object ob)
        {
            RoleList pRoleList = RoleList.CreateInstance(ob, MainCanvas.Instance().transform);
            pRoleList.SetPlayerIds(oRet.QwPlayerId);
        }
                                               );
    }
Beispiel #29
0
    public void OnLoginNotifyPlayerInviteTeam(byte[] pBuf)
    {
        GameProto.LoginNotifyPlayerInviteTeam oRet = GameProto.LoginNotifyPlayerInviteTeam.Parser.ParseFrom(pBuf);
        if (oRet == null)
        {
            SampleDebuger.Log("OnLoginAckPlayerOnLinePlayer error parse");
            return;
        }

        SampleDebuger.Log("on invitee team player id : " + oRet.QwPlayerId.ToString() + " team id : " + oRet.QwTeamId.ToString());

        AssetBundleLoader.Instance().LoadAsset(GameObjectConstant.GetABUIPath(GameObjectConstant.g_szConfirmPanel), GameObjectConstant.g_szConfirmPanel, delegate(UnityEngine.Object ob)
        {
            GameObject go_RoleList = Instantiate((GameObject)ob, MainCanvas.Instance().transform);
            go_RoleList.GetComponent <ConfirmPanel>().Init("player : " + oRet.QwPlayerId.ToString() + " invite you to team :" + oRet.QwTeamId.ToString(),
                                                           IntoInviteTeam, oRet, NotIntoInviteTeam, oRet);
        }
                                               );
    }
Beispiel #30
0
    public void OnRoleData(string szData)
    {
        SampleDebuger.Log(szData);
        RoleDataRet oData = JsonUtility.FromJson <RoleDataRet>(szData);

        GameProto.PlayerRequestLogin oTest = new GameProto.PlayerRequestLogin();
        oTest.SzToken    = oData.token;
        oTest.QwPlayerId = oData.data.id;
        oTest.SzAvatar   = oData.data.avatar;
        oTest.SzNickName = oData.data.nick_name;
        oTest.DwSex      = oData.data.sex;
        oTest.DwBalance  = oData.data.balance;

        StartCoroutine(H5Helper.SendGet(oData.data.avatar, delegate(Texture2D tex)
        {
            PlayerData.Instance().SetHeadTex(tex);
        })
                       );

        PlayerData.Instance().SetPlayerId(oData.data.id);
        PlayerData.Instance().SetName(oData.data.nick_name);
        PlayerData.Instance().SetHeadImage(oData.data.avatar);
        PlayerData.Instance().SetSex(oData.data.sex);
        PlayerData.Instance().SetBalance(oData.data.balance);
        PlayerData.Instance().SetToken(oData.token);

        byte[]          pData   = new byte[2048];
        FxNet.NetStream pStream = new FxNet.NetStream(FxNet.NetStream.ENetStreamType.ENetStreamType_Write, pData, 2048);
        pStream.WriteString("GameProto.PlayerRequestLogin");
        byte[] pProto = new byte[oTest.CalculateSize()];
        Google.Protobuf.CodedOutputStream oStream = new Google.Protobuf.CodedOutputStream(pProto);
        oTest.WriteTo(oStream);
        pStream.WriteData(pProto, (uint)pProto.Length);

        m_pSession.Send(pData, 2048 - pStream.GetLeftLen());

        if (!string.IsNullOrEmpty(oData.game_ip))
        {
            PlayerData.Instance().SetGameIp(oData.game_ip);
            PlayerData.Instance().SetGamePort((ushort)oData.game_port);
        }
    }