コード例 #1
0
 public void Deserialize(byte[] bytes, ref int offset)
 {
     this.action    = (actionType)ByteSerializer.DeserializeInt(bytes, ref offset);
     this.content   = ByteSerializer.DeserializeByteArray(bytes, ref offset);
     this.username  = ByteSerializer.DeserializeString(bytes, ref offset);
     this.metadata  = ByteSerializer.DeserializeString(bytes, ref offset);
     this.playSound = ByteSerializer.DeserializeBool(bytes, ref offset);
 }
コード例 #2
0
        public void ImportCampaignCommand()
        {
            if (!instance.CheckForCheating())
            {
                uConsole.Log("Campaign Mod is not enabled!");
                return;
            }
            int Args = uConsole.GetNumParameters();

            if (Args != 1)
            {
                uConsole.Log("Usage: import_campaign <campaign>");
            }
            else
            {
                string Name  = uConsole.GetString();
                string cPath = MainPath + "Campaigns/" + Name;

                if (!File.Exists(MainPath + "Exports/" + Name + ".campaign"))
                {
                    uConsole.Log("That campaign doesn't exist!");
                    return;
                }

                byte[] cBytes = Utils.UnZipPayload(File.ReadAllBytes(MainPath + "Exports/" + Name + ".campaign"));
                int    offset = 0;

                string             cDataJson = ByteSerializer.DeserializeString(cBytes, ref offset);
                CampaignLayoutData cData     = JsonUtility.FromJson <CampaignLayoutData>(cDataJson);
                List <KeyValuePair <string, byte[]> > LevelBytes = new List <KeyValuePair <string, byte[]> >();

                for (int i = 0; i < cData.m_ItemIds.Count; i++)
                {
                    string lName = ByteSerializer.DeserializeString(cBytes, ref offset);
                    byte[] lData = ByteSerializer.DeserializeByteArray(cBytes, ref offset);
                    LevelBytes.Add(new KeyValuePair <string, byte[]>(lName, lData));
                }

                if (Directory.Exists(cPath))
                {
                    PopUpMessage.Display("Campaign already exists!\nOverwite it?", delegate {
                        Directory.Delete(cPath, true);
                        ImportCampaign(cPath, cDataJson, LevelBytes);
                    });
                }
                else
                {
                    ImportCampaign(cPath, cDataJson, LevelBytes);
                }
            }
        }
コード例 #3
0
        public static LevelData Deserialize(byte[] bytes, ref int offset)
        {
            LevelData levelData = new LevelData();

            levelData.LayoutBytes    = ByteSerializer.DeserializeByteArray(bytes, ref offset);
            levelData.PreviewData    = ByteSerializer.DeserializeByteArray(bytes, ref offset);
            levelData.PreviewTexture = new Texture2D(WorkshopPreview.PREVIEW_IMAGE_WIDTH, WorkshopPreview.PREVIEW_IMAGE_HEIGHT, TextureFormat.RGBA32, false);
            levelData.PreviewTexture.LoadImage(levelData.PreviewData);
            levelData.Name = ByteSerializer.DeserializeString(bytes, ref offset);

            int num = 0;

            levelData.LayoutData = DeserializeLayoutBytes(levelData.LayoutBytes, ref num);

            return(levelData);
        }
コード例 #4
0
        public static void patchDeserializerPostfix(SandboxLayoutData __instance, byte[] bytes, ref int offset, bool __state)
        {
            //ptfInstance.ptfLogger.LogMessage($"Layout version pre-load: {__instance.m_Version}");
            if (!__state)
            {
                return;
            }
            string[] strings = ByteSerializer.DeserializeStrings(bytes, ref offset);
            ptfInstance.ptfLogger.LogInfo($"Layout created with mod{(strings.Length > 1 ? "s" : "")}: ");
            foreach (string str in strings)
            {
                string[] partsOfMod = str.Split('\u058D');
                string   name       = partsOfMod.Length >= 1 ? partsOfMod[0] : null;
                string   version    = partsOfMod.Length >= 2 ? partsOfMod[1] : null;
                string   settings   = partsOfMod.Length >= 3 ? partsOfMod[2] : null;

                ptfInstance.ptfLogger.LogInfo($" -- {str.Replace("\u058D", " - v")}");

                var currMod = cheatMods.Where(p => p.Info.Metadata.Name == name).FirstOrDefault();
                if (currMod == null)
                {
                    currMod = noncheatMods.Where(p => p.Info.Metadata.Name == name).FirstOrDefault();
                }

                ptfInstance.checkMods(0, name, version, settings, currMod);
            }
            if (offset == bytes.Length)
            {
                return;
            }
            int extraSaveDataCount = ByteSerializer.DeserializeInt(bytes, ref offset);

            if (extraSaveDataCount == 0)
            {
                return;
            }

            ptfInstance.Logger.LogInfo($"Layout created with custom data from mods: ");

            for (int i = 0; i < extraSaveDataCount; i++)
            {
                string modIdentifier     = ByteSerializer.DeserializeString(bytes, ref offset);
                byte[] customModSaveData = ByteSerializer.DeserializeByteArray(bytes, ref offset);

                string[] partsOfMod = modIdentifier.Split('\u058D');
                string   name       = partsOfMod.Length >= 1 ? partsOfMod[0] : null;
                string   version    = partsOfMod.Length >= 2 ? partsOfMod[1] : null;

                ptfInstance.Logger.LogInfo($" -- {name} - v{version}");

                var currMod = cheatMods.Where(p => p.Info.Metadata.Name == name).FirstOrDefault();
                if (currMod == null)
                {
                    currMod = noncheatMods.Where(p => p.Info.Metadata.Name == name).FirstOrDefault();
                }

                if (currMod == null)
                {
                    return;
                }
                if (currMod.Info.Metadata.Version.ToString() != version)
                {
                    return;
                }

                currMod.loadData(customModSaveData);
            }
        }
コード例 #5
0
 public void Deserialize(byte[] bytes, ref int offset)
 {
     this.type     = ByteSerializer.DeserializeString(bytes, ref offset);
     this.content  = ByteSerializer.DeserializeByteArray(bytes, ref offset);
     this.metadata = ByteSerializer.DeserializeString(bytes, ref offset);
 }