private void btnCompile_Click(object sender, EventArgs e) { int num2; clsResult result = new clsResult("Compile multiplayer"); this.SaveToMap(); string text = this.cboLicense.Text; if (!modIO.InvariantParse_int(this.txtMultiPlayers.Text, ref num2)) { num2 = 0; } bool isXPlayerFormat = this.cbxLevFormat.Checked; if ((num2 < 2) | (num2 > 10)) { result.ProblemAdd("The number of players must be from 2 to " + Conversions.ToString(10)); } if (!isXPlayerFormat && (((num2 != 2) & (num2 != 4)) & (num2 != 8))) { result.ProblemAdd("You must enable support for this number of players."); } int num = this.ValidateMap_WaterTris(); if (num > 0) { result.WarningAdd(Conversions.ToString(num) + " water tiles have an incorrect triangle direction. There might be in-game graphical glitches on those tiles."); } result.Add(this.ValidateMap()); result.Add(this.ValidateMap_UnitPositions()); result.Add(this.ValidateMap_Multiplayer(num2, isXPlayerFormat)); string str2 = this.txtName.Text; int num3 = str2.Length - 1; num = 0; while (num <= num3) { char ch = str2[num]; if (!((((ch >= 'a') & (ch <= 'z')) | ((ch >= 'A') & (ch <= 'Z'))) | ((num >= 1) & ((((ch >= '0') & (ch <= '9')) | (ch == '-')) | (ch == '_'))))) { break; } num++; } if (num < str2.Length) { result.ProblemAdd("The map's name must contain only letters, numbers, underscores and hyphens, and must begin with a letter."); } if ((str2.Length < 1) | (str2.Length > 0x10)) { result.ProblemAdd("Map name must be from 1 to 16 characters."); } if (text == "") { result.ProblemAdd("Enter a valid license."); } if (result.HasProblems) { modProgram.ShowWarnings(result); } else { SaveFileDialog dialog = new SaveFileDialog(); if (this.Map.PathInfo != null) { dialog.InitialDirectory = this.Map.PathInfo.Path; } dialog.FileName = Conversions.ToString(num2) + "c-" + str2; dialog.Filter = "WZ Files (*.wz)|*.wz"; if (dialog.ShowDialog(this) == DialogResult.OK) { clsMap.sWrite_WZ_Args args = new clsMap.sWrite_WZ_Args { MapName = str2, Path = dialog.FileName, Overwrite = true }; this.SetScrollLimits(ref args.ScrollMin, ref args.ScrollMax); args.Multiplayer = new clsMap.sWrite_WZ_Args.clsMultiplayer(); args.Multiplayer.AuthorName = this.txtAuthor.Text; args.Multiplayer.PlayerCount = num2; args.Multiplayer.IsBetaPlayerFormat = isXPlayerFormat; args.Multiplayer.License = text; args.CompileType = clsMap.sWrite_WZ_Args.enumCompileType.Multiplayer; result.Add(this.Map.Write_WZ(args)); modProgram.ShowWarnings(result); if (!result.HasWarnings) { this.Close(); } } } }
public clsResult GenerateLayout() { int num; int num2; int level; int num5; bool flag; int num6; int baseLevel; int num9; modMath.sXY_int _int; Position.XY_dbl _dbl; bool flag2; int num12; int num13; int num14; clsNearest nearest; modProgram.sResult result3; modMath.sXY_int _int4; clsPassageNode node; clsPassageNode other; clsPassageNode node3; modMath.sXY_int _int5; int num41; int[] mapLevelCount; clsResult result4 = new clsResult("Layout"); this.TotalPlayerCount = this.TopLeftPlayerCount * this.SymmetryBlockCount; _int4.X = (int) Math.Round((double) (((double) (this.TileSize.X * 0x80)) / ((double) this.SymmetryBlockCountXY.X))); _int4.Y = (int) Math.Round((double) (((double) (this.TileSize.Y * 0x80)) / ((double) this.SymmetryBlockCountXY.Y))); int num19 = (int) Math.Round((double) (128f * this.NodeScale)); int num16 = (int) Math.Round(Math.Ceiling((double) (((((2.0 * this.TileSize.X) * 128.0) * this.TileSize.Y) * 128.0) / ((3.1415926535897931 * num19) * num19)))); this.PassageNodes = new clsPassageNode[(this.SymmetryBlockCount - 1) + 1, (num16 - 1) + 1]; int x = 0; if (this.SymmetryBlockCountXY.X == 1) { _int.X = (int) Math.Round(((double) (((this.TileSize.X * 0x80) - (x * 2.0)) / ((double) ((this.NodeScale * 128f) * 2f))))); _dbl.X = ((this.TileSize.X * 0x80) - (x * 2.0)) / ((double) _int.X); _int.X--; } else { _int.X = (int) Math.Round(((double) ((((((double) (this.TileSize.X * 0x80)) / ((double) this.SymmetryBlockCountXY.X)) - x) / ((double) ((this.NodeScale * 128f) * 2f))) - 0.5))); _dbl.X = ((((double) (this.TileSize.X * 0x80)) / ((double) this.SymmetryBlockCountXY.X)) - x) / (((double) ((((((double) (this.TileSize.X * 0x80)) / ((double) this.SymmetryBlockCountXY.X)) - x) / ((double) ((this.NodeScale * 128f) * 2f))) - 0.5)) + 0.5); } if (this.SymmetryBlockCountXY.Y == 1) { _int.Y = (int) Math.Round(((double) (((this.TileSize.Y * 0x80) - (x * 2.0)) / ((double) ((this.NodeScale * 128f) * 2f))))); _dbl.Y = ((this.TileSize.Y * 0x80) - (x * 2.0)) / ((double) _int.Y); _int.Y--; } else { _int.Y = (int) Math.Round(((double) ((((((double) (this.TileSize.Y * 0x80)) / ((double) this.SymmetryBlockCountXY.Y)) - x) / ((double) ((this.NodeScale * 128f) * 2f))) - 0.5))); _dbl.Y = ((((double) (this.TileSize.Y * 0x80)) / ((double) this.SymmetryBlockCountXY.Y)) - x) / (((double) ((((((double) (this.TileSize.Y * 0x80)) / ((double) this.SymmetryBlockCountXY.Y)) - x) / ((double) ((this.NodeScale * 128f) * 2f))) - 0.5)) + 0.5); } this.PassageNodeCount = 0; int y = _int.Y; for (int i = 0; i <= y; i++) { _int5 = new modMath.sXY_int(x, x + ((int) Math.Round((double) (i * _dbl.Y)))); if (!this.MakePassageNodes(_int5, true)) { result4.ProblemAdd("Error: Bad border node."); return result4; } if (this.SymmetryBlockCountXY.X == 1) { _int5 = new modMath.sXY_int((this.TileSize.X * 0x80) - x, x + ((int) Math.Round((double) (i * _dbl.Y)))); if (!this.MakePassageNodes(_int5, true)) { result4.ProblemAdd("Error: Bad border node."); return result4; } } } int num26 = _int.X; for (int j = 1; j <= num26; j++) { _int5 = new modMath.sXY_int(x + ((int) Math.Round((double) (j * _dbl.X))), x); if (!this.MakePassageNodes(_int5, true)) { result4.ProblemAdd("Error: Bad border node."); return result4; } if (this.SymmetryBlockCountXY.Y == 1) { _int5 = new modMath.sXY_int(x + ((int) Math.Round((double) (j * _dbl.X))), (this.TileSize.Y * 0x80) - x); if (!this.MakePassageNodes(_int5, true)) { result4.ProblemAdd("Error: Bad border node."); return result4; } } } Label_0538: num14 = 0; do { modMath.sXY_int _int2; if (this.SymmetryBlockCountXY.X == 1) { _int2.X = x + ((int) Math.Round((double) ((float) (App.Random.Next() * ((_int4.X - (x * 2)) + 1))))); } else { _int2.X = x + ((int) Math.Round((double) ((float) (App.Random.Next() * ((_int4.X - x) + 1))))); } if (this.SymmetryBlockCountXY.Y == 1) { _int2.Y = x + ((int) Math.Round((double) ((float) (App.Random.Next() * ((_int4.Y - (x * 2)) + 1))))); } else { _int2.Y = x + ((int) Math.Round((double) ((float) (App.Random.Next() * ((_int4.Y - x) + 1))))); } int num27 = this.PassageNodeCount - 1; num = 0; while (num <= num27) { int num28 = this.SymmetryBlockCount - 1; num2 = 0; while (num2 <= num28) { _int5 = this.PassageNodes[num2, num].Pos - _int2; if (_int5.ToDoubles().GetMagnitude() < (num19 * 2)) { break; } num2++; } num++; } if ((num == this.PassageNodeCount) && this.MakePassageNodes(_int2, false)) { goto Label_0538; } num14++; } while (num14 < ((int) Math.Round((double) (((64f * this.TileSize.X) * this.TileSize.Y) / (this.NodeScale * this.NodeScale))))); this.PassageNodes = (clsPassageNode[,]) Utils.CopyArray((Array) this.PassageNodes, new clsPassageNode[(this.SymmetryBlockCount - 1) + 1, (this.PassageNodeCount - 1) + 1]); int num15 = (num19 * 2) * 4; num15 *= num15; this.Nearests = new clsNearest[((this.PassageNodeCount * 0x40) - 1) + 1]; clsTestNearestArgs args2 = new clsTestNearestArgs(); int num17 = (int) Math.Round((double) ((this.NodeScale * 1.25f) * 128f)); args2.MaxConDist2 = num15; args2.MinConDist = num17; int num29 = this.PassageNodeCount - 1; num = 0; while (num <= num29) { args2.PassageNodeA = this.PassageNodes[0, num]; int num30 = this.PassageNodeCount - 1; num2 = num; while (num2 <= num30) { int num31 = this.SymmetryBlockCount - 1; num5 = 0; while (num5 <= num31) { args2.PassageNodeB = this.PassageNodes[num5, num2]; if (args2.PassageNodeA != args2.PassageNodeB) { this.TestNearest(args2); } num5++; } num2++; } num++; } int num32 = this.NearestCount - 1; for (num12 = 0; num12 <= num32; num12++) { nearest = this.Nearests[num12]; int num33 = nearest.NodeCount - 1; num = 0; while (num <= num33) { node = nearest.NodeA[num]; other = nearest.NodeB[num]; int num34 = this.NearestCount - 1; num13 = 0; while (num13 <= num34) { clsNearest nearest2 = this.Nearests[num13]; if (nearest2 != nearest) { if (nearest2.Dist2 < nearest.Dist2) { flag2 = true; } else if (nearest2.Dist2 == nearest.Dist2) { flag2 = nearest.Num > nearest2.Num; } else { flag2 = false; } if (flag2) { int num35 = nearest2.NodeCount - 1; num2 = 0; while (num2 <= num35) { if (!((((node == nearest2.NodeA[num2]) | (node == nearest2.NodeB[num2])) | (other == nearest2.NodeA[num2])) | (other == nearest2.NodeB[num2])) && modMath.GetLinesIntersectBetween(node.Pos, other.Pos, nearest2.NodeA[num2].Pos, nearest2.NodeB[num2].Pos).Exists) { break; } num2++; } if (num2 < nearest2.NodeCount) { clsNearest nearest3 = nearest; nearest3.BlockedCount++; clsNearest nearest4 = nearest2; nearest4.BlockedNearests[nearest4.BlockedNearestCount] = nearest; nearest3 = nearest4; nearest3.BlockedNearestCount++; nearest4 = null; } } } num13++; } num++; } } this.Connections = new clsConnection[((this.PassageNodeCount * 0x10) - 1) + 1]; do { num6 = 0; num12 = 0; while (num12 < this.NearestCount) { nearest = this.Nearests[num12]; flag2 = true; if ((nearest.BlockedCount == 0) & flag2) { int connectionCount = this.ConnectionCount; int num36 = nearest.NodeCount - 1; baseLevel = 0; while (baseLevel <= num36) { this.Connections[this.ConnectionCount] = new clsConnection(nearest.NodeA[baseLevel], nearest.NodeB[baseLevel]); this.ConnectionCount++; baseLevel++; } int num37 = nearest.NodeCount - 1; baseLevel = 0; while (baseLevel <= num37) { num = connectionCount + baseLevel; this.Connections[num].ReflectionCount = nearest.NodeCount - 1; this.Connections[num].Reflections = new clsConnection[(this.Connections[num].ReflectionCount - 1) + 1]; num2 = 0; int num38 = nearest.NodeCount - 1; num9 = 0; while (num9 <= num38) { if (num9 != baseLevel) { this.Connections[num].Reflections[num2] = this.Connections[connectionCount + num9]; num2++; } num9++; } baseLevel++; } int num39 = nearest.BlockedNearestCount - 1; num5 = 0; while (num5 <= num39) { nearest.BlockedNearests[num5].Invalid = true; num5++; } this.NearestCount--; num13 = nearest.Num; nearest.Num = -1; if (num13 != this.NearestCount) { this.Nearests[num13] = this.Nearests[this.NearestCount]; this.Nearests[num13].Num = num13; } num6++; } else { if (!flag2) { nearest.Invalid = true; } num12++; } } num12 = 0; while (num12 < this.NearestCount) { nearest = this.Nearests[num12]; if (nearest.Invalid) { nearest.Num = -1; int num40 = nearest.BlockedNearestCount - 1; baseLevel = 0; while (baseLevel <= num40) { clsNearest[] blockedNearests = nearest.BlockedNearests; num41 = baseLevel; blockedNearests[num41].BlockedCount--; baseLevel++; } this.NearestCount--; if (num12 != this.NearestCount) { this.Nearests[num12] = this.Nearests[this.NearestCount]; this.Nearests[num12].Num = num12; } } else { num12++; } } } while (num6 > 0); int num42 = this.PassageNodeCount - 1; for (num = 0; num <= num42; num++) { int num43 = this.SymmetryBlockCount - 1; for (num2 = 0; num2 <= num43; num2++) { this.PassageNodes[num2, num].ReorderConnections(); this.PassageNodes[num2, num].CalcIsNearBorder(); } } clsPassageNode[] nodeArray2 = new clsPassageNode[(this.PassageNodeCount - 1) + 1]; int index = 0; clsPassageNode[] nodeArray3 = new clsPassageNode[(this.PassageNodeCount - 1) + 1]; int num44 = this.PassageNodeCount - 1; num = 0; while (num <= num44) { nodeArray2[index] = this.PassageNodes[0, num]; index++; num++; } num2 = 0; while (index > 0) { num = (int) Math.Round((double) ((float) (App.Random.Next() * index))); nodeArray3[num2] = nodeArray2[num]; num2++; index--; nodeArray2[num] = nodeArray2[index]; } this.LevelHeight = 255f / ((float) (this.LevelCount - 1)); clsPassageNodeHeightLevelArgs args = new clsPassageNodeHeightLevelArgs { PassageNodesMinLevel = { Nodes = new int[(this.PassageNodeCount - 1) + 1] }, PassageNodesMaxLevel = { Nodes = new int[(this.PassageNodeCount - 1) + 1] }, MapLevelCount = new int[(this.LevelCount - 1) + 1] }; int num45 = this.PassageNodeCount - 1; num = 0; while (num <= num45) { args.PassageNodesMinLevel.Nodes[num] = 0; args.PassageNodesMaxLevel.Nodes[num] = this.LevelCount - 1; num++; } double[] numArray = new double[(this.BaseFlatArea - 1) + 1]; clsPassageNode[] nodeArray = new clsPassageNode[(this.BaseFlatArea - 1) + 1]; int[] numArray2 = new int[(this.BaseFlatArea - 1) + 1]; this.PlayerBases = new sPlayerBase[(this.TotalPlayerCount - 1) + 1]; int num46 = this.TopLeftPlayerCount - 1; num2 = 0; while (num2 <= num46) { int num3 = 0; int num47 = this.PassageNodeCount - 1; num = 0; while (num <= num47) { int num48 = this.SymmetryBlockCount - 1; num9 = 0; while (num9 <= num48) { node = this.PassageNodes[num9, num]; if (!node.IsOnBorder) { _int5 = node.Pos - this.PlayerBasePos[num2]; double magnitude = _int5.ToDoubles().GetMagnitude(); num5 = num3 - 1; while (num5 >= 0) { if (magnitude > numArray[num5]) { break; } num5 += -1; } num5++; int num49 = num5; baseLevel = Math.Min((int) (num3 - 1), (int) (this.BaseFlatArea - 2)); while (baseLevel >= num49) { numArray[baseLevel + 1] = numArray[baseLevel]; nodeArray[baseLevel + 1] = nodeArray[baseLevel]; baseLevel += -1; } if (num5 < this.BaseFlatArea) { numArray[num5] = magnitude; nodeArray[num5] = node; num3 = Math.Max(num3, num5 + 1); } } num9++; } num++; } if (this.BaseLevel < 0) { baseLevel = (int) Math.Round((double) ((float) (App.Random.Next() * this.LevelCount))); } else { baseLevel = this.BaseLevel; } mapLevelCount = args.MapLevelCount; num41 = baseLevel; mapLevelCount[num41] += num3; int num50 = num3 - 1; num = 0; while (num <= num50) { if (nodeArray[num].MirrorNum == 0) { numArray2[num] = -1; } else { int num51 = ((int) Math.Round((double) (((double) this.SymmetryBlockCount) / 2.0))) - 1; num5 = 0; while (num5 <= num51) { if (this.SymmetryBlocks[0].ReflectToNum[num5] == nodeArray[num].MirrorNum) { break; } num5++; } numArray2[num] = num5; } num++; } int num52 = this.SymmetryBlockCount - 1; num = 0; while (num <= num52) { num9 = (num * this.TopLeftPlayerCount) + num2; this.PlayerBases[num9].NodeCount = num3; this.PlayerBases[num9].Nodes = new clsPassageNode[(this.PlayerBases[num9].NodeCount - 1) + 1]; int num53 = num3 - 1; num5 = 0; while (num5 <= num53) { if (numArray2[num5] < 0) { this.PlayerBases[num9].Nodes[num5] = this.PassageNodes[num, nodeArray[num5].Num]; } else { this.PlayerBases[num9].Nodes[num5] = this.PassageNodes[this.SymmetryBlocks[num].ReflectToNum[numArray2[num5]], nodeArray[num5].Num]; } this.PlayerBases[num9].Nodes[num5].PlayerBaseNum = num9; this.PlayerBases[num9].Nodes[num5].Level = baseLevel; this.PassageNodesMinLevelSet(this.PlayerBases[num9].Nodes[num5], args.PassageNodesMinLevel, baseLevel, this.MaxLevelTransition); this.PassageNodesMaxLevelSet(this.PlayerBases[num9].Nodes[num5], args.PassageNodesMaxLevel, baseLevel, this.MaxLevelTransition); num5++; } _int5 = new modMath.sXY_int(_int4.X - 1, _int4.Y - 1); modMath.sXY_int _int3 = TileOrientation.GetRotatedPos(this.SymmetryBlocks[num].Orientation, this.PlayerBasePos[num2], _int5); this.PlayerBases[num9].Pos.X = (this.SymmetryBlocks[num].XYNum.X * _int4.X) + _int3.X; this.PlayerBases[num9].Pos.Y = (this.SymmetryBlocks[num].XYNum.Y * _int4.Y) + _int3.Y; num++; } num2++; } int num54 = this.PassageNodeCount - 1; for (num = 0; num <= num54; num++) { node = nodeArray3[num]; if ((node.Level < 0) & !node.IsOnBorder) { int num20; int num22; int num21 = 0; int num55 = node.ConnectionCount - 1; num2 = 0; while (num2 <= num55) { if (node.Connections[num2].GetOther().IsWater) { num21++; } num2++; } flag = true; int num56 = node.ConnectionCount - 1; num2 = 0; while (num2 <= num56) { if (args.PassageNodesMinLevel.Nodes[node.Connections[num2].GetOther().Num] > 0) { flag = false; } num2++; } if (((flag & (((num21 == 0) & (num22 < this.WaterSpawnQuantity)) | ((num21 == 1) & ((this.TotalWaterQuantity - num20) > (this.WaterSpawnQuantity - num22))))) & (args.PassageNodesMinLevel.Nodes[node.Num] == 0)) & (num20 < this.TotalWaterQuantity)) { if (num21 == 0) { num22++; } num20++; num5 = node.Num; int num57 = this.SymmetryBlockCount - 1; baseLevel = 0; while (baseLevel <= num57) { this.PassageNodes[baseLevel, num5].IsWater = true; this.PassageNodes[baseLevel, num5].Level = 0; baseLevel++; } this.PassageNodesMinLevelSet(node, args.PassageNodesMinLevel, 0, this.MaxLevelTransition); this.PassageNodesMaxLevelSet(node, args.PassageNodesMaxLevel, 0, this.MaxLevelTransition); mapLevelCount = args.MapLevelCount; num41 = 0; mapLevelCount[num41]++; int num58 = node.ConnectionCount - 1; num2 = 0; while (num2 <= num58) { other = node.Connections[num2].GetOther(); this.PassageNodesMinLevelSet(other, args.PassageNodesMinLevel, 0, this.MaxLevelTransition); this.PassageNodesMaxLevelSet(other, args.PassageNodesMaxLevel, 0, this.MaxLevelTransition); num2++; } } } } args.FlatsCutoff = 1; args.PassagesCutoff = 1; args.VariationCutoff = 1; args.ActionTotal = 1; int num59 = this.PassageNodeCount - 1; for (num = 0; num <= num59; num++) { node = nodeArray3[num]; if (((node.Level < 0) & !node.IsOnBorder) & node.IsNearBorder) { args.PassageNode = node; result3 = this.PassageNodeHeightLevel(args); if (!result3.Success) { result4.ProblemAdd(result3.Problem); return result4; } } } args.FlatsCutoff = this.FlatsChance; args.PassagesCutoff = args.FlatsCutoff + this.PassagesChance; args.VariationCutoff = args.PassagesCutoff + this.VariationChance; args.ActionTotal = args.VariationCutoff; if (args.ActionTotal <= 0) { result4.ProblemAdd("All height level behaviors are zero"); return result4; } int num60 = this.PassageNodeCount - 1; for (num = 0; num <= num60; num++) { node = nodeArray3[num]; if ((node.Level < 0) & !node.IsOnBorder) { args.PassageNode = node; result3 = this.PassageNodeHeightLevel(args); if (!result3.Success) { result4.ProblemAdd(result3.Problem); return result4; } } } int num61 = this.PassageNodeCount - 1; for (num = 0; num <= num61; num++) { node = this.PassageNodes[0, num]; if (node.IsOnBorder) { if (node.Level >= 0) { result4.ProblemAdd("Error: Border has had its height set."); return result4; } node3 = null; flag = true; int num62 = node.ConnectionCount - 1; num2 = 0; while (num2 <= num62) { other = node.Connections[num2].GetOther(); if ((((other.Level >= 0) & !other.IsOnBorder) && ((args.PassageNodesMinLevel.Nodes[node.Num] <= other.Level) & (args.PassageNodesMaxLevel.Nodes[node.Num] >= other.Level))) && (node3 == null)) { node3 = other; } if (args.PassageNodesMinLevel.Nodes[other.Num] > 0) { flag = false; } num2++; } if (node3 != null) { level = node3.Level; this.PassageNodesMinLevelSet(node, args.PassageNodesMinLevel, level, this.MaxLevelTransition); this.PassageNodesMaxLevelSet(node, args.PassageNodesMaxLevel, level, this.MaxLevelTransition); int num63 = this.SymmetryBlockCount - 1; baseLevel = 0; while (baseLevel <= num63) { this.PassageNodes[baseLevel, num].IsWater = node3.IsWater & flag; this.PassageNodes[baseLevel, num].Level = level; baseLevel++; } if (node.IsWater) { int num64 = node.ConnectionCount - 1; num2 = 0; while (num2 <= num64) { other = node.Connections[num2].GetOther(); this.PassageNodesMinLevelSet(other, args.PassageNodesMinLevel, node.Level, this.MaxLevelTransition); this.PassageNodesMaxLevelSet(other, args.PassageNodesMaxLevel, node.Level, this.MaxLevelTransition); num2++; } } } } else if (node.Level < 0) { result4.ProblemAdd("Error: Node height not set"); return result4; } } int num65 = this.PassageNodeCount - 1; for (num = 0; num <= num65; num++) { node = this.PassageNodes[0, num]; if (node.IsOnBorder & (node.Level < 0)) { node3 = null; flag = true; int num66 = node.ConnectionCount - 1; num2 = 0; while (num2 <= num66) { other = node.Connections[num2].GetOther(); if (((other.Level >= 0) && ((args.PassageNodesMinLevel.Nodes[node.Num] <= other.Level) & (args.PassageNodesMaxLevel.Nodes[node.Num] >= other.Level))) && (node3 == null)) { node3 = other; } if (args.PassageNodesMinLevel.Nodes[other.Num] > 0) { flag = false; } num2++; } if (node3 == null) { result4.ProblemAdd("Error: No connection for border node"); return result4; } level = node3.Level; this.PassageNodesMinLevelSet(node, args.PassageNodesMinLevel, level, this.MaxLevelTransition); this.PassageNodesMaxLevelSet(node, args.PassageNodesMaxLevel, level, this.MaxLevelTransition); int num67 = this.SymmetryBlockCount - 1; for (baseLevel = 0; baseLevel <= num67; baseLevel++) { this.PassageNodes[baseLevel, num].IsWater = node3.IsWater & flag; this.PassageNodes[baseLevel, num].Level = level; } if (node.IsWater) { int num68 = node.ConnectionCount - 1; for (num2 = 0; num2 <= num68; num2++) { other = node.Connections[num2].GetOther(); this.PassageNodesMinLevelSet(other, args.PassageNodesMinLevel, node.Level, this.MaxLevelTransition); this.PassageNodesMaxLevelSet(other, args.PassageNodesMaxLevel, node.Level, this.MaxLevelTransition); } } } } this.RampBase = 1.0; this.MaxDisconnectionDist = 99999f; clsResult resultToAdd = this.GenerateRamps(); result4.Add(resultToAdd); return result4; }
private void btnCompileCampaign_Click(object sender, EventArgs e) { clsResult result = new clsResult("Compile campaign"); this.SaveToMap(); int num = this.ValidateMap_WaterTris(); if (num > 0) { result.WarningAdd(Conversions.ToString(num) + " water tiles have an incorrect triangle direction. There might be in-game graphical glitches on those tiles."); } result.Add(this.ValidateMap()); result.Add(this.ValidateMap_UnitPositions()); string text = this.txtName.Text; if (text.Length < 1) { result.ProblemAdd("Enter a name for the campaign files."); } int selectedIndex = this.cboCampType.SelectedIndex; if ((selectedIndex < 0) | (selectedIndex > 2)) { result.ProblemAdd("Select a campaign type."); } if (result.HasProblems) { modProgram.ShowWarnings(result); } else { FolderBrowserDialog dialog = new FolderBrowserDialog(); if (dialog.ShowDialog(this) == DialogResult.OK) { clsMap.sWrite_WZ_Args args = new clsMap.sWrite_WZ_Args { MapName = text, Path = dialog.SelectedPath, Overwrite = false }; this.SetScrollLimits(ref args.ScrollMin, ref args.ScrollMax); args.Campaign = new clsMap.sWrite_WZ_Args.clsCampaign(); args.Campaign.GAMType = (uint) selectedIndex; args.CompileType = clsMap.sWrite_WZ_Args.enumCompileType.Campaign; result.Add(this.Map.Write_WZ(args)); modProgram.ShowWarnings(result); if (!result.HasWarnings) { this.Close(); } } } }
public clsResult LoadDirectory(string Path) { IEnumerator enumerator; clsResult result3 = new clsResult("Loading object data from \"" + Path + "\""); Path = modProgram.EndWithPathSeperator(Path); string str10 = "messages" + Conversions.ToString(modProgram.PlatformPathSeparator) + "strings" + Conversions.ToString(modProgram.PlatformPathSeparator) + "names.txt"; string str17 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "structures.txt"; string str5 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "brain.txt"; string str3 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "body.txt"; string str13 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "propulsion.txt"; string str4 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "bodypropulsionimd.txt"; string str6 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "construction.txt"; string str15 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "sensor.txt"; string str14 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "repair.txt"; string str19 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "templates.txt"; string str21 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "weapons.txt"; string str7 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "ecm.txt"; string str9 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "features.txt"; string str11 = "pies" + Conversions.ToString(modProgram.PlatformPathSeparator); string str16 = str11; string str2 = str11; string str12 = str11; string str22 = str11; string str20 = "texpages" + Conversions.ToString(modProgram.PlatformPathSeparator); string str = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "assignweapons.txt"; string str8 = str11; string str18 = "stats" + Conversions.ToString(modProgram.PlatformPathSeparator) + "structureweapons.txt"; modLists.SimpleList<clsTextFile> list = new modLists.SimpleList<clsTextFile>(); clsTextFile file8 = new clsTextFile { SubDirectory = str10, UniqueField = 0 }; result3.Add(file8.LoadNamesFile(Path)); if (!file8.CalcUniqueField()) { result3.ProblemAdd("There are two entries for the same code in " + str10 + "."); } clsTextFile newItem = new clsTextFile { SubDirectory = str17, FieldCount = 0x19 }; list.Add(newItem); clsTextFile file4 = new clsTextFile { SubDirectory = str5, FieldCount = 9 }; list.Add(file4); clsTextFile file2 = new clsTextFile { SubDirectory = str3, FieldCount = 0x19 }; list.Add(file2); clsTextFile file9 = new clsTextFile { SubDirectory = str13, FieldCount = 12 }; list.Add(file9); clsTextFile file3 = new clsTextFile { SubDirectory = str4, FieldCount = 5, UniqueField = -1 }; list.Add(file3); clsTextFile file5 = new clsTextFile { SubDirectory = str6, FieldCount = 12 }; list.Add(file5); clsTextFile file11 = new clsTextFile { SubDirectory = str15, FieldCount = 0x10 }; list.Add(file11); clsTextFile file10 = new clsTextFile { SubDirectory = str14, FieldCount = 14 }; list.Add(file10); clsTextFile file14 = new clsTextFile { SubDirectory = str19, FieldCount = 12 }; list.Add(file14); clsTextFile file6 = new clsTextFile { SubDirectory = str7, FieldCount = 14 }; list.Add(file6); clsTextFile file7 = new clsTextFile { SubDirectory = str9, FieldCount = 11 }; list.Add(file7); clsTextFile file = new clsTextFile { SubDirectory = str, FieldCount = 5 }; list.Add(file); clsTextFile file15 = new clsTextFile { SubDirectory = str21, FieldCount = 0x35 }; list.Add(file15); clsTextFile file13 = new clsTextFile { SubDirectory = str18, FieldCount = 6 }; list.Add(file13); try { enumerator = list.GetEnumerator(); while (enumerator.MoveNext()) { clsTextFile current = (clsTextFile) enumerator.Current; clsResult resultToAdd = current.LoadCommaFile(Path); result3.Add(resultToAdd); if (!resultToAdd.HasProblems) { if (current.CalcIsFieldCountValid()) { if (!current.CalcUniqueField()) { result3.ProblemAdd("An entry in field " + Conversions.ToString(current.UniqueField) + " was not unique for file " + current.SubDirectory + "."); } } else { result3.ProblemAdd("There were entries with the wrong number of fields for file " + current.SubDirectory + "."); } } } } finally { if (enumerator is IDisposable) { (enumerator as IDisposable).Dispose(); } } if (!result3.HasProblems) { clsUnitType.clsAttachment baseAttachment; clsBody body; clsECM secm; string[] strArray; string[] strArray2; clsPropulsion propulsion; clsSensor sensor; string[] files; clsWeapon weapon; IEnumerator enumerator2; IEnumerator enumerator3; IEnumerator enumerator4; IEnumerator enumerator5; IEnumerator enumerator6; IEnumerator enumerator7; IEnumerator enumerator8; IEnumerator enumerator9; IEnumerator enumerator10; IEnumerator enumerator11; IEnumerator enumerator12; IEnumerator enumerator13; try { files = Directory.GetFiles(Path + str20); } catch (Exception exception1) { ProjectData.SetProjectError(exception1); Exception exception = exception1; result3.WarningAdd("Unable to access texture pages."); files = new string[0]; ProjectData.ClearProjectError(); } System.Drawing.Bitmap resultBitmap = null; foreach (string str23 in files) { if (Strings.Right(str23, 4).ToLower() == ".png") { clsResult result5 = new clsResult("Loading texture page \"" + str23 + "\""); if (File.Exists(str23)) { modProgram.sResult result = modBitmap.LoadBitmap(str23, ref resultBitmap); clsTexturePage page = new clsTexturePage(); if (result.Success) { modBitmap.sBitmapGLTexture texture; result5.Take(modBitmap.BitmapIsGLCompatible(resultBitmap)); texture.MagFilter = TextureMagFilter.Nearest; texture.MinFilter = TextureMinFilter.Nearest; texture.TextureNum = 0; texture.MipMapLevel = 0; texture.Texture = resultBitmap; texture.Perform(); page.GLTexture_Num = texture.TextureNum; } else { result5.WarningAdd(result.Problem); } int num = Strings.InStrRev(str23, Conversions.ToString(modProgram.PlatformPathSeparator), -1, CompareMethod.Binary); page.FileTitle = Strings.Mid(str23, num + 1, (str23.Length - 4) - num); this.TexturePages.Add(page); } else { result5.WarningAdd("Texture page missing (" + str23 + ")."); } result3.Add(result5); } } modLists.SimpleList<clsPIE> list2 = new modLists.SimpleList<clsPIE>(); try { strArray2 = Directory.GetFiles(Path + str11); } catch (Exception exception3) { ProjectData.SetProjectError(exception3); Exception exception2 = exception3; result3.WarningAdd("Unable to access PIE files."); strArray2 = new string[0]; ProjectData.ClearProjectError(); } foreach (string str23 in strArray2) { modProgram.sSplitPath path = new modProgram.sSplitPath(str23); if (path.FileExtension.ToLower() == "pie") { clsPIE spie = new clsPIE { Path = str23, LCaseFileTitle = path.FileTitle.ToLower() }; list2.Add(spie); } } try { enumerator2 = file2.ResultData.GetEnumerator(); while (enumerator2.MoveNext()) { strArray = (string[]) enumerator2.Current; body = new clsBody(); body.ObjectDataLink.Connect(this.Bodies); body.Code = strArray[0]; this.SetComponentName(file8.ResultData, body, result3); modIO.InvariantParse_int(strArray[6], ref body.Hitpoints); body.Designable = strArray[0x18] != "0"; body.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[7].ToLower(), result3)); } } finally { if (enumerator2 is IDisposable) { (enumerator2 as IDisposable).Dispose(); } } try { enumerator3 = file9.ResultData.GetEnumerator(); while (enumerator3.MoveNext()) { strArray = (string[]) enumerator3.Current; propulsion = new clsPropulsion(this.Bodies.Count); propulsion.ObjectDataLink.Connect(this.Propulsions); propulsion.Code = strArray[0]; this.SetComponentName(file8.ResultData, propulsion, result3); modIO.InvariantParse_int(strArray[7], ref propulsion.HitPoints); propulsion.Designable = strArray[11] != "0"; } } finally { if (enumerator3 is IDisposable) { (enumerator3 as IDisposable).Dispose(); } } BodyProp[,] propArray = new BodyProp[(this.Bodies.Count - 1) + 1, (this.Propulsions.Count - 1) + 1]; int num10 = this.Bodies.Count - 1; for (int i = 0; i <= num10; i++) { int num11 = this.Propulsions.Count - 1; for (int k = 0; k <= num11; k++) { propArray[i, k] = new BodyProp(); propArray[i, k].LeftPIE = "0"; propArray[i, k].RightPIE = "0"; } } try { enumerator4 = file3.ResultData.GetEnumerator(); while (enumerator4.MoveNext()) { strArray = (string[]) enumerator4.Current; body = this.FindBodyCode(strArray[0]); propulsion = this.FindPropulsionCode(strArray[1]); if ((body != null) & (propulsion != null)) { if (strArray[2] != "0") { propArray[body.ObjectDataLink.ArrayPosition, propulsion.ObjectDataLink.ArrayPosition].LeftPIE = strArray[2].ToLower(); } if (strArray[3] != "0") { propArray[body.ObjectDataLink.ArrayPosition, propulsion.ObjectDataLink.ArrayPosition].RightPIE = strArray[3].ToLower(); } } } } finally { if (enumerator4 is IDisposable) { (enumerator4 as IDisposable).Dispose(); } } int num12 = this.Propulsions.Count - 1; for (int j = 0; j <= num12; j++) { propulsion = this.Propulsions[j]; int num13 = this.Bodies.Count - 1; for (int m = 0; m <= num13; m++) { body = this.Bodies[m]; propulsion.Bodies[m].LeftAttachment = new clsUnitType.clsAttachment(); propulsion.Bodies[m].LeftAttachment.Models.Add(this.GetModelForPIE(list2, propArray[m, j].LeftPIE, result3)); propulsion.Bodies[m].RightAttachment = new clsUnitType.clsAttachment(); propulsion.Bodies[m].RightAttachment.Models.Add(this.GetModelForPIE(list2, propArray[m, j].RightPIE, result3)); } } try { enumerator5 = file5.ResultData.GetEnumerator(); while (enumerator5.MoveNext()) { strArray = (string[]) enumerator5.Current; clsConstruct component = new clsConstruct(); component.ObjectDataLink.Connect(this.Constructors); component.TurretObjectDataLink.Connect(this.Turrets); component.Code = strArray[0]; this.SetComponentName(file8.ResultData, component, result3); component.Designable = strArray[11] != "0"; component.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[8].ToLower(), result3)); } } finally { if (enumerator5 is IDisposable) { (enumerator5 as IDisposable).Dispose(); } } try { enumerator6 = file15.ResultData.GetEnumerator(); while (enumerator6.MoveNext()) { strArray = (string[]) enumerator6.Current; weapon = new clsWeapon(); weapon.ObjectDataLink.Connect(this.Weapons); weapon.TurretObjectDataLink.Connect(this.Turrets); weapon.Code = strArray[0]; this.SetComponentName(file8.ResultData, weapon, result3); modIO.InvariantParse_int(strArray[7], ref weapon.HitPoints); weapon.Designable = strArray[0x33] != "0"; weapon.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[8].ToLower(), result3)); weapon.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[9].ToLower(), result3)); } } finally { if (enumerator6 is IDisposable) { (enumerator6 as IDisposable).Dispose(); } } try { enumerator7 = file11.ResultData.GetEnumerator(); while (enumerator7.MoveNext()) { strArray = (string[]) enumerator7.Current; sensor = new clsSensor(); sensor.ObjectDataLink.Connect(this.Sensors); sensor.TurretObjectDataLink.Connect(this.Turrets); sensor.Code = strArray[0]; this.SetComponentName(file8.ResultData, sensor, result3); modIO.InvariantParse_int(strArray[7], ref sensor.HitPoints); sensor.Designable = strArray[15] != "0"; string str27 = strArray[11].ToLower(); if (str27 == "turret") { sensor.Location = clsSensor.enumLocation.Turret; } else if (str27 == "default") { sensor.Location = clsSensor.enumLocation.Invisible; } else { sensor.Location = clsSensor.enumLocation.Invisible; } sensor.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[8].ToLower(), result3)); sensor.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[9].ToLower(), result3)); } } finally { if (enumerator7 is IDisposable) { (enumerator7 as IDisposable).Dispose(); } } try { enumerator8 = file10.ResultData.GetEnumerator(); while (enumerator8.MoveNext()) { strArray = (string[]) enumerator8.Current; clsRepair repair = new clsRepair(); repair.ObjectDataLink.Connect(this.Repairs); repair.TurretObjectDataLink.Connect(this.Turrets); repair.Code = strArray[0]; this.SetComponentName(file8.ResultData, repair, result3); repair.Designable = strArray[13] != "0"; repair.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[9].ToLower(), result3)); repair.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[10].ToLower(), result3)); } } finally { if (enumerator8 is IDisposable) { (enumerator8 as IDisposable).Dispose(); } } try { enumerator9 = file4.ResultData.GetEnumerator(); while (enumerator9.MoveNext()) { strArray = (string[]) enumerator9.Current; clsBrain brain = new clsBrain(); brain.ObjectDataLink.Connect(this.Brains); brain.TurretObjectDataLink.Connect(this.Turrets); brain.Code = strArray[0]; this.SetComponentName(file8.ResultData, brain, result3); brain.Designable = true; weapon = this.FindWeaponCode(strArray[7]); if (weapon != null) { brain.Weapon = weapon; brain.Attachment = weapon.Attachment; } } } finally { if (enumerator9 is IDisposable) { (enumerator9 as IDisposable).Dispose(); } } try { enumerator10 = file6.ResultData.GetEnumerator(); while (enumerator10.MoveNext()) { strArray = (string[]) enumerator10.Current; secm = new clsECM(); secm.ObjectDataLink.Connect(this.ECMs); secm.TurretObjectDataLink.Connect(this.Turrets); secm.Code = strArray[0]; this.SetComponentName(file8.ResultData, secm, result3); modIO.InvariantParse_int(strArray[7], ref secm.HitPoints); secm.Designable = false; secm.Attachment.Models.Add(this.GetModelForPIE(list2, strArray[8].ToLower(), result3)); } } finally { if (enumerator10 is IDisposable) { (enumerator10 as IDisposable).Dispose(); } } try { enumerator11 = file7.ResultData.GetEnumerator(); while (enumerator11.MoveNext()) { strArray = (string[]) enumerator11.Current; clsFeatureType featureType = new clsFeatureType(); featureType.UnitType_ObjectDataLink.Connect(this.UnitTypes); featureType.FeatureType_ObjectDataLink.Connect(this.FeatureTypes); featureType.Code = strArray[0]; if (strArray[7] == "OIL RESOURCE") { featureType.FeatureType = clsFeatureType.enumFeatureType.OilResource; } this.SetFeatureName(file8.ResultData, featureType, result3); if (!modIO.InvariantParse_int(strArray[1], ref featureType.Footprint.X)) { result3.WarningAdd("Feature footprint-x was not an integer for " + featureType.Code + "."); } if (!modIO.InvariantParse_int(strArray[2], ref featureType.Footprint.Y)) { result3.WarningAdd("Feature footprint-y was not an integer for " + featureType.Code + "."); } featureType.BaseAttachment = new clsUnitType.clsAttachment(); baseAttachment = featureType.BaseAttachment; name = strArray[6].ToLower(); baseAttachment.CreateAttachment().Models.Add(this.GetModelForPIE(list2, name, result3)); } } finally { if (enumerator11 is IDisposable) { (enumerator11 as IDisposable).Dispose(); } } try { enumerator12 = newItem.ResultData.GetEnumerator(); while (enumerator12.MoveNext()) { modMath.sXY_int _int; strArray = (string[]) enumerator12.Current; string str25 = strArray[0]; string str26 = strArray[1]; string[] strArray4 = strArray[0x15].ToLower().Split(new char[] { '@' }); string str24 = strArray[0x16].ToLower(); if (!modIO.InvariantParse_int(strArray[5], ref _int.X)) { result3.WarningAdd("Structure footprint-x was not an integer for " + str25 + "."); } if (!modIO.InvariantParse_int(strArray[6], ref _int.Y)) { result3.WarningAdd("Structure footprint-y was not an integer for " + str25 + "."); } if ((str26 != "WALL") | (strArray4.GetLength(0) != 4)) { clsStructureType structureType = new clsStructureType(); structureType.UnitType_ObjectDataLink.Connect(this.UnitTypes); structureType.StructureType_ObjectDataLink.Connect(this.StructureTypes); structureType.Code = str25; this.SetStructureName(file8.ResultData, structureType, result3); structureType.Footprint = _int; string str28 = str26; if (str28 == "DEMOLISH") { structureType.StructureType = clsStructureType.enumStructureType.Demolish; } else if (str28 == "WALL") { structureType.StructureType = clsStructureType.enumStructureType.Wall; } else if (str28 == "CORNER WALL") { structureType.StructureType = clsStructureType.enumStructureType.CornerWall; } else if (str28 == "FACTORY") { structureType.StructureType = clsStructureType.enumStructureType.Factory; } else if (str28 == "CYBORG FACTORY") { structureType.StructureType = clsStructureType.enumStructureType.CyborgFactory; } else if (str28 == "VTOL FACTORY") { structureType.StructureType = clsStructureType.enumStructureType.VTOLFactory; } else if (str28 == "COMMAND") { structureType.StructureType = clsStructureType.enumStructureType.Command; } else if (str28 == "HQ") { structureType.StructureType = clsStructureType.enumStructureType.HQ; } else if (str28 == "DEFENSE") { structureType.StructureType = clsStructureType.enumStructureType.Defense; } else if (str28 == "POWER GENERATOR") { structureType.StructureType = clsStructureType.enumStructureType.PowerGenerator; } else if (str28 == "POWER MODULE") { structureType.StructureType = clsStructureType.enumStructureType.PowerModule; } else if (str28 == "RESEARCH") { structureType.StructureType = clsStructureType.enumStructureType.Research; } else if (str28 == "RESEARCH MODULE") { structureType.StructureType = clsStructureType.enumStructureType.ResearchModule; } else if (str28 == "FACTORY MODULE") { structureType.StructureType = clsStructureType.enumStructureType.FactoryModule; } else if (str28 == "DOOR") { structureType.StructureType = clsStructureType.enumStructureType.DOOR; } else if (str28 == "REPAIR FACILITY") { structureType.StructureType = clsStructureType.enumStructureType.RepairFacility; } else if (str28 == "SAT UPLINK") { structureType.StructureType = clsStructureType.enumStructureType.DOOR; } else if (str28 == "REARM PAD") { structureType.StructureType = clsStructureType.enumStructureType.RearmPad; } else if (str28 == "MISSILE SILO") { structureType.StructureType = clsStructureType.enumStructureType.MissileSilo; } else if (str28 == "RESOURCE EXTRACTOR") { structureType.StructureType = clsStructureType.enumStructureType.ResourceExtractor; } else { structureType.StructureType = clsStructureType.enumStructureType.Unknown; } baseAttachment = structureType.BaseAttachment; if (strArray4.GetLength(0) > 0) { baseAttachment.Models.Add(this.GetModelForPIE(list2, strArray4[0], result3)); } structureType.StructureBasePlate = this.GetModelForPIE(list2, str24, result3); if ((baseAttachment.Models.Count == 1) && (baseAttachment.Models[0].ConnectorCount >= 1)) { modMath.sXYZ_sng _sng = baseAttachment.Models[0].Connectors[0]; modLists.SimpleList<string[]> rowsWithValue = this.GetRowsWithValue(file13.ResultData, structureType.Code); if (rowsWithValue.Count > 0) { weapon = this.FindWeaponCode(rowsWithValue[0][1]); } else { weapon = null; } secm = this.FindECMCode(strArray[0x12]); sensor = this.FindSensorCode(strArray[0x13]); if ((weapon != null) && (weapon.Code != "ZNULLWEAPON")) { baseAttachment.CopyAttachment(weapon.Attachment).Pos_Offset = _sng; } if ((secm != null) && (secm.Code != "ZNULLECM")) { baseAttachment.CopyAttachment(secm.Attachment).Pos_Offset = _sng; } if ((sensor != null) && (sensor.Code != "ZNULLSENSOR")) { baseAttachment.CopyAttachment(sensor.Attachment).Pos_Offset = _sng; } } continue; } clsWallType wallType = new clsWallType(); wallType.WallType_ObjectDataLink.Connect(this.WallTypes); wallType.Code = str25; this.SetWallName(file8.ResultData, wallType, result3); clsModel model = this.GetModelForPIE(list2, str24, result3); int index = 0; do { clsStructureType type4 = new clsStructureType(); type4.UnitType_ObjectDataLink.Connect(this.UnitTypes); type4.StructureType_ObjectDataLink.Connect(this.StructureTypes); type4.WallLink.Connect(wallType.Segments); type4.Code = str25; name = wallType.Name; switch (index) { case 0: name = name + " - "; break; case 1: name = name + " + "; break; case 2: name = name + " T "; break; case 3: name = name + " L "; break; } type4.Name = name; type4.Footprint = _int; type4.StructureType = clsStructureType.enumStructureType.Wall; baseAttachment = type4.BaseAttachment; name = strArray4[index]; baseAttachment.Models.Add(this.GetModelForPIE(list2, name, result3)); type4.StructureBasePlate = model; index++; } while (index <= 3); } } finally { if (enumerator12 is IDisposable) { (enumerator12 as IDisposable).Dispose(); } } int num2 = 0; try { enumerator13 = file14.ResultData.GetEnumerator(); while (enumerator13.MoveNext()) { strArray = (string[]) enumerator13.Current; clsDroidTemplate template = new clsDroidTemplate(); template.UnitType_ObjectDataLink.Connect(this.UnitTypes); template.DroidTemplate_ObjectDataLink.Connect(this.DroidTemplates); template.Code = strArray[0]; this.SetTemplateName(file8.ResultData, template, result3); string str29 = strArray[9]; if (str29 == "ZNULLDROID") { template.TemplateDroidType = modProgram.TemplateDroidType_Null; } else if (str29 == "DROID") { template.TemplateDroidType = modProgram.TemplateDroidType_Droid; } else if (str29 == "CYBORG") { template.TemplateDroidType = modProgram.TemplateDroidType_Cyborg; } else if (str29 == "CYBORG_CONSTRUCT") { template.TemplateDroidType = modProgram.TemplateDroidType_CyborgConstruct; } else if (str29 == "CYBORG_REPAIR") { template.TemplateDroidType = modProgram.TemplateDroidType_CyborgRepair; } else if (str29 == "CYBORG_SUPER") { template.TemplateDroidType = modProgram.TemplateDroidType_CyborgSuper; } else if (str29 == "TRANSPORTER") { template.TemplateDroidType = modProgram.TemplateDroidType_Transporter; } else if (str29 == "PERSON") { template.TemplateDroidType = modProgram.TemplateDroidType_Person; } else { template.TemplateDroidType = null; result3.WarningAdd("Template " + template.GetDisplayTextCode() + " had an unrecognised type."); } clsDroidDesign.sLoadPartsArgs args = new clsDroidDesign.sLoadPartsArgs { Body = this.FindBodyCode(strArray[2]), Brain = this.FindBrainCode(strArray[3]), Construct = this.FindConstructorCode(strArray[4]), ECM = this.FindECMCode(strArray[5]), Propulsion = this.FindPropulsionCode(strArray[7]), Repair = this.FindRepairCode(strArray[8]), Sensor = this.FindSensorCode(strArray[10]) }; modLists.SimpleList<string[]> list4 = this.GetRowsWithValue(file.ResultData, template.Code); if (list4.Count > 0) { name = list4[0][1]; if (name != "NULL") { args.Weapon1 = this.FindWeaponCode(name); } name = list4[0][2]; if (name != "NULL") { args.Weapon2 = this.FindWeaponCode(name); } name = list4[0][3]; if (name != "NULL") { args.Weapon3 = this.FindWeaponCode(name); } } if (!template.LoadParts(args)) { if (num2 < 0x10) { result3.WarningAdd("Template " + template.GetDisplayTextCode() + " had multiple conflicting turrets."); } num2++; } } } finally { if (enumerator13 is IDisposable) { (enumerator13 as IDisposable).Dispose(); } } if (num2 > 0) { result3.WarningAdd(Conversions.ToString(num2) + " templates had multiple conflicting turrets."); } } return result3; }
public clsResult LoadDirectory(string Path) { clsResult result3 = new clsResult("Loading tileset from \"" + Path + "\""); System.Drawing.Bitmap resultBitmap = null; modProgram.sSplitPath path = new modProgram.sSplitPath(Path); string slashPath = modProgram.EndWithPathSeperator(Path); if (path.FileTitle != "") { this.Name = path.FileTitle; } else if (path.PartCount >= 2) { this.Name = path.Parts[path.PartCount - 2]; } modProgram.sResult result2 = this.Default_TileTypes_Load(slashPath + this.Name + ".ttp"); if (!result2.Success) { result3.ProblemAdd("Loading tile types: " + result2.Problem); return result3; } float[] pixels = new float[4]; int num7 = this.TileCount - 1; for (int i = 0; i <= num7; i++) { modBitmap.sBitmapGLTexture texture; string strTile = "tile-" + modProgram.MinDigits(i, 2) + ".png"; string str = slashPath + this.Name + "-128" + Conversions.ToString(modProgram.PlatformPathSeparator) + strTile; if (!modBitmap.LoadBitmap(str, ref resultBitmap).Success) { return result3; } if ((resultBitmap.Width != 0x80) | (resultBitmap.Height != 0x80)) { result3.WarningAdd("Tile graphic " + str + " from tileset " + this.Name + " is not 128x128."); return result3; } texture.Texture = resultBitmap; texture.MipMapLevel = 0; texture.MagFilter = TextureMagFilter.Nearest; texture.MinFilter = TextureMinFilter.Nearest; texture.TextureNum = 0; texture.Perform(); this.Tiles[i].TextureView_GL_Texture_Num = texture.TextureNum; texture.MagFilter = TextureMagFilter.Nearest; if (modSettings.Settings.Mipmaps) { texture.MinFilter = TextureMinFilter.LinearMipmapLinear; } else { texture.MinFilter = TextureMinFilter.Nearest; } texture.TextureNum = 0; texture.Perform(); this.Tiles[i].MapView_GL_Texture_Num = texture.TextureNum; if (modSettings.Settings.Mipmaps) { if (modSettings.Settings.MipmapsHardware) { GL.Enable(EnableCap.Texture2D); GL.GenerateMipmap(GenerateMipmapTarget.Texture2D); GL.Disable(EnableCap.Texture2D); } else { clsResult resultToAdd = this.GenerateMipMaps(slashPath, strTile, texture, i); result3.Add(resultToAdd); if (resultToAdd.HasProblems) { return result3; } } GL.GetTexImage<float>(TextureTarget.Texture2D, 7, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, PixelType.Float, pixels); this.Tiles[i].AverageColour.Red = pixels[0]; this.Tiles[i].AverageColour.Green = pixels[1]; this.Tiles[i].AverageColour.Blue = pixels[2]; } else { int num3 = 0; int num2 = 0; int num = 0; int num8 = resultBitmap.Height - 1; for (int j = 0; j <= num8; j++) { int num9 = resultBitmap.Width - 1; for (int k = 0; k <= num9; k++) { Color pixel = resultBitmap.GetPixel(k, j); num3 += pixel.R; num2 += pixel.G; num += pixel.B; } } this.Tiles[i].AverageColour.Red = (float) (((double) num3) / 4177920.0); this.Tiles[i].AverageColour.Green = (float) (((double) num2) / 4177920.0); this.Tiles[i].AverageColour.Blue = (float) (((double) num) / 4177920.0); } } return result3; }
public clsModel GetModelForPIE(modLists.SimpleList<clsPIE> PIE_List, string PIE_LCaseFileTitle, clsResult ResultOutput) { if (PIE_LCaseFileTitle != "0") { clsResult resultToAdd = new clsResult("Loading PIE file " + PIE_LCaseFileTitle); int num2 = PIE_List.Count - 1; for (int i = 0; i <= num2; i++) { clsPIE spie = PIE_List[i]; if (spie.LCaseFileTitle == PIE_LCaseFileTitle) { if (spie.Model == null) { spie.Model = new clsModel(); try { StreamReader file = new StreamReader(spie.Path); try { resultToAdd.Take(spie.Model.ReadPIE(file, this)); } catch (Exception exception1) { ProjectData.SetProjectError(exception1); Exception exception = exception1; file.Close(); resultToAdd.WarningAdd(exception.Message); ResultOutput.Add(resultToAdd); clsModel model = spie.Model; ProjectData.ClearProjectError(); return model; } } catch (Exception exception3) { ProjectData.SetProjectError(exception3); Exception exception2 = exception3; resultToAdd.WarningAdd(exception2.Message); ProjectData.ClearProjectError(); } } ResultOutput.Add(resultToAdd); return spie.Model; } } if (!resultToAdd.HasWarnings) { resultToAdd.WarningAdd("file is missing"); } ResultOutput.Add(resultToAdd); } return null; }
private void btnGenerateRamps_Click(object sender, EventArgs e) { if (this.Generator.Map != null) { this.Generator.MaxDisconnectionDist = this.ValidateTextbox(this.txtRampDistance, 0.0, 99999.0, 128.0); this.Generator.RampBase = ((double) this.ValidateTextbox(this.txtRampBase, 10.0, 1000.0, 10.0)) / 1000.0; clsResult result = new clsResult(""); this.lstResult_AddText("Generating ramps."); result = this.Generator.GenerateRamps(); if (!result.HasProblems) { result.Add(this.FinishHeights()); } this.lstResult_AddResult(result); if (result.HasProblems) { this.lstResult_AddText("Failed."); } else { this.lstResult_AddText("Done."); } } }
private void btnGenerateLayout_Click(object sender, EventArgs e) { this.lstResult.Items.Clear(); this.btnGenerateLayout.Enabled = false; this.lstResult_AddText("Generating layout."); Application.DoEvents(); this.StopTrying = false; this.Generator.ClearLayout(); this.Generator.GenerateTileset = null; this.Generator.Map = null; this.Generator.TopLeftPlayerCount = this.PlayerCount; switch (this.cboSymmetry.SelectedIndex) { case 0: this.Generator.SymmetryBlockCountXY.X = 1; this.Generator.SymmetryBlockCountXY.Y = 1; this.Generator.SymmetryBlockCount = 1; this.Generator.SymmetryBlocks = new clsGenerateMap.sSymmetryBlock[(this.Generator.SymmetryBlockCount - 1) + 1]; this.Generator.SymmetryBlocks[0].XYNum = new modMath.sXY_int(0, 0); this.Generator.SymmetryBlocks[0].Orientation = new TileOrientation.sTileOrientation(false, false, false); this.Generator.SymmetryIsRotational = false; break; case 1: this.Generator.SymmetryBlockCountXY.X = 2; this.Generator.SymmetryBlockCountXY.Y = 1; this.Generator.SymmetryBlockCount = 2; this.Generator.SymmetryBlocks = new clsGenerateMap.sSymmetryBlock[(this.Generator.SymmetryBlockCount - 1) + 1]; this.Generator.SymmetryBlocks[0].XYNum = new modMath.sXY_int(0, 0); this.Generator.SymmetryBlocks[0].Orientation = new TileOrientation.sTileOrientation(false, false, false); this.Generator.SymmetryBlocks[0].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[0].ReflectToNum[0] = 1; this.Generator.SymmetryBlocks[1].XYNum = new modMath.sXY_int(1, 0); this.Generator.SymmetryBlocks[1].Orientation = new TileOrientation.sTileOrientation(true, true, false); this.Generator.SymmetryBlocks[1].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[1].ReflectToNum[0] = 0; this.Generator.SymmetryIsRotational = true; break; case 2: this.Generator.SymmetryBlockCountXY.X = 1; this.Generator.SymmetryBlockCountXY.Y = 2; this.Generator.SymmetryBlockCount = 2; this.Generator.SymmetryBlocks = new clsGenerateMap.sSymmetryBlock[(this.Generator.SymmetryBlockCount - 1) + 1]; this.Generator.SymmetryBlocks[0].XYNum = new modMath.sXY_int(0, 0); this.Generator.SymmetryBlocks[0].Orientation = new TileOrientation.sTileOrientation(false, false, false); this.Generator.SymmetryBlocks[0].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[0].ReflectToNum[0] = 1; this.Generator.SymmetryBlocks[1].XYNum = new modMath.sXY_int(0, 1); this.Generator.SymmetryBlocks[1].Orientation = new TileOrientation.sTileOrientation(true, true, false); this.Generator.SymmetryBlocks[1].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[1].ReflectToNum[0] = 0; this.Generator.SymmetryIsRotational = true; break; case 3: this.Generator.SymmetryBlockCountXY.X = 2; this.Generator.SymmetryBlockCountXY.Y = 1; this.Generator.SymmetryBlockCount = 2; this.Generator.SymmetryBlocks = new clsGenerateMap.sSymmetryBlock[(this.Generator.SymmetryBlockCount - 1) + 1]; this.Generator.SymmetryBlocks[0].XYNum = new modMath.sXY_int(0, 0); this.Generator.SymmetryBlocks[0].Orientation = new TileOrientation.sTileOrientation(false, false, false); this.Generator.SymmetryBlocks[0].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[0].ReflectToNum[0] = 1; this.Generator.SymmetryBlocks[1].XYNum = new modMath.sXY_int(1, 0); this.Generator.SymmetryBlocks[1].Orientation = new TileOrientation.sTileOrientation(true, false, false); this.Generator.SymmetryBlocks[1].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[1].ReflectToNum[0] = 0; this.Generator.SymmetryIsRotational = false; break; case 4: this.Generator.SymmetryBlockCountXY.X = 1; this.Generator.SymmetryBlockCountXY.Y = 2; this.Generator.SymmetryBlockCount = 2; this.Generator.SymmetryBlocks = new clsGenerateMap.sSymmetryBlock[(this.Generator.SymmetryBlockCount - 1) + 1]; this.Generator.SymmetryBlocks[0].XYNum = new modMath.sXY_int(0, 0); this.Generator.SymmetryBlocks[0].Orientation = new TileOrientation.sTileOrientation(false, false, false); this.Generator.SymmetryBlocks[0].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[0].ReflectToNum[0] = 1; this.Generator.SymmetryBlocks[1].XYNum = new modMath.sXY_int(0, 1); this.Generator.SymmetryBlocks[1].Orientation = new TileOrientation.sTileOrientation(false, true, false); this.Generator.SymmetryBlocks[1].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[1].ReflectToNum[0] = 0; this.Generator.SymmetryIsRotational = false; break; case 5: this.Generator.SymmetryBlockCountXY.X = 2; this.Generator.SymmetryBlockCountXY.Y = 2; this.Generator.SymmetryBlockCount = 4; this.Generator.SymmetryBlocks = new clsGenerateMap.sSymmetryBlock[(this.Generator.SymmetryBlockCount - 1) + 1]; this.Generator.SymmetryBlocks[0].XYNum = new modMath.sXY_int(0, 0); this.Generator.SymmetryBlocks[0].Orientation = new TileOrientation.sTileOrientation(false, false, false); this.Generator.SymmetryBlocks[0].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[0].ReflectToNum[0] = 1; this.Generator.SymmetryBlocks[0].ReflectToNum[1] = 2; this.Generator.SymmetryBlocks[1].XYNum = new modMath.sXY_int(1, 0); this.Generator.SymmetryBlocks[1].Orientation = new TileOrientation.sTileOrientation(true, false, true); this.Generator.SymmetryBlocks[1].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[1].ReflectToNum[0] = 3; this.Generator.SymmetryBlocks[1].ReflectToNum[1] = 0; this.Generator.SymmetryBlocks[2].XYNum = new modMath.sXY_int(0, 1); this.Generator.SymmetryBlocks[2].Orientation = new TileOrientation.sTileOrientation(false, true, true); this.Generator.SymmetryBlocks[2].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[2].ReflectToNum[0] = 0; this.Generator.SymmetryBlocks[2].ReflectToNum[1] = 3; this.Generator.SymmetryBlocks[3].XYNum = new modMath.sXY_int(1, 1); this.Generator.SymmetryBlocks[3].Orientation = new TileOrientation.sTileOrientation(true, true, false); this.Generator.SymmetryBlocks[3].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[3].ReflectToNum[0] = 2; this.Generator.SymmetryBlocks[3].ReflectToNum[1] = 1; this.Generator.SymmetryIsRotational = true; break; case 6: this.Generator.SymmetryBlockCountXY.X = 2; this.Generator.SymmetryBlockCountXY.Y = 2; this.Generator.SymmetryBlockCount = 4; this.Generator.SymmetryBlocks = new clsGenerateMap.sSymmetryBlock[(this.Generator.SymmetryBlockCount - 1) + 1]; this.Generator.SymmetryBlocks[0].XYNum = new modMath.sXY_int(0, 0); this.Generator.SymmetryBlocks[0].Orientation = new TileOrientation.sTileOrientation(false, false, false); this.Generator.SymmetryBlocks[0].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[0].ReflectToNum[0] = 1; this.Generator.SymmetryBlocks[0].ReflectToNum[1] = 2; this.Generator.SymmetryBlocks[1].XYNum = new modMath.sXY_int(1, 0); this.Generator.SymmetryBlocks[1].Orientation = new TileOrientation.sTileOrientation(true, false, false); this.Generator.SymmetryBlocks[1].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[1].ReflectToNum[0] = 0; this.Generator.SymmetryBlocks[1].ReflectToNum[1] = 3; this.Generator.SymmetryBlocks[2].XYNum = new modMath.sXY_int(0, 1); this.Generator.SymmetryBlocks[2].Orientation = new TileOrientation.sTileOrientation(false, true, false); this.Generator.SymmetryBlocks[2].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[2].ReflectToNum[0] = 3; this.Generator.SymmetryBlocks[2].ReflectToNum[1] = 0; this.Generator.SymmetryBlocks[3].XYNum = new modMath.sXY_int(1, 1); this.Generator.SymmetryBlocks[3].Orientation = new TileOrientation.sTileOrientation(true, true, false); this.Generator.SymmetryBlocks[3].ReflectToNum = new int[(((int) Math.Round((double) (((double) this.Generator.SymmetryBlockCount) / 2.0))) - 1) + 1]; this.Generator.SymmetryBlocks[3].ReflectToNum[0] = 2; this.Generator.SymmetryBlocks[3].ReflectToNum[1] = 1; this.Generator.SymmetryIsRotational = false; break; default: Interaction.MsgBox("Select symmetry", MsgBoxStyle.ApplicationModal, null); this.btnGenerateLayout.Enabled = true; return; } if ((this.Generator.TopLeftPlayerCount * this.Generator.SymmetryBlockCount) < 2) { Interaction.MsgBox("That configuration only produces 1 player.", MsgBoxStyle.ApplicationModal, null); this.btnGenerateLayout.Enabled = true; } else if ((this.Generator.TopLeftPlayerCount * this.Generator.SymmetryBlockCount) > 10) { Interaction.MsgBox("That configuration produces more than 10 players.", MsgBoxStyle.ApplicationModal, null); this.btnGenerateLayout.Enabled = true; } else { this.Generator.TileSize.X = this.ValidateTextbox(this.txtWidth, 48.0, 250.0, 1.0); this.Generator.TileSize.Y = this.ValidateTextbox(this.txtHeight, 48.0, 250.0, 1.0); if ((this.Generator.SymmetryBlockCount == 4) && ((this.Generator.TileSize.X != this.Generator.TileSize.Y) & this.Generator.SymmetryIsRotational)) { Interaction.MsgBox("Width and height must be equal if map is rotated on two axes.", MsgBoxStyle.ApplicationModal, null); this.btnGenerateLayout.Enabled = true; } else { clsResult result; this.Generator.PlayerBasePos = new modMath.sXY_int[(this.Generator.TopLeftPlayerCount - 1) + 1]; double min = 12.0; double x = Math.Min((double) (((double) this.Generator.TileSize.X) / ((double) this.Generator.SymmetryBlockCountXY.X)), (double) (this.Generator.TileSize.X - 12.0)); Position.XY_dbl _dbl = new Position.XY_dbl(x, Math.Min((double) (((double) this.Generator.TileSize.Y) / ((double) this.Generator.SymmetryBlockCountXY.Y)), (double) (this.Generator.TileSize.Y - 12.0))); this.Generator.PlayerBasePos[0] = new modMath.sXY_int(this.ValidateTextbox(this.txt1x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt1y, min, _dbl.X, 128.0)); if (this.Generator.TopLeftPlayerCount >= 2) { this.Generator.PlayerBasePos[1] = new modMath.sXY_int(this.ValidateTextbox(this.txt2x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt2y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 3) { this.Generator.PlayerBasePos[2] = new modMath.sXY_int(this.ValidateTextbox(this.txt3x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt3y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 4) { this.Generator.PlayerBasePos[3] = new modMath.sXY_int(this.ValidateTextbox(this.txt4x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt4y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 5) { this.Generator.PlayerBasePos[4] = new modMath.sXY_int(this.ValidateTextbox(this.txt5x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt5y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 6) { this.Generator.PlayerBasePos[5] = new modMath.sXY_int(this.ValidateTextbox(this.txt6x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt6y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 7) { this.Generator.PlayerBasePos[6] = new modMath.sXY_int(this.ValidateTextbox(this.txt7x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt7y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 8) { this.Generator.PlayerBasePos[7] = new modMath.sXY_int(this.ValidateTextbox(this.txt8x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt8y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 9) { this.Generator.PlayerBasePos[8] = new modMath.sXY_int(this.ValidateTextbox(this.txt9x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt9y, min, _dbl.Y, 128.0)); if (this.Generator.TopLeftPlayerCount >= 10) { this.Generator.PlayerBasePos[9] = new modMath.sXY_int(this.ValidateTextbox(this.txt10x, min, _dbl.X, 128.0), this.ValidateTextbox(this.txt10y, min, _dbl.Y, 128.0)); } } } } } } } } } this.Generator.LevelCount = this.ValidateTextbox(this.txtLevels, 3.0, 5.0, 1.0); this.Generator.BaseLevel = this.ValidateTextbox(this.txtBaseLevel, -1.0, (double) (this.Generator.LevelCount - 1), 1.0); this.Generator.JitterScale = 1; this.Generator.MaxLevelTransition = 2; this.Generator.PassagesChance = this.ValidateTextbox(this.txtLevelFrequency, 0.0, 100.0, 1.0); this.Generator.VariationChance = this.ValidateTextbox(this.txtVariation, 0.0, 100.0, 1.0); this.Generator.FlatsChance = this.ValidateTextbox(this.txtFlatness, 0.0, 100.0, 1.0); this.Generator.BaseFlatArea = this.ValidateTextbox(this.txtBaseArea, 1.0, 16.0, 1.0); this.Generator.NodeScale = 4f; this.Generator.WaterSpawnQuantity = this.ValidateTextbox(this.txtWaterQuantity, 0.0, 9999.0, 1.0); this.Generator.TotalWaterQuantity = this.ValidateTextbox(this.txtConnectedWater, 0.0, 9999.0, 1.0); Application.DoEvents(); int num2 = 0; while (true) { result = new clsResult(""); result = this.Generator.GenerateLayout(); if (!result.HasProblems) { clsResult resultToAdd = this.FinishHeights(); result.Add(resultToAdd); if (!resultToAdd.HasProblems) { this.lstResult_AddResult(result); this.lstResult_AddText("Done."); this.btnGenerateLayout.Enabled = true; break; } } num2++; this.lstResult_AddText("Attempt " + Conversions.ToString(num2) + " failed."); Application.DoEvents(); if (this.StopTrying) { this.Generator.Map = null; this.lstResult_AddResult(result); this.lstResult_AddText("Stopped."); this.btnGenerateLayout.Enabled = true; return; } this.lstResult_AddResult(result); this.lstResult_AddText("Retrying..."); Application.DoEvents(); this.Generator.ClearLayout(); } this.lstResult_AddResult(result); } } }
public clsResult Translate(clsSectionTranslator Translator) { sErrorCount count; clsResult result = new clsResult("Translating INI"); count.NameWarningCountMax = 0x10; count.ValueWarningCountMax = 0x10; int num2 = this.Sections.Count - 1; for (int i = 0; i <= num2; i++) { result.Add(this.Sections[i].Translate(i, Translator, ref count)); } if (count.NameErrorCount > count.NameWarningCountMax) { result.WarningAdd("There were " + Conversions.ToString(count.NameErrorCount) + " unknown property names that were ignored."); } if (count.ValueErrorCount > count.ValueWarningCountMax) { result.WarningAdd("There were " + Conversions.ToString(count.ValueErrorCount) + " invalid values that were ignored."); } return result; }
public static clsResult LoadTilesets(string TilesetsPath) { string[] directories; clsResult result3 = new clsResult("Loading tilesets"); try { directories = Directory.GetDirectories(TilesetsPath); } catch (Exception exception1) { ProjectData.SetProjectError(exception1); Exception exception = exception1; result3.ProblemAdd(exception.Message); clsResult result = result3; ProjectData.ClearProjectError(); return result; } if (directories != null) { clsTileset current; IEnumerator enumerator; foreach (string str in directories) { current = new clsTileset(); clsResult resultToAdd = current.LoadDirectory(str); result3.Add(resultToAdd); if (!resultToAdd.HasProblems) { Tilesets.Add(current); } } try { enumerator = Tilesets.GetEnumerator(); while (enumerator.MoveNext()) { current = (clsTileset) enumerator.Current; if (current.Name == "tertilesc1hw") { current.Name = "Arizona"; Tileset_Arizona = current; current.IsOriginal = true; current.BGColour = new sRGB_sng(0.8f, 0.5843138f, 0.2745098f); } else { if (current.Name == "tertilesc2hw") { current.Name = "Urban"; Tileset_Urban = current; current.IsOriginal = true; current.BGColour = new sRGB_sng(0.4627451f, 0.6470588f, 0.7960784f); continue; } if (current.Name == "tertilesc3hw") { current.Name = "Rocky Mountains"; Tileset_Rockies = current; current.IsOriginal = true; current.BGColour = new sRGB_sng(0.7137255f, 0.8823529f, 0.9254902f); } } } } finally { if (enumerator is IDisposable) { (enumerator as IDisposable).Dispose(); } } if (Tileset_Arizona == null) { result3.WarningAdd("Arizona tileset is missing."); } if (Tileset_Urban == null) { result3.WarningAdd("Urban tileset is missing."); } if (Tileset_Rockies == null) { result3.WarningAdd("Rocky Mountains tileset is missing."); } } return result3; }