Exemple #1
0
    public override void DoRedo()
    {
        int mc = 0;         // MasterChainID


        List <MapLua.SaveLua.Marker> NewMarkersList = AllMarkers.ToList();

        for (int i = 0; i < MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Count; i++)
        {
            if (!NewMarkersList.Contains(MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i]))
            {
                if (MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i].MarkerObj)
                {
                    MapLua.SaveLua.RemoveMarker(MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i].Name);
                    Destroy(MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i].MarkerObj.gameObject);
                }
            }
        }

        MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers = AllMarkers.ToList();

        for (int i = 0; i < AllMarkers.Length; i++)
        {
            MapLua.SaveLua.AddNewMarker(AllMarkers[i]);
        }

        MarkersControler.RegenerateMarkers();


        Undo.Current.EditMenu.ChangeCategory(4);
        NewMarkersInfo.Current.ClearCreateNew();
        MarkersInfo.Current.ChangePage(0);

        NewMarkersInfo.Current.GoToSelection();
    }
Exemple #2
0
        public void ValuesChanged()
        {
            if (IgnoreEvent)
            {
                return;
            }

            MarkersControler.Current.MarkerLayersSettings.Blank    = BlankActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Spawn    = SpawnActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Resource = ResourcesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Camera   = CameraActive.isOn;

            MarkersControler.Current.MarkerLayersSettings.LandNodes       = LandNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.AmphibiousNodes = AmphibiousNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.NavyNodes       = NavalNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.AirNodes        = AirNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.ConnectedNodes  = ConnectionsActive.isOn;

            MarkersControler.Current.MarkerLayersSettings.RallyPoint = RallyPointActive.isOn;

            MarkersControler.Current.MarkerLayersSettings.Combat  = CombatActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Defense = DefenseActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.ProtExp = ProtExpActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Expand  = ExpandActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Other   = OtherActive.isOn;

            UpdateAllToggle();

            MarkersControler.UpdateLayers();

            //MarkersInfo.Current.MarkerList.UpdateSelection();
        }
Exemple #3
0
        public void ImportMarkers()
        {
            var extensions = new[] {
                new ExtensionFilter("Faf Markers", "fafmapmarkers")
            };

            var paths = StandaloneFileBrowser.OpenFilePanel("Import markers", DefaultPath, extensions, false);

            if (paths.Length > 0 && !string.IsNullOrEmpty(paths[0]))
            {
                ExportMarkers ImpMarkers = JsonUtility.FromJson <ExportMarkers>(System.IO.File.ReadAllText(paths[0]));

                bool AnyCreated = false;
                int  mc         = 0;

                MapLua.SaveLua.Marker[] CreatedMarkers = new MapLua.SaveLua.Marker[ImpMarkers.Markers.Length];

                for (int m = 0; m < ImpMarkers.Markers.Length; m++)
                {
                    if (!AnyCreated)
                    {
                        Undo.Current.RegisterMarkersAdd();
                    }
                    AnyCreated = true;


                    if (SelectionManager.Current.SnapToGrid)
                    {
                        ImpMarkers.Markers[m].Pos = ScmapEditor.SnapToGridCenter(ImpMarkers.Markers[m].Pos, true, SelectionManager.Current.SnapToWater);
                    }

                    MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(ImpMarkers.Markers[m].MarkerType);
                    CreatedMarkers[m]     = NewMarker;
                    NewMarker.position    = ScmapEditor.WorldPosToScmap(ImpMarkers.Markers[m].Pos);
                    NewMarker.orientation = ImpMarkers.Markers[m].Rot.eulerAngles;
                    MarkersControler.CreateMarker(NewMarker, mc);
                    ChainsList.AddToCurrentChain(NewMarker);


                    MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker);
                }


                for (int m = 0; m < ImpMarkers.Markers.Length; m++)
                {
                    CreatedMarkers[m].AdjacentToMarker = new List <MapLua.SaveLua.Marker>();
                    for (int c = 0; c < ImpMarkers.Markers[m].Connected.Length; c++)
                    {
                        CreatedMarkers[m].AdjacentToMarker.Add(CreatedMarkers[ImpMarkers.Markers[m].Connected[c]]);
                    }
                }

                RenderMarkersConnections.Current.UpdateConnections();
                EnvPaths.SetLastPath(ExportPathKey, System.IO.Path.GetDirectoryName(paths[0]));
                GenericInfoPopup.ShowInfo("Markers imported");
            }
        }
Exemple #4
0
        // Use this for initialization
        void OnEnable()
        {
            SelectionManager.Current.SetSelectionChangeAction(SelectMarkers);

            int[] Types;
            SelectionManager.Current.SetAffectedGameObjects(MarkersControler.GetMarkerObjects(out Types), SelectionManager.SelectionControlTypes.MarkerChain);
            SelectionManager.Current.SetAffectedTypes(Types);
            //Selection.SelectionManager.Current.SetCustomSettings(true, false, false);
            //ChainSelected = -1;

            UpdateList();
        }
Exemple #5
0
        public void NameChanged()
        {
            if (Loading)
            {
                return;
            }
            Loading = true;
            string NameToChange = NameField.text;

            if (AllowConnect)
            {
                NameToChange.Replace(" ", "");
            }

            for (int i = 0; i < SelectionManager.Current.AffectedGameObjects.Length; i++)
            {
                if (SelectionManager.Current.AffectedGameObjects[i].name == NameToChange)
                {
                    Loading        = true;
                    NameField.text = SelectedGameObjects[0].name;
                    Loading        = false;
                    return;
                }
            }

            SaveLua.Marker Current = SelectedGameObjects[0].GetComponent <MarkerObject>().Owner;

            Undo.RegisterUndo(new UndoHistory.HistoryMarkersChange(), new UndoHistory.HistoryMarkersChange.MarkersChangeHistoryParameter(new SaveLua.Marker[] { Current }));

            //MapLua.SaveLua.RemoveMarkerName(SelectedGameObjects[0].name);
            //MapLua.SaveLua.RegisterMarkerName(NameToChange);
            MapLua.SaveLua.RemoveMarker(SelectedGameObjects[0].name);


            Current.Name = NameToChange;
            SelectedGameObjects[0].name = NameToChange;
            NameField.text = NameToChange;
            MapLua.SaveLua.AddNewMarker(Current);


            MarkerListControler.UpdateList(true);

            MarkersControler.UpdateBlankMarkersGraphics();

            Loading = false;
        }
Exemple #6
0
        public void GoToSelection()
        {
            if (!MarkersInfo.MarkerPageChange)
            {
                SelectionManager.Current.CleanSelection();
            }

            int[] Types;
            SelectionManager.Current.SetAffectedGameObjects(MarkersControler.GetMarkerObjects(out Types), SelectionManager.SelectionControlTypes.Marker);
            SelectionManager.Current.SetAffectedTypes(Types);
            //Selection.SelectionManager.Current.SetCustomSettings(true, false, false);


            PlacementManager.Clear();
            if (ChangeControlerType.Current)
            {
                ChangeControlerType.Current.UpdateButtons();
            }

            MarkerSelectionOptions.UpdateOptions();
        }
Exemple #7
0
        GameObject GetCreationObject()
        {
            if (CreationId == CREATE_PRESET)
            {
                PlacementManager.SnapToWater = false;
                return(MarkerPresets[SpawnPressetDropdown.value]);
            }
            else
            {
                LastCreationType = GetCreationType();
                MarkersControler.MarkerPropGraphic Mpg = MarkersControler.GetPropByType(LastCreationType);

                switch (LastCreationType)
                {
                case MapLua.SaveLua.Marker.MarkerTypes.BlankMarker:
                    PlacementManager.SnapToWater = false;
                    break;

                case MapLua.SaveLua.Marker.MarkerTypes.Mass:
                    PlacementManager.SnapToWater = false;
                    break;

                case MapLua.SaveLua.Marker.MarkerTypes.Hydrocarbon:
                    PlacementManager.SnapToWater = false;
                    break;

                default:
                    PlacementManager.SnapToWater = true;
                    break;
                }

                MarkerNew NewMarkerObject = MarkerPrefab.GetComponent <MarkerNew>();
                NewMarkerObject.Mf.sharedMesh     = Mpg.SharedMesh;
                NewMarkerObject.Mr.sharedMaterial = Mpg.SharedMaterial;

                NewMarkerObject.gameObject.SetActive(true);

                return(MarkerPrefab);
            }
        }
        public void ValuesChanged()
        {
            MarkersControler.Current.MarkerLayersSettings.Blank    = BlankActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Spawn    = SpawnActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Resource = ResourcesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.Camera   = CameraActive.isOn;

            MarkersControler.Current.MarkerLayersSettings.LandNodes       = LandNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.AmphibiousNodes = AmphibiousNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.NavyNodes       = NavalNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.AirNodes        = AirNodesActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.ConnectedNodes  = ConnectionsActive.isOn;

            MarkersControler.Current.MarkerLayersSettings.RallyPoint     = RallyPointActive.isOn;
            MarkersControler.Current.MarkerLayersSettings.NavyRallyPoint = NavyRallyPointActive.isOn;


            MarkersControler.Current.MarkerLayersSettings.Other = OtherActive.isOn;

            MarkersControler.UpdateLayers();

            MarkersInfo.Current.MarkerList.UpdateSelection();
        }
Exemple #9
0
        public void DestroyMarkers(List <GameObject> MarkerObjects, bool RegisterUndo = true)
        {
            int  mc         = 0;    // MasterChainID
            bool AnyRemoved = false;
            int  Mcount     = MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Count;

            if (RegisterUndo)
            {
                LastDestroyedMarkers = new int[MarkerObjects.Count];
                int Step = 0;
                for (int i = 0; i < Mcount; i++)
                {
                    //bool Removed = false;
                    for (int m = 0; m < MarkerObjects.Count; m++)
                    {
                        if (MarkerObjects[m] == null)
                        {
                            break;
                        }

                        if (MarkerObjects[m] == MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i].MarkerObj.gameObject)
                        {
                            LastDestroyedMarkers[Step] = i;
                            Step++;
                            break;
                        }
                    }
                }

                Undo.Current.RegisterMarkersRemove();
            }

            //List<MapLua.SaveLua.Marker> NewMarkers = new List<MapLua.SaveLua.Marker>();

            //Mcount = MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Count;

            for (int i = 0; i < Mcount; i++)
            {
                if (MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i].MarkerObj == null)
                {
                    continue;
                }

                //bool Removed = false;
                for (int m = 0; m < MarkerObjects.Count; m++)
                {
                    if (MarkerObjects[m] == MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i].MarkerObj.gameObject)
                    {
                        MapLua.SaveLua.RemoveMarker(MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i].Name);
                        Destroy(MarkerObjects[m]);
                        MarkerObjects.RemoveAt(m);
                        MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i] = null;
                        MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.RemoveAt(i);
                        Mcount--;
                        i--;
                        AnyRemoved = true;
                        break;
                    }
                }

                //if (!Removed)
                //	NewMarkers.Add(MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[i]);
            }

            //MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers = NewMarkers.ToArray();
            if (AnyRemoved)
            {
                SelectionManager.Current.CleanSelection();
                int[] Types;
                SelectionManager.Current.SetAffectedGameObjects(MarkersControler.GetMarkerObjects(out Types), SelectionManager.SelectionControlTypes.Marker);
                SelectionManager.Current.SetAffectedTypes(Types);
                MarkerSelectionOptions.UpdateOptions();

                RenderMarkersConnections.Current.UpdateConnections();
            }
        }
Exemple #10
0
        public void Place(Vector3[] Positions, Quaternion[] Rotations, Vector3[] Scales)
        {
            //List<MapLua.SaveLua.Marker> NewMarkers = new List<MapLua.SaveLua.Marker>();
            int mc = 0;             // MasterChainID

            LastAddedMarkers = new List <int>();
            int  TotalMarkersCount = MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Count;
            bool AnyCreated        = false;

            if (CreationId == 5)
            {
                Vector3      NewPos;
                MarkerPreset Mpreset = MarkerPresets[SpawnPressetDropdown.value].GetComponent <MarkerPreset>();

                for (int i = 0; i < Positions.Length; i++)
                {
                    for (int m = 0; m < Mpreset.Markers.Length; m++)
                    {
                        if (!AnyCreated)
                        {
                            Undo.Current.RegisterMarkersAdd();
                        }
                        AnyCreated = true;

                        //Debug.Log(Mpreset.Markers[m].Tr.localPosition);
                        NewPos = Positions[i] + Rotations[i] * Mpreset.Markers[m].Tr.localPosition;

                        if (SelectionManager.Current.SnapToGrid)
                        {
                            NewPos = ScmapEditor.SnapToGridCenter(NewPos, true, SelectionManager.Current.SnapToWater);
                        }

                        //NewPos.y = ScmapEditor.Current.Teren.SampleHeight(NewPos);

                        MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(Mpreset.Markers[m].MarkerType);
                        NewMarker.position = ScmapEditor.WorldPosToScmap(NewPos);
                        //NewMarker.orientation =
                        MarkersControler.CreateMarker(NewMarker, mc);
                        ChainsList.AddToCurrentChain(NewMarker);


                        LastAddedMarkers.Add(TotalMarkersCount);
                        TotalMarkersCount++;
                        MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker);
                    }
                }
            }
            else
            {
                for (int i = 0; i < Positions.Length; i++)
                {
                    if (!AnyCreated)
                    {
                        Undo.Current.RegisterMarkersAdd();
                    }
                    AnyCreated = true;

                    MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(LastCreationType);

                    bool snapToWater = SelectionManager.Current.SnapToWater;

                    if (LastCreationType == MapLua.SaveLua.Marker.MarkerTypes.Mass || LastCreationType == MapLua.SaveLua.Marker.MarkerTypes.Hydrocarbon)
                    {
                        snapToWater = false;
                    }

                    if (SelectionManager.Current.SnapToGrid)
                    {
                        Positions[i] = ScmapEditor.SnapToGridCenter(Positions[i], true, snapToWater);
                    }

                    //Positions[i].y = ScmapEditor.Current.Teren.SampleHeight(Positions[i]);

                    ChainsList.AddToCurrentChain(NewMarker);

                    NewMarker.position = ScmapEditor.WorldPosToScmap(Positions[i]);
                    if (CreationId == 3)
                    {
                        NewMarker.orientation = Rotations[i].eulerAngles;
                    }
                    else
                    {
                        NewMarker.orientation = Vector3.zero;
                    }
                    MarkersControler.CreateMarker(NewMarker, mc);
                    LastAddedMarkers.Add(TotalMarkersCount);
                    TotalMarkersCount++;
                    MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker);
                }
            }

            if (AnyCreated)
            {
                //MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers = MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Concat<MapLua.SaveLua.Marker>(NewMarkers.ToArray());
                MarkerSelectionOptions.UpdateOptions();
                MarkersControler.UpdateBlankMarkersGraphics();
                RenderMarkersWarnings.Generate();
            }
        }
        public void Save(string Path)
        {
            if (!IsLoaded)
            {
                return;
            }

            ScenarioLua.ScenarioInfo ScenarioData = MapLuaParser.Current.ScenarioLuaFile.Data;

            SaveLua.Marker[] AllMarkers = MarkersControler.GetMarkers();

            LuaParser.Creator LuaFile = new LuaParser.Creator();

            LuaFile.AddSaveComent("Generated by FAF Map Editor");
            LuaFile.AddComent("Table of which resources belong to which player, it is sorted in such a way that the first line");
            LuaFile.AddComent("corresponds to player one, the second to player 2 and so on...");
            LuaFile.NextLine(1);



            int ArmyId = 0;

            // Count armies
            for (int c = 0; c < ScenarioData.Configurations.Length; c++)
            {
                for (int t = 0; t < ScenarioData.Configurations[c].Teams.Length; t++)
                {
                    for (int a = 0; a < ScenarioData.Configurations[c].Teams[t].Armys.Count; a++)
                    {
                        if (ScenarioData.Configurations[c].Teams[t].Armys[a].Data != null)
                        {
                            ArmyId++;
                        }
                    }
                }
            }

            LuaFile.AddLine("maxPlayerOnMap" + LuaParser.Write.SetValue + ArmyId);
            LuaFile.NextLine(4);

            LuaFile.AddComent("Line number is 10 + armynumber for the mexes in the table");
            int ArmyCount = ArmyId;

            Data.spawnMexArmy   = new MexArray[ArmyCount];
            Data.spawnHydroArmy = new MexArray[ArmyCount];

            ArmyId = 0;
            // Create Mass table
            for (int c = 0; c < ScenarioData.Configurations.Length; c++)
            {
                for (int t = 0; t < ScenarioData.Configurations[c].Teams.Length; t++)
                {
                    for (int a = 0; a < ScenarioData.Configurations[c].Teams[t].Armys.Count; a++)
                    {
                        if (ScenarioData.Configurations[c].Teams[t].Armys[a].Data != null)
                        {
                            List <string> MarkerArrays = new List <string>();

                            for (int m = 0; m < AllMarkers.Length; m++)
                            {
                                if (AllMarkers[m].MarkerType == SaveLua.Marker.MarkerTypes.Mass && AllMarkers[m].SpawnWithArmy.Contains(ArmyId))
                                {
                                    MarkerArrays.Add(ConvertToTableName(AllMarkers[m].Name, MexName));
                                }
                            }

                            MarkerArrays.Sort();
                            Data.spawnMexArmy[ArmyId] = new MexArray(MarkerArrays.ToArray());

                            string ValueString = CreateTableValueString(MarkerArrays);

                            if (ArmyCount >= 16 && ArmyId == ArmyCount - 1)
                            {
                                ValueString += LuaParser.Write.EndBracket;
                            }
                            else
                            {
                                ValueString += ",";
                            }

                            if (ArmyId == 0)
                            {
                                LuaFile.OpenTab("spwnMexArmy" + LuaParser.Write.OpenBracketValue + "\t\t" + ValueString, 5);
                            }
                            else
                            {
                                LuaFile.AddLine(ValueString);
                            }
                            ArmyId++;
                        }
                    }
                }
            }
            if (ArmyCount < 16)
            {
                for (int a = ArmyId; a < 16; a++)
                {
                    if (a == 15)
                    {
                        LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracket + LuaParser.Write.EndBracket);
                    }
                    else
                    {
                        LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracketNext);
                    }
                }
            }

            LuaFile.CloseTab(5);

            LuaFile.NextLine(3);

            LuaFile.AddComent("Line number is 30 + armynumber for the hydros in the table");


            ArmyId = 0;
            // Create Hydro table
            for (int c = 0; c < ScenarioData.Configurations.Length; c++)
            {
                for (int t = 0; t < ScenarioData.Configurations[c].Teams.Length; t++)
                {
                    for (int a = 0; a < ScenarioData.Configurations[c].Teams[t].Armys.Count; a++)
                    {
                        if (ScenarioData.Configurations[c].Teams[t].Armys[a].Data != null)
                        {
                            List <string> MarkerArrays = new List <string>();

                            for (int m = 0; m < AllMarkers.Length; m++)
                            {
                                if (AllMarkers[m].MarkerType == SaveLua.Marker.MarkerTypes.Hydrocarbon && AllMarkers[m].SpawnWithArmy.Contains(ArmyId))
                                {
                                    MarkerArrays.Add(ConvertToTableName(AllMarkers[m].Name, HydroName));
                                }
                            }
                            MarkerArrays.Sort();
                            Data.spawnHydroArmy[ArmyId] = new MexArray(MarkerArrays.ToArray());

                            string ValueString = CreateTableValueString(MarkerArrays);

                            if (ArmyCount >= 16 && ArmyId == ArmyCount - 1)
                            {
                                ValueString += LuaParser.Write.EndBracket;
                            }
                            else
                            {
                                ValueString += ",";
                            }

                            if (ArmyId == 0)
                            {
                                LuaFile.OpenTab("spwnHydroArmy" + LuaParser.Write.OpenBracketValue + "\t" + ValueString, 5);
                            }
                            else
                            {
                                LuaFile.AddLine(ValueString);
                            }
                            ArmyId++;
                        }
                    }
                }
            }

            if (ArmyCount < 16)
            {
                for (int a = ArmyId; a < 16; a++)
                {
                    if (a == 15)
                    {
                        LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracket + LuaParser.Write.EndBracket);
                    }
                    else
                    {
                        LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracketNext);
                    }
                }
            }

            LuaFile.CloseTab(5);

            LuaFile.NextLine(2);

            LuaFile.AddComent("RESOURCE SCALING OPTIONS");
            LuaFile.AddComent("exampleMexes = {{1,2},{3,4},{5,6}},        -- exampleMexes = {{1,2}}");
            LuaFile.AddComent("exampleMexes = {{a},{b},{c}},              -- exampleMexes = {{a}}");
            LuaFile.AddComent("option key=1 : removes a+b+c               -- option key=1 : removes a");
            LuaFile.AddComent("option key=2 : spawn a, removes b+c        -- option key=2 : spawns a");
            LuaFile.AddComent("option key=3 : spawn a+b, removes c");
            LuaFile.AddComent("option key=4 : spawn a+b+c");
            LuaFile.NextLine(1);

            int TablesCount = Data.AllTables.Count;

            for (int t = 0; t < TablesCount; t++)
            {
                string TableString = Data.AllTables[t].Key + LuaParser.Write.SetValue;


                if (!Data.AllTables[t].OneDimension)
                {
                    TableString += LuaParser.Write.OpenBracket;
                }

                for (int v = 0; v < Data.AllTables[t].Values.Length; v++)
                {
                    string TableValueKey = Data.AllTables[t].Key;
                    if (!Data.AllTables[t].OneDimension)
                    {
                        TableValueKey += "#" + (v);
                    }

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

                    for (int m = 0; m < AllMarkers.Length; m++)
                    {
                        if (Data.AllTables[t].IsHydro && AllMarkers[m].MarkerType == SaveLua.Marker.MarkerTypes.Hydrocarbon)
                        {                         // Hydro
                            if (AllMarkers[m].AdaptiveKeys.Contains(TableValueKey))
                            {
                                NewMexes.Add(ConvertToTableName(AllMarkers[m].Name, HydroName));
                            }
                        }
                        else
                        {                         // Mass
                            if (AllMarkers[m].AdaptiveKeys.Contains(TableValueKey))
                            {
                                NewMexes.Add(ConvertToTableName(AllMarkers[m].Name, MexName));
                            }
                        }
                    }

                    NewMexes.Sort();

                    Data.AllTables[t].Values[v] = new MexArray(NewMexes.ToArray());
                    if (v > 0)
                    {
                        TableString += LuaParser.Write.NextValue;
                    }

                    TableString += CreateTableValueString(NewMexes);
                }

                if (!Data.AllTables[t].OneDimension)
                {
                    TableString += LuaParser.Write.EndBracket;
                }



                LuaFile.AddLine(TableString);
                LuaFile.NextLine();
            }

            System.IO.File.WriteAllText(Path, LuaFile.GetFileString());
        }
Exemple #12
0
        public void ImportMarkers()
        {
            var extensions = new[] {
                new ExtensionFilter("Faf Markers", "fafmapmarkers")
            };

            var paths = StandaloneFileBrowser.OpenFilePanel("Import markers", EnvPaths.GetMapsPath(), extensions, false);


            /*
             * OpenFileDialog FileDialog = new OpenFileDialog();
             * FileDialog.Title = "Import markers";
             * FileDialog.AddExtension = true;
             * FileDialog.DefaultExt = ".fafmapmarkers";
             * FileDialog.Filter = "Faf Markers (*.fafmapmarkers)|*.fafmapmarkers";
             * FileDialog.CheckFileExists = true;
             */

            if (paths.Length > 0 && !string.IsNullOrEmpty(paths[0]))
            {
                ExportMarkers ImpMarkers = JsonUtility.FromJson <ExportMarkers>(System.IO.File.ReadAllText(paths[0]));

                bool AnyCreated = false;
                int  mc         = 0;

                MapLua.SaveLua.Marker[] CreatedMarkers = new MapLua.SaveLua.Marker[ImpMarkers.Markers.Length];

                for (int m = 0; m < ImpMarkers.Markers.Length; m++)
                {
                    if (!AnyCreated)
                    {
                        Undo.Current.RegisterMarkersAdd();
                    }
                    AnyCreated = true;


                    if (SelectionManager.Current.SnapToGrid)
                    {
                        ImpMarkers.Markers[m].Pos = ScmapEditor.SnapToGridCenter(ImpMarkers.Markers[m].Pos, true, SelectionManager.Current.SnapToWater);
                    }

                    MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(ImpMarkers.Markers[m].MarkerType);
                    CreatedMarkers[m]     = NewMarker;
                    NewMarker.position    = ScmapEditor.WorldPosToScmap(ImpMarkers.Markers[m].Pos);
                    NewMarker.orientation = ImpMarkers.Markers[m].Rot.eulerAngles;
                    MarkersControler.CreateMarker(NewMarker, mc);
                    ChainsList.AddToCurrentChain(NewMarker);


                    MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker);
                }


                for (int m = 0; m < ImpMarkers.Markers.Length; m++)
                {
                    CreatedMarkers[m].AdjacentToMarker = new List <MapLua.SaveLua.Marker>();
                    for (int c = 0; c < ImpMarkers.Markers[m].Connected.Length; c++)
                    {
                        CreatedMarkers[m].AdjacentToMarker.Add(CreatedMarkers[ImpMarkers.Markers[m].Connected[c]]);
                    }
                }

                RenderMarkersConnections.Current.UpdateConnections();
            }
        }