Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 14.64 KB | None | 0 0
  1. public unsafe void Save()
  2. {
  3.     if (this.IsSceneLoaded() && (this.MapPath != null))
  4.     {
  5.         basic_string<char,std::char_traits<char>,std::allocator<char> > local;
  6.         SavingDialogRunner.Start();
  7.         SavingDialogRunner.AppendText("Save started", true, SavingDialog.ETextContext.NEUTRAL);
  8.         string str = Path.GetTempPath() + "shmap_edit/";
  9.         FileManager* managerPtr = VisFile_cl.GetManager(*((VisFile_cl* modopt(IsConst) modopt(IsConst)*) &__imp_?File@Vision@@2VVisFile_cl@@A));
  10.         basic_string<char,std::char_traits<char>,std::allocator<char> >* localPtr = EditorBase.Utils.ConvertStringToStdString(&local, str);
  11.         try
  12.         {
  13.             **(((int*) managerPtr))[0x2c](managerPtr, 0, std.basic_string<char,std::char_traits<char>,std::allocator<char> >.c_str((basic_string<char,std::char_traits<char>,std::allocator<char> > modopt(IsConst)* modopt(IsConst) modopt(IsConst)) localPtr));
  14.         }
  15.         fault
  16.         {
  17.             ___CxxCallUnwindDtor(std.basic_string<char,std::char_traits<char>,std::allocator<char> >.{dtor}, (void*) &local);
  18.         }
  19.         std.basic_string<char,std::char_traits<char>,std::allocator<char> >.{dtor}(&local);
  20.         string path = str + "editor.ed";
  21.         this.BaseScene.SceneName = Path.GetFileNameWithoutExtension(this.MapPath);
  22.         Estate[] estateArray = EstateManager.Instance().GetEstateArray();
  23.         int index = 0;
  24.         if (0 < estateArray.Length)
  25.         {
  26.             do
  27.             {
  28.                 Estate estate = estateArray[index];
  29.                 if (estate.SpawnPoint != null)
  30.                 {
  31.                     estate.SpawnPoint.ValidateSize();
  32.                     estate = estateArray[index];
  33.                     *((int*) (estate.NativeInstance + 0x1b4)) = estate.SpawnPoint.GetCastleSize();
  34.                 }
  35.                 index++;
  36.             }
  37.             while (index < estateArray.Length);
  38.         }
  39.         FileStream serializationStream = null;
  40.         try
  41.         {
  42.             if (Directory.Exists(str))
  43.             {
  44.                 Directory.Delete(str, true);
  45.             }
  46.             Directory.CreateDirectory(str);
  47.             serializationStream = new FileStream(path, FileMode.Create);
  48.             new SoapFormatter { AssemblyFormat = FormatterAssemblyStyle.Simple, TypeFormat = FormatterTypeStyle.TypesWhenNeeded }.Serialize(serializationStream, this.BaseScene);
  49.             this.BaseScene.Export(str);
  50.             ArrayList arrFiles = new ArrayList();
  51.             BuildFileList(str, arrFiles);
  52.             AddFilesToZip(this.MapPath, arrFiles, str, 5);
  53.         }
  54.         catch (IOException exception)
  55.         {
  56.             SavingDialogRunner.AppendText("Save failed due to an exception: " + exception.Message, true, SavingDialog.ETextContext.BAD);
  57.         }
  58.         finally
  59.         {
  60.             if (serializationStream != null)
  61.             {
  62.                 serializationStream.Close();
  63.             }
  64.             **(((int*) managerPtr))[0x20](managerPtr, 0, 0);
  65.             Directory.Delete(str, true);
  66.             SavingDialogRunner.AppendText("Save successful\r\n", true, SavingDialog.ETextContext.GOOD);
  67.             SavingDialogRunner.SetState(SavingDialog.EState.PREPARING_REPORT);
  68.             SavingDialogRunner.AppendText("\r\nAre pathing tiles placed?\t", false, SavingDialog.ETextContext.NEUTRAL);
  69.             if (Reports.AreTherePathingTiles())
  70.             {
  71.                 SavingDialogRunner.AppendText("YES", true, SavingDialog.ETextContext.GOOD);
  72.             }
  73.             else
  74.             {
  75.                 SavingDialogRunner.AppendText("NO", true, SavingDialog.ETextContext.BAD);
  76.             }
  77.             SavingDialogRunner.AppendText("\r\nAre there path markers?\t", false, SavingDialog.ETextContext.NEUTRAL);
  78.             if (Reports.AreTherePathMarkers())
  79.             {
  80.                 SavingDialogRunner.AppendText("YES", true, SavingDialog.ETextContext.GOOD);
  81.             }
  82.             else
  83.             {
  84.                 SavingDialogRunner.AppendText("NO", true, SavingDialog.ETextContext.BAD);
  85.             }
  86.             SortedSet<uint> xEstateSet = new SortedSet<uint>();
  87.             SortedSet<uint> xPlayerSet = new SortedSet<uint>();
  88.             Reports.GetUsedEstatesAndPlayers(xEstateSet, xPlayerSet);
  89.             SavingDialogRunner.AppendText("\r\nNumber of estates used:\t", false, SavingDialog.ETextContext.NEUTRAL);
  90.             SavingDialogRunner.AppendText(xEstateSet.Count.ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  91.             SortedSet<uint>.Enumerator enumerator10 = xEstateSet.GetEnumerator();
  92.             if (enumerator10.MoveNext())
  93.             {
  94.                 do
  95.                 {
  96.                     int current = enumerator10.Current;
  97.                     Estate estateFromID = EstateManager.Instance().GetEstateFromID((uint) current);
  98.                     if (estateFromID != null)
  99.                     {
  100.                         SavingDialogRunner.AppendText(estateFromID.ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  101.                     }
  102.                 }
  103.                 while (enumerator10.MoveNext());
  104.             }
  105.             SavingDialogRunner.AppendText("\r\nNumber of players used:\t", false, SavingDialog.ETextContext.NEUTRAL);
  106.             SavingDialogRunner.AppendText(xPlayerSet.Count.ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  107.             SortedSet<uint>.Enumerator enumerator9 = xPlayerSet.GetEnumerator();
  108.             if (enumerator9.MoveNext())
  109.             {
  110.                 do
  111.                 {
  112.                     int num10 = enumerator9.Current;
  113.                     Player playerByID = PlayerManager.Instance().GetPlayerByID((uint) num10);
  114.                     if (playerByID != null)
  115.                     {
  116.                         SavingDialogRunner.AppendText(playerByID.Name, true, SavingDialog.ETextContext.NEUTRAL);
  117.                     }
  118.                 }
  119.                 while (enumerator9.MoveNext());
  120.             }
  121.             SortedList<uint, uint> xEstateList = new SortedList<uint, uint>();
  122.             SavingDialogRunner.AppendText("\r\nTrees count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  123.             SavingDialogRunner.AppendText(Reports.GetEntityCount(&??_C@_05BMMGIDNN@Trees?$AA@, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  124.             SortedSet<uint>.Enumerator enumerator8 = xEstateSet.GetEnumerator();
  125.             if (enumerator8.MoveNext())
  126.             {
  127.                 do
  128.                 {
  129.                     uint uID = enumerator8.Current;
  130.                     Estate estate9 = EstateManager.Instance().GetEstateFromID(uID);
  131.                     if (estate9 != null)
  132.                     {
  133.                         SavingDialogRunner.AppendText(estate9.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  134.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(uID) ? 0 : xEstateList[uID]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  135.                     }
  136.                 }
  137.                 while (enumerator8.MoveNext());
  138.             }
  139.             SavingDialogRunner.AppendText("\r\nStone tile count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  140.             SavingDialogRunner.AppendText(Reports.GetTileCountForLogicLayer(1, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  141.             SortedSet<uint>.Enumerator enumerator7 = xEstateSet.GetEnumerator();
  142.             if (enumerator7.MoveNext())
  143.             {
  144.                 do
  145.                 {
  146.                     uint num8 = enumerator7.Current;
  147.                     Estate estate8 = EstateManager.Instance().GetEstateFromID(num8);
  148.                     if (estate8 != null)
  149.                     {
  150.                         SavingDialogRunner.AppendText(estate8.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  151.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(num8) ? 0 : xEstateList[num8]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  152.                     }
  153.                 }
  154.                 while (enumerator7.MoveNext());
  155.             }
  156.             SavingDialogRunner.AppendText("\r\nIron tile count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  157.             SavingDialogRunner.AppendText(Reports.GetTileCountForLogicLayer(2, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  158.             SortedSet<uint>.Enumerator enumerator6 = xEstateSet.GetEnumerator();
  159.             if (enumerator6.MoveNext())
  160.             {
  161.                 do
  162.                 {
  163.                     uint num7 = enumerator6.Current;
  164.                     Estate estate7 = EstateManager.Instance().GetEstateFromID(num7);
  165.                     if (estate7 != null)
  166.                     {
  167.                         SavingDialogRunner.AppendText(estate7.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  168.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(num7) ? 0 : xEstateList[num7]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  169.                     }
  170.                 }
  171.                 while (enumerator6.MoveNext());
  172.             }
  173.             SavingDialogRunner.AppendText("\r\nPitch tile count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  174.             SavingDialogRunner.AppendText(Reports.GetTileCountForLogicLayer(8, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  175.             SortedSet<uint>.Enumerator enumerator5 = xEstateSet.GetEnumerator();
  176.             if (enumerator5.MoveNext())
  177.             {
  178.                 do
  179.                 {
  180.                     uint num6 = enumerator5.Current;
  181.                     Estate estate6 = EstateManager.Instance().GetEstateFromID(num6);
  182.                     if (estate6 != null)
  183.                     {
  184.                         SavingDialogRunner.AppendText(estate6.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  185.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(num6) ? 0 : xEstateList[num6]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  186.                     }
  187.                 }
  188.                 while (enumerator5.MoveNext());
  189.             }
  190.             SavingDialogRunner.AppendText("\r\nRiver tile count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  191.             SavingDialogRunner.AppendText(Reports.GetTileCountForLogicLayer(0x10, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  192.             SortedSet<uint>.Enumerator enumerator4 = xEstateSet.GetEnumerator();
  193.             if (enumerator4.MoveNext())
  194.             {
  195.                 do
  196.                 {
  197.                     uint num5 = enumerator4.Current;
  198.                     Estate estate5 = EstateManager.Instance().GetEstateFromID(num5);
  199.                     if (estate5 != null)
  200.                     {
  201.                         SavingDialogRunner.AppendText(estate5.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  202.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(num5) ? 0 : xEstateList[num5]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  203.                     }
  204.                 }
  205.                 while (enumerator4.MoveNext());
  206.             }
  207.             SavingDialogRunner.AppendText("\r\nOasis tile count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  208.             SavingDialogRunner.AppendText(Reports.GetTileCountForLogicLayer(0x2000, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  209.             SortedSet<uint>.Enumerator enumerator3 = xEstateSet.GetEnumerator();
  210.             if (enumerator3.MoveNext())
  211.             {
  212.                 do
  213.                 {
  214.                     uint num4 = enumerator3.Current;
  215.                     Estate estate4 = EstateManager.Instance().GetEstateFromID(num4);
  216.                     if (estate4 != null)
  217.                     {
  218.                         SavingDialogRunner.AppendText(estate4.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  219.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(num4) ? 0 : xEstateList[num4]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  220.                     }
  221.                 }
  222.                 while (enumerator3.MoveNext());
  223.             }
  224.             SavingDialogRunner.AppendText("\r\nTroop count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  225.             SavingDialogRunner.AppendText(Reports.GetEntityCount(&??_C@_07DKDFFMCF@Soldier?$AA@, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  226.             SortedSet<uint>.Enumerator enumerator2 = xEstateSet.GetEnumerator();
  227.             if (enumerator2.MoveNext())
  228.             {
  229.                 do
  230.                 {
  231.                     uint num3 = enumerator2.Current;
  232.                     Estate estate3 = EstateManager.Instance().GetEstateFromID(num3);
  233.                     if (estate3 != null)
  234.                     {
  235.                         SavingDialogRunner.AppendText(estate3.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  236.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(num3) ? 0 : xEstateList[num3]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  237.                     }
  238.                 }
  239.                 while (enumerator2.MoveNext());
  240.             }
  241.             SavingDialogRunner.AppendText("\r\nBuilding count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  242.             SavingDialogRunner.AppendText(Reports.GetEntityCount(&??_C@_08COFDOLHN@Building?$AA@, xEstateList).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  243.             SortedSet<uint>.Enumerator enumerator = xEstateSet.GetEnumerator();
  244.             if (enumerator.MoveNext())
  245.             {
  246.                 do
  247.                 {
  248.                     uint num2 = enumerator.Current;
  249.                     Estate estate2 = EstateManager.Instance().GetEstateFromID(num2);
  250.                     if (estate2 != null)
  251.                     {
  252.                         SavingDialogRunner.AppendText(estate2.ToString() + ":\t", false, SavingDialog.ETextContext.NEUTRAL);
  253.                         SavingDialogRunner.AppendText((!xEstateList.ContainsKey(num2) ? 0 : xEstateList[num2]).ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  254.                     }
  255.                 }
  256.                 while (enumerator.MoveNext());
  257.             }
  258.             SavingDialogRunner.AppendText("\r\nDecoration count:\t", false, SavingDialog.ETextContext.NEUTRAL);
  259.             SavingDialogRunner.AppendText(Reports.GetTotalDecorationCount().ToString(), true, SavingDialog.ETextContext.NEUTRAL);
  260.         }
  261.         this.SceneDirty = false;
  262.         SavingDialogRunner.SetState(SavingDialog.EState.FINISHED);
  263.     }
  264.     else
  265.     {
  266.         MessageBox.Show(LocalisationManager.Instance().GetString("DIALOG_MAIN_NO_SCENE_LOADED"));
  267.     }
  268. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement