예제 #1
0
    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();
    }
예제 #3
0
    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();
        }
    }
예제 #4
0
    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;
        }
    }
예제 #5
0
    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;
    }
예제 #6
0
    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");
            }
        }
    }
예제 #7
0
    //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);
        }
    }
예제 #8
0
 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;
     }
 }
예제 #9
0
    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();
    }
예제 #10
0
    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);
            }
        }
    }
예제 #11
0
    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  = "";
        }
    }
예제 #12
0
    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
            {

            }
        }
    }
예제 #13
0
    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]));
            }
        }
    }
예제 #14
0
 public MissionEditorWindow(ScrObjLibraryVariable entries, MissionEntry container)
 {
     entryLibrary = entries;
     entryValues  = container;
     LoadLibrary();
 }
예제 #15
0
    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();
        }
    }
예제 #16
0
        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();
    }
예제 #18
0
        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();
                }
            }
        }