public void Open() { gameObject.SetActive(true); foreach (Transform t in missionPlace) { Destroy(t.gameObject); } for (int i = 0; i < 4; ++i)//c { if (PlayerData.instance.missions.Count > i) { MissionEntry entry = Instantiate(missionEntryPrefab); entry.transform.SetParent(missionPlace, false); entry.FillWithMission(PlayerData.instance.missions[i], this); } else { AdsForMission obj = Instantiate(addMissionButtonPrefab); obj.missionUI = this; obj.transform.SetParent(missionPlace, false); } } }
private void ShowMissionInfo() { int currentIndex = buttons.GetPosition(); if (currentIndex == -1) { return; } currentDayText.text = "Day: " + currentDay.value; MissionEntry mission = availableMaps[currentIndex]; missionName.text = mission.entryName; missionDesc.text = mission.mapDescription; //Reward missionRewardMoney.text = "Money: " + mission.reward.money; missionRewardMoney.gameObject.SetActive(mission.reward.money > 0); missionRewardScrap.text = "Scrap: " + mission.reward.scrap; missionRewardScrap.gameObject.SetActive(mission.reward.scrap > 0); missionRewardItem.text = (mission.reward.items.Count > 0) ? "Item: " + mission.reward.items[0].entryName : ""; missionRewardItem.gameObject.SetActive(mission.reward.items.Count > 0); missionRewardItem2.text = (mission.reward.items.Count > 1) ? "Item2: " + mission.reward.items[1].entryName : ""; missionRewardItem2.gameObject.SetActive(mission.reward.items.Count > 1); //Planet info PlanetInfo info = planets[(int)mission.mapLocation]; planetImage.color = info.planetColor; planetImage.transform.localScale = new Vector3(info.size, info.size, info.size); planetName.text = mission.mapLocation.ToString(); }
public void ResetLists() { if (characters[0] == null) { characters[0] = new EntryList <SquadMemberEntry>(8); characters[1] = new EntryList <SquadMemberEntry>(8); characters[2] = new EntryList <SquadMemberEntry>(8); } characters[0].ResetList(); characters[1].ResetList(); characters[2].ResetList(); MissionEntry mission = (MissionEntry)currentMission.value; selectionX = selectionY = 0; selectMode = false; squadLimits[1] = mission.Squad1Size(); squadLimits[2] = mission.Squad2Size(); squadCount = (squadLimits[2] > 0) ? 2 : 1; squadLists[0].ResetData(); for (int i = 0; i < playerData.stats.Count; i++) { PrepCharacter pc = new PrepCharacter(i, mission.IsCharacterForced(playerData.stats[i].charData), mission.IsCharacterLocked(playerData.stats[i].charData)); squadLists[0].values.Add(pc); } for (int i = 1; i < squadLists.Length; i++) { squadLists[i].ResetData(); } }
private void Start() { MenuChangeDelay(MenuMode.SAVE); stopMusicEvent.Invoke(); if (currentMission.value == null) { currentChapterId.value = ""; return; } MissionEntry mission = (MissionEntry)currentMission.value; if (mapIndex.value >= mission.maps.Count) { for (int i = 0; i < playerData.missions.Count; i++) { if (playerData.missions[i].uuid == mission.uuid) { playerData.missions[i].cleared = true; break; } } currentMission.value = null; currentPlayDays.value += mission.duration; currentChapterId.value = ""; mapIndex.value = 0; nextState.value = (int)NextState.BASE; } else { currentChapterId.value = mission.maps[mapIndex.value].uuid; } }
public override void CopyValues(ScrObjLibraryEntry other) { base.CopyValues(other); MissionEntry mission = (MissionEntry)other; mapLocation = mission.mapLocation; mapDescription = mission.mapDescription; maps = new List <MapEntry>(); for (int i = 0; i < mission.maps.Count; i++) { maps.Add(mission.maps[i]); } squads = new List <SquadGroup>(); for (int i = 0; i < mission.squads.Count; i++) { squads.Add(mission.squads[i]); } duration = mission.duration; unlockReq = mission.unlockReq; unlockDay = mission.unlockDay; squadSize = mission.squadSize; characterReq = mission.characterReq; clearedMission = mission.clearedMission; reward = mission.reward; }
public void NextLevel() { MissionEntry mission = (MissionEntry)currentMission.value; NextState next = ((NextState)nextState.value); if (next == NextState.MAIN) { InputDelegateController.instance.TriggerSceneChange(MenuMode.MAIN_MENU, "MainMenu"); return; } else if (next == NextState.BASE) { InputDelegateController.instance.TriggerSceneChange(MenuMode.NONE, "BaseScene"); return; } else if (next == NextState.LOADSCREEN) { if (currentChapterId.value == SaveFileController.CLEAR_GAME_ID) { InputDelegateController.instance.TriggerSceneChange(MenuMode.MAIN_MENU, "MainMenu"); } else { InputDelegateController.instance.TriggerSceneChange(MenuMode.NONE, "LoadingScreen"); } } }
//public AdsForMission addMissionButtonPrefab; public void Open() { gameObject.SetActive(true); if (!PlayerData.instance.koreanCheck) { title.text = "MISSION"; achievementTitle.text = "REWARD"; } else { title.text = "미 션"; achievementTitle.text = "별 획득 !"; } foreach (Transform t in repetitionMissionPlace) { Destroy(t.gameObject); } for (int i = 0; i < 2; ++i) { if (PlayerData.instance.missions.Count > i) { MissionEntry entry = Instantiate(missionEntryPrefab); entry.transform.SetParent(repetitionMissionPlace, false); entry.FillWithMission(PlayerData.instance.missions[i], this); } /* * else * { * AdsForMission obj = Instantiate(addMissionButtonPrefab); * obj.missionUI = this; * obj.transform.SetParent(repetitionMissionPlace, false); * } */ } foreach (Transform t in achievementMissionPlace) { Destroy(t.gameObject); } for (int i = 0; i < PlayerData.instance.achievementMissions.Count; ++i) { AchievementMissionEntry entry = Instantiate(achievementMissionEntryPrefab); entry.transform.SetParent(achievementMissionPlace, false); entry.FillWithMission(PlayerData.instance.achievementMissions[i], this); } }
public static void MissionWriter(string filename, MissionEntry entrytowrite) { try { using (BinaryWriter bw = new BinaryWriter(File.Open(filename, FileMode.Create))) { bw.Write(entrytowrite.UncompressedData); bw.Close(); } } catch (Exception ex) { ExceptionCatchAll(ex); return; } }
public override void ResetValues() { base.ResetValues(); mapLocation = MapLocation.UNKNOWN; mapDescription = ""; squads = new List <SquadGroup>(); maps = new List <MapEntry>(); duration = 1; unlockReq = Unlocking.TIME; unlockDay = 1; unlockDay = 99; characterReq = null; clearedMission = null; reward = new Reward(); }
public IEnumerator Open() { gameObject.SetActive(true); foreach (Transform t in missionPlace) { Addressables.ReleaseInstance(t.gameObject); } for (int i = 0; i < 3; ++i) { if (PlayerData.instance.missions.Count > i) { AsyncOperationHandle op = missionEntryPrefab.InstantiateAsync(); yield return(op); if (op.Result == null || !(op.Result is GameObject)) { Debug.LogWarning(string.Format("Unable to load mission entry {0}.", missionEntryPrefab.Asset.name)); yield break; } MissionEntry entry = (op.Result as GameObject).GetComponent <MissionEntry>(); entry.transform.SetParent(missionPlace, false); entry.FillWithMission(PlayerData.instance.missions[i], this); } else { AsyncOperationHandle op = addMissionButtonPrefab.InstantiateAsync(); yield return(op); if (op.Result == null || !(op.Result is GameObject)) { Debug.LogWarning(string.Format("Unable to load button {0}.", addMissionButtonPrefab.Asset.name)); yield break; } AdsForMission obj = (op.Result as GameObject)?.GetComponent <AdsForMission>(); obj.missionUI = this; obj.transform.SetParent(missionPlace, false); } } }
private void SetInformation() { MissionEntry mission = (MissionEntry)currentMission.value; turnText.text = totalTurns.value.ToString(); killText.text = totalKills.value.ToString(); deathText.text = totalDeaths.value.ToString(); if (mapIndex.value >= mission.maps.Count) { moneyText.text = mission.reward.money.ToString(); scrapText.text = (gatherScrap.value + mission.reward.scrap).ToString(); itemText.text = (mission.reward.items.Count > 0) ? mission.reward.items[0].entryName : ""; } else { moneyText.text = "0"; scrapText.text = gatherScrap.value.ToString(); itemText.text = ""; } }
public void Open() { gameObject.SetActive(true); foreach (Transform t in missionPlace) Destroy(t.gameObject); for(int i = 0; i < 3; ++i) { if (PlayerData.instance.missions.Count > i) { MissionEntry entry = Instantiate(missionEntryPrefab); entry.transform.SetParent(missionPlace, false); entry.FillWithMission(PlayerData.instance.missions[i], this); } else { } } }
private void SavePlayerInfo() { mapIndex.value++; nextLoadState.value = (int)SaveScreenController.NextState.LOADSCREEN; // Save all rewards MissionEntry mission = (MissionEntry)currentMission.value; if (mapIndex.value >= mission.maps.Count) { if (mission.reward.money > 0) { totalMoney.value += mission.reward.money; } if (mission.reward.scrap > 0) { totalScrap.value += gatherScrap.value + mission.reward.scrap; } for (int i = 0; i < mission.reward.items.Count; i++) { playerData.items.Add(new InventoryItem(mission.reward.items[i])); } } }
public MissionEditorWindow(ScrObjLibraryVariable entries, MissionEntry container) { entryLibrary = entries; entryValues = container; LoadLibrary(); }
protected override void DrawContentWindow() { MissionEntry missionValues = (MissionEntry)entryValues; GUILayout.Label("Mission Info", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); missionValues.mapLocation = (MapLocation)EditorGUILayout.EnumPopup("Location", missionValues.mapLocation); missionValues.duration = EditorGUILayout.IntField("Map Duration", missionValues.duration); GUILayout.EndHorizontal(); GUILayout.Label("Mission description"); EditorStyles.textField.wordWrap = true; missionValues.mapDescription = EditorGUILayout.TextArea(missionValues.mapDescription, GUILayout.Width(500), GUILayout.Height(30)); EditorStyles.textField.wordWrap = false; GUILayout.Space(10); GUILayout.Label("Mission Unlocking", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); missionValues.unlockReq = (MissionEntry.Unlocking)EditorGUILayout.EnumPopup("Unlock requirement", missionValues.unlockReq); switch (missionValues.unlockReq) { case MissionEntry.Unlocking.TIME: missionValues.unlockDay = EditorGUILayout.IntField("Unlocked on day", missionValues.unlockDay); break; case MissionEntry.Unlocking.SQUADSIZE: missionValues.squadSize = EditorGUILayout.IntField("Max squad size", missionValues.squadSize); break; case MissionEntry.Unlocking.DEATH: missionValues.characterReq = (CharEntry)EditorGUILayout.ObjectField("Dead Character", missionValues.characterReq, typeof(CharEntry), false); break; case MissionEntry.Unlocking.RECRUITED: missionValues.characterReq = (CharEntry)EditorGUILayout.ObjectField("Recruited Character", missionValues.characterReq, typeof(CharEntry), false); break; case MissionEntry.Unlocking.MISSION: missionValues.clearedMission = (MissionEntry)EditorGUILayout.ObjectField("Cleared Mission", missionValues.clearedMission, typeof(MissionEntry), false); break; } GUILayout.EndHorizontal(); GUILayout.Space(10); GUILayout.Label("Rewards", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); missionValues.reward.money = EditorGUILayout.IntField("Money", missionValues.reward.money); missionValues.reward.scrap = EditorGUILayout.IntField("Scrap", missionValues.reward.scrap); GUILayout.EndHorizontal(); GUILayout.Space(5); for (int i = 0; i < missionValues.reward.items.Count; i++) { GUILayout.BeginHorizontal(); missionValues.reward.items[i] = (ItemEntry)EditorGUILayout.ObjectField("Item", missionValues.reward.items[i], typeof(ItemEntry), false); if (GUILayout.Button("X", GUILayout.Width(50))) { GUI.FocusControl(null); missionValues.reward.items.RemoveAt(i); i--; continue; } GUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { missionValues.reward.items.Add(null); } GUILayout.Space(20); GUILayout.Label("Maps", EditorStyles.boldLabel); for (int i = 0; i < missionValues.maps.Count; i++) { LibraryEditorWindow.HorizontalLine(Color.black); GUILayout.BeginHorizontal(); missionValues.maps[i] = (MapEntry)EditorGUILayout.ObjectField("Map", missionValues.maps[i], typeof(MapEntry), false); if (GUILayout.Button("X", GUILayout.Width(50))) { GUI.FocusControl(null); missionValues.RemoveMap(i); i--; continue; } GUILayout.EndHorizontal(); if (missionValues.maps[i] == null) { continue; } MapEntry map = missionValues.maps[i]; missionValues.squads[i].squad1Size = map.spawnPoints1.Count; missionValues.squads[i].squad2Size = map.spawnPoints2.Count; GUILayout.BeginHorizontal(); if (missionValues.squads[i].squad1Size > 0) { GUILayout.Label("Squad 1 size: " + missionValues.squads[i].squad1Size); } if (missionValues.squads[i].squad2Size > 0) { GUILayout.Label("Squad 2 size: " + missionValues.squads[i].squad2Size); } if (missionValues.squads[i].squad1Size == 0 && missionValues.squads[i].squad2Size == 0) { GUILayout.Label("No spawn points added!", EditorStyles.boldLabel); } GUILayout.EndHorizontal(); } LibraryEditorWindow.HorizontalLine(Color.black); if (GUILayout.Button("+")) { missionValues.AddMap(); } }
public static ArcFile LoadArc(TreeView tree, string filename, List<string> foldernames, bool IsBigEndian, bool Verifier = false,Type filetype = null, int arcsize = -1) { ArcFile arcfile = new ArcFile(); byte[] Bytes = File.ReadAllBytes(filename); using (BinaryReader br = new BinaryReader(File.Open(filename, FileMode.Open))) { arcsize = Bytes.Length; int Totalsize = arcsize; arcfile.FileLength = arcsize; arcfile.Tempname = filename; br.BaseStream.Position = 0; byte[] HeaderMagic = br.ReadBytes(4); //Checks file signature/Endianess. if (HeaderMagic[0] == 0x00 && HeaderMagic[1] == 0x43 && HeaderMagic[2] == 0x52 && HeaderMagic[3] == 0x41) { /* MessageBox.Show("This .arc file is not in the kind of endian I can deal with right now, so these will be in read only.\nDon't expect save to work... or for the program to be stable", "Just so you know...."); IsBigEndian = true; arcfile.HeaderMagic = HeaderMagic; arcfile.MaterialCount = 0; arcfile.arctable = new List<ArcEntry>(); arcfile.arcfiles = new List<object>(); arcfile.FileList = new List<string>(); arcfile.TypeHashes = new List<string>(); br.BaseStream.Position = 4; var data = br.ReadBytes(2); Array.Reverse(data); arcfile.UnknownFlag = br.ReadByte(); return arcfile; */ MessageBox.Show("This .arc file is not in the kind of endian I can deal with right now. Closing.", "Just so you know...."); br.Close(); return null; } if (HeaderMagic[0] != 0x41 && HeaderMagic[1] != 0x52 && HeaderMagic[2] != 0x43 && HeaderMagic[3] != 0x00) { MessageBox.Show("This .arc file is either not the correct kind or is not properly extracted, so I'm closing it.", "Oh dear"); br.Close(); return null; } #region PC Arc IsBigEndian = false; arcfile.HeaderMagic = HeaderMagic; arcfile.MaterialCount = 0; arcfile.arctable = new List<ArcEntry>(); arcfile.arcfiles = new List<object>(); arcfile.FileList = new List<string>(); arcfile.TypeHashes = new List<string>(); br.BaseStream.Position = 4; arcfile.UnknownFlag = br.ReadByte(); br.BaseStream.Position = 6; arcfile.FileCount = BitConverter.ToInt16((br.ReadBytes(2)), 0); arcfile.Version = arcfile.UnknownFlag; List<String> filenames = new List<String>(); List<string> subdref = new List<string>(); foldernames = subdref; //byte[] BytesTemp; //BytesTemp = new byte[] { }; List<byte> BytesTemp = new List<byte>(); byte[] HTTemp = new byte[] { }; int j = 8; int l = 64; int m = 80; int n = 4; //Iterates through the header/first part of the arc to get all the filenames and occupy the filename list. for (int i = 0; i < arcfile.FileCount; i++) { BytesTemp.Clear(); BytesTemp.TrimExcess(); j = 8 + (m * i); //Copies the specified range to isolate the bytes containing a filename. br.BaseStream.Position = j; BytesTemp.AddRange(br.ReadBytes(l)); BytesTemp.RemoveAll(ByteUtilitarian.IsZeroByte); filenames.Add(ByteUtilitarian.BytesToStringL(BytesTemp)); //For The Typehashes. n = 72 + (m * i); br.BaseStream.Position = n; HTTemp = br.ReadBytes(4); Array.Reverse(HTTemp); arcfile.TypeHashes.Add(ByteUtilitarian.HashBytesToString(HTTemp)); } //Fills in each file as an ArcEntry or TextureEntry as needed. j = 8; int IDCounter = 0; for (int i = 0; i < arcfile.FileCount; i++) { j = 8 + (80 * i); switch (arcfile.TypeHashes[i]) { //Texture Files. case "241F5DEB": TextureEntry newtexen = TextureEntry.FillTexEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(newtexen); arcfile.FileList.Add(newtexen.EntryName); foldernames.Clear(); IDCounter++; break; //Resource Path Lists. case "357EF6D4": ResourcePathListEntry newplen = ResourcePathListEntry.FillRPLEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(newplen); arcfile.FileList.Add(newplen.EntryName); foldernames.Clear(); IDCounter++; break; //Materials. Incomplete. case "2749C8A8": MaterialEntry Maten = MaterialEntry.FillMatEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(Maten); arcfile.FileList.Add(Maten.EntryName); foldernames.Clear(); IDCounter++; arcfile.MaterialCount++; break; //LMT Files. case "76820D81": LMTEntry LMTen = LMTEntry.FillLMTEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(LMTen); arcfile.FileList.Add(LMTen.EntryName); foldernames.Clear(); IDCounter++; break; //MSD Files. case "5B55F5B1": MSDEntry newmsden = MSDEntry.FillMSDEntry(filename, foldernames, tree, br, Bytes, j, IDCounter); arcfile.arcfiles.Add(newmsden); arcfile.FileList.Add(newmsden.EntryName); foldernames.Clear(); IDCounter++; break; //CST Files. case "326F732E": ChainListEntry CSTen = ChainListEntry.FillCSTEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(CSTen); arcfile.FileList.Add(CSTen.EntryName); foldernames.Clear(); IDCounter++; break; //CHN Files. case "3E363245": ChainEntry CHNen = ChainEntry.FillChainEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(CHNen); arcfile.FileList.Add(CHNen.EntryName); foldernames.Clear(); IDCounter++; break; //CCL Files. case "0026E7FF": ChainCollisionEntry CCLen = ChainCollisionEntry.FillChainCollEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(CCLen); arcfile.FileList.Add(CCLen.EntryName); foldernames.Clear(); IDCounter++; break; //MOD Files. case "58A15856": ModelEntry MODen = ModelEntry.FillModelEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(MODen); arcfile.FileList.Add(MODen.EntryName); foldernames.Clear(); IDCounter++; break; case "361EA2A5": MissionEntry MISen = MissionEntry.FillMissionEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(MISen); arcfile.FileList.Add(MISen.EntryName); foldernames.Clear(); IDCounter++; break; //Gem Files. case "448BBDD4": GemEntry GEMen = GemEntry.FillGEMEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(GEMen); arcfile.FileList.Add(GEMen.EntryName); foldernames.Clear(); IDCounter++; break; //EFL Files. case "6D5AE854": EffectListEntry EFLen = EffectListEntry.FillEFLEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(EFLen); arcfile.FileList.Add(EFLen.EntryName); foldernames.Clear(); IDCounter++; break; //New Formats go like this! /* case "********": *****Entry ****en = *****Entry.Fill*****Entry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(*****en); arcfile.FileList.Add(*****.EntryName); foldernames.Clear(); IDCounter++; break; */ default: //Everything not listed above. ArcEntry newentry = ArcEntry.FillArcEntry(filename, foldernames, tree, br, j, IDCounter); arcfile.arcfiles.Add(newentry); arcfile.FileList.Add(newentry.EntryName); foldernames.Clear(); IDCounter++; break; } } arcfile._FileAmount = Convert.ToUInt16(IDCounter); br.Close(); } return arcfile; #endregion }
public void SetupList() { buttons.ResetButtons(); availableMaps.Clear(); for (int i = 0; i < missionLibrary.Size(); i++) { MissionEntry mission = (MissionEntry)missionLibrary.GetEntryByIndex(i); MissionProgress progress = playerData.GetMissionProgress(mission.uuid); if (progress.cleared) { continue; } switch (mission.unlockReq) { case MissionEntry.Unlocking.TIME: if (mission.unlockDay <= currentDay.value) { availableMaps.Add(mission); } break; case MissionEntry.Unlocking.SQUADSIZE: if (playerData.stats.Count <= mission.squadSize) { availableMaps.Add(mission); } break; case MissionEntry.Unlocking.RECRUITED: if (playerData.HasCharacter(mission.characterReq.uuid)) { availableMaps.Add(mission); } break; case MissionEntry.Unlocking.MISSION: if (playerData.GetMissionProgress(mission.clearedMission.uuid).cleared) { availableMaps.Add(mission); } break; case MissionEntry.Unlocking.DEATH: if (playerData.IsDead(mission.characterReq.uuid)) { availableMaps.Add(mission); } break; } } for (int i = 0; i < availableMaps.Count; i++) { buttons.AddButton(availableMaps[i].entryName); } buttons.ForcePosition(0); locationIndex.value = (int)availableMaps[0].mapLocation; missionChangedEvent.Invoke(); ShowMissionInfo(); }
private void btnReplaceReplace_Click(object sender, EventArgs e) { if (AllFiles == true) { //Checks All filenames for searched term. Gets to the parent node, checks all the children nodes, their tags, filenames, etc. for the term. //Goes to top node to begin iteration. TreeNode tn = Mainfrm.FindRootNode(Mainfrm.TreeSource.SelectedNode); Mainfrm.TreeSource.SelectedNode = tn; List <TreeNode> Nodes = new List <TreeNode>(); Mainfrm.AddChildren(Nodes, Mainfrm.TreeSource.SelectedNode); Mainfrm.TreeSource.BeginUpdate(); int RenameCount = 0; foreach (TreeNode tno in Nodes) { //Gets the node as a ArcEntryWrapper to allow access to all the variables and data. ArcEntryWrapper awrapper = tno as ArcEntryWrapper; if (awrapper != null) { if (awrapper.Tag as MaterialTextureReference == null || awrapper.Tag as LMTM3AEntry == null || awrapper.Tag as ModelBoneEntry == null || awrapper.Tag as MaterialMaterialEntry == null || awrapper.Tag as ModelGroupEntry == null || awrapper.Tag as Mission == null || awrapper.Tag as EffectNode == null) { { if (awrapper.Tag as string != null) { //Replaces the Term in the folder. string FolderName = awrapper.Tag as string; FolderName = FolderName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); RenameCount++; } else { //Goes through the treenode to replace all the names of the node. ArcEntry enty = new ArcEntry(); TextureEntry tenty = new TextureEntry(); ResourcePathListEntry lrpenty = new ResourcePathListEntry(); MSDEntry msdenty = new MSDEntry(); MaterialEntry matent = new MaterialEntry(); LMTEntry lmtenty = new LMTEntry(); ChainListEntry cstenty = new ChainListEntry(); ChainEntry chnenty = new ChainEntry(); ChainCollisionEntry cclentry = new ChainCollisionEntry(); ModelEntry mdlentry = new ModelEntry(); MissionEntry misenty = new MissionEntry(); GemEntry gementy = new GemEntry(); EffectListEntry eflenty = new EffectListEntry(); if (tno.Tag as ArcEntry != null) { enty = tno.Tag as ArcEntry; enty.EntryName = enty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); enty.TrueName = enty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); enty.FileName = enty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = enty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as TextureEntry != null) { tenty = tno.Tag as TextureEntry; tenty.EntryName = tenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tenty.TrueName = tenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tenty.FileName = tenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = tenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as ResourcePathListEntry != null) { lrpenty = tno.Tag as ResourcePathListEntry; lrpenty.EntryName = lrpenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); lrpenty.TrueName = lrpenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); lrpenty.FileName = lrpenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = lrpenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as LMTEntry != null) { lmtenty = tno.Tag as LMTEntry; lmtenty.EntryName = lmtenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); lmtenty.TrueName = lmtenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); lmtenty.FileName = lmtenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = lmtenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as MaterialEntry != null) { matent = tno.Tag as MaterialEntry; matent.EntryName = matent.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); matent.TrueName = matent.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); matent.FileName = matent.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = matent; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as MSDEntry != null) { msdenty = tno.Tag as MSDEntry; msdenty.EntryName = msdenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); msdenty.TrueName = msdenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); msdenty.FileName = msdenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = msdenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as ChainListEntry != null) { cstenty = tno.Tag as ChainListEntry; cstenty.EntryName = cstenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); cstenty.TrueName = cstenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); cstenty.FileName = cstenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = cstenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as ChainEntry != null) { chnenty = tno.Tag as ChainEntry; chnenty.EntryName = chnenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); chnenty.TrueName = chnenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); chnenty.FileName = chnenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = chnenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as ChainCollisionEntry != null) { cclentry = tno.Tag as ChainCollisionEntry; cclentry.EntryName = cclentry.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); cclentry.TrueName = cclentry.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); cclentry.FileName = cclentry.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = cclentry; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as ModelEntry != null) { mdlentry = tno.Tag as ModelEntry; mdlentry.EntryName = mdlentry.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); mdlentry.TrueName = mdlentry.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); mdlentry.FileName = mdlentry.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = mdlentry; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as MissionEntry != null) { misenty = tno.Tag as MissionEntry; misenty.EntryName = misenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); misenty.TrueName = misenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); misenty.FileName = misenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = misenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as GemEntry != null) { gementy = tno.Tag as GemEntry; gementy.EntryName = gementy.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); gementy.TrueName = gementy.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); gementy.FileName = gementy.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = gementy; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } else if (tno.Tag as EffectListEntry != null) { eflenty = tno.Tag as EffectListEntry; eflenty.EntryName = eflenty.EntryName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); eflenty.TrueName = eflenty.TrueName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); eflenty.FileName = eflenty.FileName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Tag = eflenty; tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); } RenameCount++; } } } } if (tno.Tag as string != null && tno.Tag as string == "Folder") { //Replaces the Term in the folder. string FolderName = tno.Text as string; FolderName = FolderName.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Text = tno.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); tno.Name = tno.Name.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); RenameCount++; } } Mainfrm.TreeSource.Update(); Mainfrm.TreeSource.EndUpdate(); MessageBox.Show("Replaced " + txtReplaceFind.Text + " with " + txtReplaceReplace.Text + " in " + RenameCount + " file and folder names."); Mainfrm.OpenFileModified = true; RenameCount = 0; } else { if (Mainfrm.TreeSource.SelectedNode.Tag is ResourcePathListEntry) { //Gets the text, then replaces every instance of the search term with the new term. string text = Mainfrm.txtRPList.Text; text = text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); Mainfrm.txtRPList.Text = text; } else if (Mainfrm.TreeSource.SelectedNode.Tag is MaterialEntry) { TreeNodeCollection TNoCollection = Mainfrm.TreeSource.SelectedNode.Nodes; foreach (TreeNode node in TNoCollection) { if (node.Tag as string != null) { if (node.Text as string == "Textures") { Mainfrm.TreeSource.SelectedNode = node; break; } } } TNoCollection = Mainfrm.TreeSource.SelectedNode.Nodes; Mainfrm.TreeSource.BeginUpdate(); foreach (TreeNode node in TNoCollection) { string Namer = node.Name as string; node.Text = node.Text.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); Namer = Namer.Replace(txtReplaceFind.Text, txtReplaceReplace.Text); node.Name = Namer; } Mainfrm.TreeSource.SelectedNode = Mainfrm.TreeSource.SelectedNode.Parent; //Now to update the Material file with all these, Whether they're changed or not. TreeNode Parentnode = Mainfrm.TreeSource.SelectedNode; MaterialEntry ParentMateial = Parentnode.Tag as MaterialEntry; MaterialTextureReference texref = new MaterialTextureReference(); string TermToInject = ""; //int count = 0; for (int i = 0; i < TNoCollection.Count; i++) { texref = TNoCollection[i].Tag as MaterialTextureReference; TermToInject = TNoCollection[i].Text; //Now for the actual file update. List <byte> NameToInject = new List <byte>(); NameToInject.AddRange(Encoding.ASCII.GetBytes(TermToInject)); int OffsetToUse; OffsetToUse = 64 + (88 * (texref.Index - 1)); byte[] NewName = new byte[64]; Array.Copy(NameToInject.ToArray(), 0, NewName, 0, NameToInject.ToArray().Length); Array.Copy(NewName, 0, ParentMateial.UncompressedData, OffsetToUse, NewName.Length); ParentMateial.CompressedData = Zlibber.Compressor(ParentMateial.UncompressedData); } Mainfrm.TreeSource.SelectedNode.Tag = ParentMateial; Mainfrm.OpenFileModified = true; Mainfrm.TreeSource.Update(); Mainfrm.TreeSource.EndUpdate(); } } }