Пример #1
0
    /// <summary>
    /// 写入字节流(简版)
    /// </summary>
    protected override void toWriteBytesSimple(BytesWriteStream stream)
    {
        stream.writeInt(this.index);

        if(this.commands!=null)
        {
            stream.writeBoolean(true);
            stream.writeLen(this.commands.size());
            if(!this.commands.isEmpty())
            {
                FrameSyncCommandData[] commandsVValues=this.commands.getValues();
                for(int commandsVI=0,commandsVLen=this.commands.length();commandsVI<commandsVLen;++commandsVI)
                {
                    FrameSyncCommandData commandsV=commandsVValues[commandsVI];
                    if(commandsV!=null)
                    {
                        stream.writeBoolean(true);
                        stream.writeDataSimpleNotNull(commandsV);
                    }
                    else
                    {
                        stream.writeBoolean(false);
                    }

                }
            }
        }
        else
        {
            stream.writeBoolean(false);
        }
    }
Пример #2
0
    /// <summary>
    /// 回池
    /// </summary>
    protected override void toRelease(DataPool pool)
    {
        base.toRelease(pool);

        this.command.release(pool);
        this.command = null;
    }
Пример #3
0
    /// <summary>
    /// 创建实例
    /// </summary>
    public static FrameSyncOneRequest create(FrameSyncCommandData command)
    {
        FrameSyncOneRequest re = (FrameSyncOneRequest)BytesControl.createRequest(dataID);

        re.command = command;
        return(re);
    }
Пример #4
0
    /** 预备执行指令 */
    protected virtual void preExecuteCommand(FrameSyncCommandData command)
    {
        Unit unit = _scene.getCharacterByIndex(command.index);

        if (unit == null)
        {
            Ctrl.throwError("帧同步出错");
            return;
        }

        executeCommand(unit, command);
    }
Пример #5
0
    /// <summary>
    /// 复制(潜拷贝)
    /// </summary>
    protected override void toShadowCopy(BaseData data)
    {
        if (!(data is FrameSyncCommandData))
        {
            return;
        }

        FrameSyncCommandData mData = (FrameSyncCommandData)data;

        this.index  = mData.index;
        this.type   = mData.type;
        this.ints   = mData.ints;
        this.floats = mData.floats;
    }
Пример #6
0
    protected override void copyData()
    {
        base.copyData();
        FrameSyncCommandData commandTemp = command;

        if (commandTemp != null)
        {
            this.command = (FrameSyncCommandData)commandTemp.clone();
        }
        else
        {
            this.command = null;
            nullObjError("command");
        }
    }
Пример #7
0
    /// <summary>
    /// 复制(深拷贝)
    /// </summary>
    protected override void toCopy(BaseData data)
    {
        if(!(data is FrameSyncData))
            return;

        FrameSyncData mData=(FrameSyncData)data;

        this.index=mData.index;

        if(mData.commands!=null)
        {
            if(this.commands!=null)
            {
                this.commands.clear();
                this.commands.ensureCapacity(mData.commands.size());
            }
            else
            {
                this.commands=new SList<FrameSyncCommandData>();
            }

            SList<FrameSyncCommandData> commandsT=this.commands;
            if(!mData.commands.isEmpty())
            {
                FrameSyncCommandData[] commandsVValues=mData.commands.getValues();
                for(int commandsVI=0,commandsVLen=mData.commands.length();commandsVI<commandsVLen;++commandsVI)
                {
                    FrameSyncCommandData commandsV=commandsVValues[commandsVI];
                    FrameSyncCommandData commandsU;
                    if(commandsV!=null)
                    {
                        commandsU=(FrameSyncCommandData)commandsV.clone();
                    }
                    else
                    {
                        commandsU=null;
                    }

                    commandsT.add(commandsU);
                }
            }
        }
        else
        {
            this.commands=null;
        }
    }
Пример #8
0
    /// <summary>
    /// 转文本输出
    /// </summary>
    protected override void toWriteDataString(DataWriter writer)
    {
        writer.writeTabs();
        writer.sb.Append("index");
        writer.sb.Append(':');
        writer.sb.Append(this.index);

        writer.writeEnter();
        writer.writeTabs();
        writer.sb.Append("commands");
        writer.sb.Append(':');
        writer.sb.Append("List<FrameSyncCommandData>");
        if(this.commands!=null)
        {
            SList<FrameSyncCommandData> commandsT=this.commands;
            int commandsLen=commandsT.size();
            writer.sb.Append('(');
            writer.sb.Append(commandsLen);
            writer.sb.Append(')');
            writer.writeEnter();
            writer.writeLeftBrace();
            for(int commandsI=0;commandsI<commandsLen;++commandsI)
            {
                FrameSyncCommandData commandsV=commandsT.get(commandsI);
                writer.writeTabs();
                writer.sb.Append(commandsI);
                writer.sb.Append(':');
                if(commandsV!=null)
                {
                    commandsV.writeDataString(writer);
                }
                else
                {
                    writer.sb.Append("FrameSyncCommandData=null");
                }

                writer.writeEnter();
            }
            writer.writeRightBrace();
        }
        else
        {
            writer.sb.Append("=null");
        }

        writer.writeEnter();
    }
Пример #9
0
    /// <summary>
    /// 复制(深拷贝)
    /// </summary>
    protected override void toCopy(BaseData data)
    {
        if (!(data is FrameSyncCommandData))
        {
            return;
        }

        FrameSyncCommandData mData = (FrameSyncCommandData)data;

        this.index = mData.index;

        this.type = mData.type;

        if (mData.ints != null)
        {
            int[] intsR   = mData.ints;
            int   intsLen = intsR.Length;
            if (this.ints == null || this.ints.Length != intsLen)
            {
                this.ints = new int[intsLen];
            }
            BytesControl.arrayCopy(mData.ints, this.ints, intsLen);
        }
        else
        {
            this.ints = null;
            nullObjError("ints");
        }

        if (mData.floats != null)
        {
            float[] floatsR   = mData.floats;
            int     floatsLen = floatsR.Length;
            if (this.floats == null || this.floats.Length != floatsLen)
            {
                this.floats = new float[floatsLen];
            }
            BytesControl.arrayCopy(mData.floats, this.floats, floatsLen);
        }
        else
        {
            this.floats = null;
            nullObjError("floats");
        }
    }
Пример #10
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        FrameSyncData mData=(FrameSyncData)data;
        if(this.index!=mData.index)
            return false;

        if(mData.commands!=null)
        {
            if(this.commands==null)
                return false;
            if(this.commands.size()!=mData.commands.size())
                return false;
            SList<FrameSyncCommandData> commandsT=this.commands;
            SList<FrameSyncCommandData> commandsR=mData.commands;
            int commandsLen=commandsT.size();
            for(int commandsI=0;commandsI<commandsLen;++commandsI)
            {
                FrameSyncCommandData commandsU=commandsT.get(commandsI);
                FrameSyncCommandData commandsV=commandsR.get(commandsI);
                if(commandsV!=null)
                {
                    if(commandsU==null)
                        return false;
                    if(!commandsU.dataEquals(commandsV))
                        return false;
                }
                else
                {
                    if(commandsU!=null)
                        return false;
                }

            }
        }
        else
        {
            if(this.commands!=null)
                return false;
        }

        return true;
    }
Пример #11
0
    /// <summary>
    /// 读取字节流(完整版)
    /// </summary>
    protected override void toReadBytesFull(BytesReadStream stream)
    {
        stream.startReadObj();

        this.index=stream.readInt();

        if(stream.readBoolean())
        {
            int commandsLen=stream.readLen();
            if(this.commands!=null)
            {
                this.commands.clear();
                this.commands.ensureCapacity(commandsLen);
            }
            else
            {
                this.commands=new SList<FrameSyncCommandData>();
            }

            SList<FrameSyncCommandData> commandsT=this.commands;
            for(int commandsI=commandsLen-1;commandsI>=0;--commandsI)
            {
                FrameSyncCommandData commandsV;
                if(stream.readBoolean())
                {
                    BaseData commandsVT=stream.readDataFullNotNull();
                    if(commandsVT!=null)
                    {
                        if(commandsVT is FrameSyncCommandData)
                        {
                            commandsV=(FrameSyncCommandData)commandsVT;
                        }
                        else
                        {
                            commandsV=new FrameSyncCommandData();
                            if(!(commandsVT.GetType().IsAssignableFrom(typeof(FrameSyncCommandData))))
                            {
                                stream.throwTypeReadError(typeof(FrameSyncCommandData),commandsVT.GetType());
                            }
                            commandsV.shadowCopy(commandsVT);
                        }
                    }
                    else
                    {
                        commandsV=null;
                    }
                }
                else
                {
                    commandsV=null;
                }

                commandsT.add(commandsV);
            }
        }
        else
        {
            this.commands=null;
        }

        stream.endReadObj();
    }
Пример #12
0
 /** 执行指令 */
 protected virtual void executeCommand(Unit unit, FrameSyncCommandData command)
 {
 }
Пример #13
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        FrameSyncCommandData mData = (FrameSyncCommandData)data;

        if (this.index != mData.index)
        {
            return(false);
        }

        if (this.type != mData.type)
        {
            return(false);
        }

        if (mData.ints != null)
        {
            if (this.ints == null)
            {
                return(false);
            }
            if (this.ints.Length != mData.ints.Length)
            {
                return(false);
            }
            int[] intsT   = this.ints;
            int[] intsR   = mData.ints;
            int   intsLen = intsT.Length;
            for (int intsI = 0; intsI < intsLen; ++intsI)
            {
                int intsU = intsT[intsI];
                int intsV = intsR[intsI];
                if (intsU != intsV)
                {
                    return(false);
                }
            }
        }
        else
        {
            if (this.ints != null)
            {
                return(false);
            }
        }

        if (mData.floats != null)
        {
            if (this.floats == null)
            {
                return(false);
            }
            if (this.floats.Length != mData.floats.Length)
            {
                return(false);
            }
            float[] floatsT   = this.floats;
            float[] floatsR   = mData.floats;
            int     floatsLen = floatsT.Length;
            for (int floatsI = 0; floatsI < floatsLen; ++floatsI)
            {
                float floatsU = floatsT[floatsI];
                float floatsV = floatsR[floatsI];
                if (floatsU != floatsV)
                {
                    return(false);
                }
            }
        }
        else
        {
            if (this.floats != null)
            {
                return(false);
            }
        }

        return(true);
    }