Ejemplo n.º 1
0
        public InstructionViewerForm(FLInstructionSet instructionSet)
        {
            InstructionSet = new List <FLInstructionCreator>();

            InstructionKeys = instructionSet.GetInstructionNames().ToList();


            for (int i = 0; i < instructionSet.CreatorCount; i++)
            {
                InstructionSet.Add(instructionSet.GetCreatorAt(i));
            }


            InitializeComponent();
            Text = $"Viewing {InstructionKeys.Count} Instructions";
            Icon = FLEditorPluginHost.FLEditorIcon;

            StyleManager.RegisterControls(this);

            //FLScriptEditor.RegisterDefaultTheme(panelInstructions);
            //FLScriptEditor.RegisterDefaultTheme(gbInstructions);
            //FLScriptEditor.RegisterDefaultTheme(lbInstructions);
            //FLScriptEditor.RegisterDefaultTheme(panelMainInstructionView);
            //FLScriptEditor.RegisterDefaultTheme(panelOverloads);
            //FLScriptEditor.RegisterDefaultTheme(gbOverloads);
            //FLScriptEditor.RegisterDefaultTheme(lbOverloads);
            //FLScriptEditor.RegisterDefaultTheme(panelHeaderInfo);
            //FLScriptEditor.RegisterDefaultTheme(lblInstructionName);
            //FLScriptEditor.RegisterDefaultTheme(panelLegend);
            //FLScriptEditor.RegisterDefaultTheme(gbLegend);
            //FLScriptEditor.RegisterDefaultTheme(lbLegend);
            //FLScriptEditor.RegisterDefaultTheme(panelInstructionInfo);
            //FLScriptEditor.RegisterDefaultTheme(panelInstructionDescription);
            //FLScriptEditor.RegisterDefaultTheme(gbInstructionDescription);
            //FLScriptEditor.RegisterDefaultTheme(rtbInstructionDescription);
            //FLScriptEditor.RegisterDefaultTheme(panelInstructionName);
        }
        public override void SerializePacket(PrimitiveValueWrapper s, SerializableFLProgram obj)
        {
            int funcCount = obj.Functions.Count;
            int defCount  = obj.DefinedBuffers.Count;
            int extCount  = obj.ExternalFunctions.Count;

            s.Write(funcCount);
            s.Write(defCount);
            s.Write(extCount);

            string[] funcMap = obj.Functions.Select(x => x.Name).ToArray();
            string[] exMap   = obj.ExternalFunctions.Select(x => x.Name).ToArray();
            string[] bufMap  = obj.DefinedBuffers.Select(x => x.Name).ToArray();

            List <string> idMap = new List <string>();

            idMap.AddRange(funcMap);
            idMap.AddRange(exMap);
            idMap.AddRange(bufMap);
            idMap.AddRange(instructionSet.GetInstructionNames());

            WriteStringArray(s, idMap.ToArray());

            SetIdMap(idMap.ToArray());


            for (int i = 0; i < obj.DefinedBuffers.Count; i++)
            {
                MemoryStream temp = new MemoryStream();
                if (!bufferSerializer.TryWritePacket(temp, obj.DefinedBuffers[i]))
                {
                    throw new FLDeserializationException(
                              $"Can not Deserialize Serializable Defined buffer: {obj.DefinedBuffers[i].Name} ID: {i}");
                }

                s.Write(temp.GetBuffer(), (int)temp.Position);
            }

            for (int i = 0; i < obj.Functions.Count; i++)
            {
                MemoryStream temp = new MemoryStream();
                if (!bufferSerializer.TryWritePacket(temp, obj.Functions[i]))
                {
                    throw new FLDeserializationException(
                              $"Can not Deserialize Serializable Function: {obj.Functions[i].Name} ID: {i}");
                }

                s.Write(temp.GetBuffer(), (int)temp.Position);
            }

            for (int i = 0; i < obj.ExternalFunctions.Count; i++)
            {
                MemoryStream temp = new MemoryStream();
                if (!bufferSerializer.TryWritePacket(temp, obj.ExternalFunctions[i]))
                {
                    throw new FLDeserializationException(
                              $"Can not Deserialize Serializable External Function: {obj.ExternalFunctions[i].Name} ID: {i}");
                }

                s.Write(temp.GetBuffer(), (int)temp.Position);
            }
        }