Exemple #1
0
    /// <summary>
    /// 缓存待确认数据
    /// </summary>
    /// <param name="opMsg"></param>
    /// <param name="isLocal">是否为发送等待, 否则为接收等待</param>
    private void PushBeComfirmData(MsgOptional opMsg, bool isLocal = false)
    {
        // 保存数据, 等待确认数据
        var opUniqueId = opMsg.OpUniqueNum;

        if (isLocal)
        {
            opMsgBufferSend.Add(opUniqueId, opMsg);
        }
        else
        {
            opMsgBufferReceive.Add(opUniqueId, opMsg);
        }
    }
Exemple #2
0
    /// <summary>
    /// 创建操作消息
    /// </summary>
    /// <param name="opType">操作类型</param>
    /// <param name="opPosX">操作位置x</param>
    /// <param name="opPosY">操作位置y</param>
    /// <param name="opPosZ">操作位置z</param>
    /// <param name="opParams">操作其他参数</param>
    /// <returns></returns>
    public static MsgOptional GetMsgOptional(int opType, float opPosX, float opPosY, float opPosZ, string opParams)
    {
        MsgOptional result = null;

        result = new MsgOptional()
        {
            OpType      = opType,
            OpPosX      = opPosX,
            OpPosY      = opPosY,
            OpPosZ      = opPosZ,
            OpParams    = opParams,
            OpUniqueNum = AddtionOpUniqueNum
        };

        return(result);
    }
Exemple #3
0
    /// <summary>
    /// 发送测试消息
    /// </summary>
    private void SendTestMsg()
    {
        //if (head == null)
        //{
        //    Debug.LogError("请先请求head数据");
        //    return;
        //}
        //var msg = Encoding.UTF8.GetBytes("111测试");
        //TestData td = new TestData();
        //td.Att2 = "www";
        //var msg = Serialize(td);
        MsgOptional opMsg = new MsgOptional()
        {
            OpPosX = 0,
            OpPosY = 0,
            OpPosZ = 0,
            OpType = 1
        };
        var stream = new MemoryStream();

        ProtoBuf.Serializer.Serialize(stream, opMsg);
        data = PackageData(stream.ToArray(), userId, 1);
        isReceivedServerMsg = true;
    }
Exemple #4
0
    /// <summary>
    /// 确认操作
    /// </summary>
    /// <param name="msgOp">被确认操作消息</param>
    /// <param name="isLocal">是否本地创建</param>
    private void ComfirmOptional(MsgOptional msgOp, bool isLocal = false)
    {
        // 下兵操作
        // 解析Params
        // TODO 模型动画相关参数不全
        var kvDic    = GetParams(msgOp.OpParams);
        var objectId = Convert.ToInt32(kvDic["ObjectId"]);
        var unitType = Convert.ToInt32(kvDic["UnitType"]);
        var uniqueId = Convert.ToInt32(kvDic["UniqueId"]);
        //var cmName = kvDic["CmName"];
        var    level           = Convert.ToInt32(kvDic["Level"]);
        string meshPackname    = null;
        string texturePackname = null;

        if (kvDic.ContainsKey("MeshPackName"))
        {
            meshPackname = kvDic["MeshPackName"];
        }
        if (kvDic.ContainsKey("TexturePackName"))
        {
            texturePackname = kvDic["TexturePackName"];
        }
        // 如果本地缓存了DisplayOwner不创建
        DisplayOwner memberDisplay = null;

        if (isLocal)
        {
            // 获取本地DisplayOwner
            memberDisplay = DisplayerManager.Single.GetElementById((ObjectID.ObjectType)unitType, objectId);
            // 设置起始位置
            memberDisplay.GameObj.transform.position = new Vector3(msgOp.OpPosX, msgOp.OpPosY, msgOp.OpPosZ);
        }
        else
        {
            // 映射类型
            if (enemyTypeList.ContainsKey(unitType))
            {
                unitType = enemyTypeList[unitType];
            }
            // 映射位置
            // 地图绝对宽度
            //var mapAbsoluteWidth = LoadMap.Single.MapWidth*LoadMap.Single.UnitWidth;
            //var setPosX = mapAbsoluteWidth - msgOp.OpPosX;
            var mapingPos = LoadMap.Single.MapItemToEnemy(new Vector3(msgOp.OpPosX, msgOp.OpPosY, msgOp.OpPosZ));
            // 创建单位
            memberDisplay = FightUnitFactory.CreateUnit(unitType, new CreateActorParam(mapingPos.x, mapingPos.z, level)
            {
                //ColorMat = true,
                //CardID = 0,
                //MeshPackName = meshPackname,
                //TexturePackName = texturePackname,
                SoldierID = uniqueId,
            });
            memberDisplay.ClusterData.Begin();
        }
        // 本地操作结束callback
        opSendCallbackDic[msgOp.OpUniqueNum]();
        // 激活单位
        memberDisplay.GameObj.SetActive(true);
        // 开始移动
        memberDisplay.RanderControl.Begin();
    }