Beispiel #1
0
    void SetUserData()
    {
        string         data  = JsonFactory.Load(Const.UserDataName);
        StructUserData _data = JsonUtility.FromJson <StructUserData>(data);

        Const.UserData = _data;
    }
    /* @ url : SyncMovement
     * @ request :
     *       posX
     *       posY
     *       opponentUid
     * @ response :
     *      opponentPosX
     *      opponentPosY
     */
    StructRequest SyncMovement(StructRequest request)
    {
        string user_id = request.uid;

        // 유저가 없을 때
        if (!mUserData.ContainsKey(user_id))
        {
            return(ServerNet.ErrorStructRequest());
        }

        StructUserData user_data = mUserData[user_id];

        // 파라매터가 오지 않았을 경우
        if (request.parameter == null)
        {
            return(ServerNet.ErrorStructRequest());
        }

        // 유저 위치 기록
        if (request.parameter.ContainsKey("posX"))
        {
            user_data.posX = request.parameter["posX"];
        }

        if (request.parameter.ContainsKey("posY"))
        {
            user_data.posY = request.parameter["posY"];
        }

        if (request.parameter.ContainsKey("opponentUid"))
        {
            user_data.opponentUid = request.parameter["opponentUid"];
        }


        mUserData[user_id] = user_data;

        // 상대방 정보
        if (!request.parameter.ContainsKey("opponentUid"))
        {
            return(ServerNet.ErrorStructRequest());
        }

        string opponentUid = request.parameter["opponentUid"];

        // 상대방 정보 없을 경우
        if (!mUserData.ContainsKey(opponentUid))
        {
            return(ServerNet.ErrorStructRequest());
        }

        StructUserData opponent_data = mUserData[opponentUid];

        // 상대방 위치를 response로 전달
        Dictionary <string, string> dic_param = new Dictionary <string, string>();

        dic_param["opponentPosX"] = opponent_data.posX == null ? "0" : opponent_data.posX;
        dic_param["opponentPosY"] = opponent_data.posY == null ? "0" : opponent_data.posY;
        return(MakeResponse(request, dic_param));
    }
    /* @ url : InitUser
     * @ request :
     * @ response :
     *      uid
     *      mapData
     */
    StructRequest InitUserID(StructRequest request)
    {
        int user_id = mUIDIndex % 2; // uid는 0 과 1 만 발급

        mUIDIndex += 1;

        if (mUserData == null)
        {
            mUserData = new Dictionary <string, StructUserData>();
        }

        // 유저 데이터 생성
        StructUserData user_data = new StructUserData();

        user_data.uid = user_id.ToString();

        // 파라매터 생성
        Dictionary <string, string> dic_param = new Dictionary <string, string>();

        dic_param["mapData"]  = mMapData;
        dic_param["itemData"] = mItemList;

        // 유저 데이터에 저장
        request.uid = user_data.uid;
        mUserData[user_id.ToString()] = user_data;


        return(MakeResponse(request, dic_param));
    }
Beispiel #4
0
    // PVP
    public void GotoPVPGame()
    {
        // @request 상대 UID 요청
        StructRequest request = new StructRequest();

        request.uid         = mUserData.uid;
        request.request_url = URL.GetOpponentData.ToString();

        void mCallBack(StructRequest response)
        {
            if (response.parameter != null)
            {
                if (response.parameter["opponentUid"] != null)
                {
                    StructUserData user_data = mUserData;
                    user_data.opponentUid = response.parameter["opponentUid"];

                    // 발급받은 UID는 로컬 데이터에 저장
                    JsonFactory.Write(Const.UserDataName, user_data);

                    // 상대 클라이언트가 준비되었다면 게임 실행
                    SceneManager.LoadScene("GameScene");
                }
            }
        }

        mNet.SetCallBack(mCallBack);
        mNet.RequestMsg(request);
    }
Beispiel #5
0
    void SetSocket()
    {
        // 소켓 설치
        gameObject.AddComponent <ClientNet>();
        mNet = GetComponent <ClientNet>();

        // @request UID 발급 신청
        StructRequest request = new StructRequest();

        request.uid         = "";
        request.request_url = URL.InitUser.ToString();

        void CallBack(StructRequest response)
        {
            if (response.uid != null)
            {
                mUserData           = new StructUserData();
                mUserData.uid       = response.uid;
                mUserData.isPVPMode = true;
                string map_data  = response.parameter["mapData"];
                string item_data = response.parameter["itemData"];

                // 맵 데이터에 저장
                JsonFactory.WriteString(Const.MapDataName, map_data);
                mUserData.itemData = item_data;
            }
        }

        mNet.SetCallBack(CallBack);
        mNet.RequestMsg(request);
    }
    /* @ url : AttackBomb
     * @ request :
     * @ response :
     *      bombIndex
     */

    // @Send 함수가 별도로 있음 주의할 것
    void AttackBomb(StructRequest request)
    {
        string user_id = request.uid;

        // 유저가 없을 경우
        if (!mUserData.ContainsKey(user_id))
        {
            return;
        }

        // 물풍선 위치 저장
        StructUserData user_data = mUserData[user_id];

        if (request.parameter.ContainsKey("bombIndex"))
        {
            user_data.bombIndex = request.parameter["bombIndex"];
        }

        // 바로 쏴주기 떄문에 사실 필요는 없다.
        mUserData[user_id] = user_data;

        // 파라매터
        Dictionary <string, string> dic_param = new Dictionary <string, string>();

        dic_param["bombIndex"] = user_data.bombIndex;
        StructRequest res = MakeResponse(request, dic_param);

        // 상대 클라이언트 소켓에 물풍선 통신
        Socket socket;

        if (request.uid == "0")
        {
            socket = mBombSocket1;
        }
        else
        {
            socket = mBombSocket2;
        }

        string send = NetFormatHelper.StructRequestToString(res);

        byte[] _data = new Byte[ServerNet.BYTESIZE];
        _data = NetFormatHelper.StringToByte(send);

        try
        {
            Console.WriteLine("수신 : " + send);
            socket.Send(_data);
        }
        catch (Exception err)
        {
            Console.WriteLine("Send error");
            return;
        }
    }
    private void Start()
    {
        // 소켓 설치
        gameObject.AddComponent <ClientNet>();
        mNEt = this.GetComponent <ClientNet>();

        // 로컬 데이터에 들어있는 유저 정보 저장
        string         data  = JsonFactory.Load(Const.UserDataName);
        StructUserData _data = JsonUtility.FromJson <StructUserData>(data);

        Const.UserData = _data;
    }
Beispiel #8
0
    public void SetPVEMode()
    {
        mIsPVPMode = false;
        SetMode();

        StructUserData user_data = new StructUserData();

        user_data.uid       = "";
        user_data.isPVPMode = false;

        // PVE 모드 저장
        JsonFactory.Write(Const.UserDataName, user_data);
    }
Beispiel #9
0
    public void Start()
    {
        // 로컬 데이터에 들어있는 유저 정보 저장
        string         data  = JsonFactory.Load(Const.UserDataName);
        StructUserData _data = JsonUtility.FromJson <StructUserData>(data);

        Const.UserData = _data;

        if (Const.UserData.isPVPMode)
        {
            SetItemList();
        }
    }
Beispiel #10
0
    void Start()
    {
        string         data  = JsonFactory.Load(Const.UserDataName);
        StructUserData _data = JsonUtility.FromJson <StructUserData>(data);

        if (_data.isPVPMode)
        {
            SetPVPMode();
        }
        else
        {
            SetPVEMode();
        }
    }
    /* @ url : GetOpponentData
     * @ request :
     * @ response :
     *      opponentUid
     */
    StructRequest GetOpponentData(StructRequest request)
    {
        string user_uid     = request.uid;
        string opponent_uid = ErrorCode.Error.ToString();

        if (user_uid == "1")
        {
            opponent_uid = "0";
        }
        else
        {
            opponent_uid = "1";
        }

        if (mUserData.ContainsKey(opponent_uid))
        {
            StructUserData opponent_data          = mUserData[opponent_uid];
            Dictionary <string, string> dic_param = new Dictionary <string, string>();
            dic_param["opponentUid"] = opponent_data.uid;
            return(MakeResponse(request, dic_param));
        }

        return(ServerNet.ErrorStructRequest());
    }