示例#1
0
        /// <summary>
        /// 解析单位行为
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="player"></param>
        void ParseUnitBehavious(string msg, PlayerData player)
        {
            float  time;
            int    camp;
            string ID;

            string data = msg.Split(' ')[1];

            string[] t = data.Split('@');

            time = ServerFunction.SendNumber2Float(t[0]);
            camp = int.Parse(t[1]);
            ID   = t[2];

            //检查行为是否超时
            if (time + config.MAXTIME_MSG < Time)
            {
                return;
            }
            else
            {
                //是否合法
                if (!UnitDic[camp][ID].isError)
                {
                    BroadcastMsg(msg);
                }
            }
        }
示例#2
0
        /// <summary>
        /// 解析单位创造
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="player"></param>
        void ParseCreateUnit(string msg, PlayerData player)
        {
            Vector3 pos;
            string  rotation;
            float   recoverSpeed;
            float   Time_recover;
            int     MaxDValue;

            int[] material = new int[3];
            int   type;
            int   index;

            string[] data = msg.Split(' ')[1].Split(':');

            pos          = Vector3.Parse(data[0], ',');
            rotation     = data[1];
            recoverSpeed = ServerFunction.SendNumber2Float(data[2]);
            Time_recover = ServerFunction.SendNumber2Float(data[3]);
            MaxDValue    = int.Parse(data[4]);
            material[0]  = int.Parse(data[5]);
            material[1]  = int.Parse(data[6]);
            material[2]  = int.Parse(data[7]);
            type         = int.Parse(data[8]);

            //是否能创建
            if (!player.isCanCreate(material))
            {
                return;
            }

            index = UnitIndex++;
            UnitInfo t = new UnitInfo(index.ToString(), recoverSpeed, Time_recover, MaxDValue, type, pos, rotation);

            //添加字典
            UnitDic[player.Camp].Add(index.ToString(), t);
            player.UpdateMaterial(material, -1);
            //设置委托
            t.dele_updateBehavious = UpdateBehavious;

            //广播
            string MSG = string.Format(format_CU,
                                       index,
                                       data[0],
                                       data[1],
                                       player.Camp,
                                       data[8]
                                       );

            BroadcastMsg(MSG);
        }
示例#3
0
        const string format_DM = "DM {0}:{1}:{2}:{3}"; //阵营:单位ID:当前DValue:受伤的时间
        /// <summary>
        /// 解析伤害信息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="player"></param>
        void ParseDamageInfo(string msg, PlayerData player)
        {
            bool    isPlayer;
            string  target;
            int     damage;
            float   time;
            int     camp;
            Vector3 shootPos;

            string data = msg.Split(' ')[1];

            string[] t = data.Split(':');
            isPlayer = (t[0] == "0" ? false : true);
            target   = t[1];
            damage   = int.Parse(t[2]);
            time     = ServerFunction.SendNumber2Float(t[3]);
            camp     = int.Parse(t[4]);
            shootPos = Vector3.Parse(t[5], ',');

            //超时
            if (time + config.MAXTIME_MSG < Time)
            {
                return;
            }

            if (isPlayer)
            {
                Players[int.Parse(target)].getDamage(damage, shootPos);
            }
            else
            {
                float DValue = UnitDic[camp][target].getDamage(damage, Time);
                //构造广播信息
                string sendMSG = string.Format(format_DM, camp, target, ServerFunction.Float2SendNumber(DValue), ServerFunction.Float2SendNumber(Time));
                //广播
                BroadcastMsg(sendMSG);
            }
        }