Sending level seed & level gen errors to GameAnalytics
This commit is contained in:
@@ -27,7 +27,7 @@ namespace Barotrauma
|
|||||||
return verticeList;
|
return verticeList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static VertexPositionTexture[] GenerateWallShapes(List<VoronoiCell> cells)
|
public static VertexPositionTexture[] GenerateWallShapes(List<VoronoiCell> cells, Level level)
|
||||||
{
|
{
|
||||||
float inwardThickness = 500.0f, outWardThickness = 30.0f;
|
float inwardThickness = 500.0f, outWardThickness = 30.0f;
|
||||||
|
|
||||||
@@ -80,6 +80,10 @@ namespace Barotrauma
|
|||||||
#if DEBUG
|
#if DEBUG
|
||||||
DebugConsole.ThrowError("Invalid left normal");
|
DebugConsole.ThrowError("Invalid left normal");
|
||||||
#endif
|
#endif
|
||||||
|
GameAnalyticsManager.AddErrorEventOnce("CaveGenerator.GenerateWallShapes:InvalidLeftNormal:" + level.Seed,
|
||||||
|
GameAnalyticsSDK.Net.EGAErrorSeverity.Warning,
|
||||||
|
"Invalid left normal (leftedge: " + leftEdge + ", rightedge: " + rightEdge + ", normal: " + leftNormal + ", seed: " + level.Seed + ")");
|
||||||
|
|
||||||
if (cell.body != null)
|
if (cell.body != null)
|
||||||
{
|
{
|
||||||
GameMain.World.RemoveBody(cell.body);
|
GameMain.World.RemoveBody(cell.body);
|
||||||
@@ -106,6 +110,10 @@ namespace Barotrauma
|
|||||||
#if DEBUG
|
#if DEBUG
|
||||||
DebugConsole.ThrowError("Invalid right normal");
|
DebugConsole.ThrowError("Invalid right normal");
|
||||||
#endif
|
#endif
|
||||||
|
GameAnalyticsManager.AddErrorEventOnce("CaveGenerator.GenerateWallShapes:InvalidRightNormal:" + level.Seed,
|
||||||
|
GameAnalyticsSDK.Net.EGAErrorSeverity.Warning,
|
||||||
|
"Invalid right normal (leftedge: " + leftEdge + ", rightedge: " + rightEdge + ", normal: " + rightNormal + ", seed: " + level.Seed + ")");
|
||||||
|
|
||||||
if (cell.body != null)
|
if (cell.body != null)
|
||||||
{
|
{
|
||||||
GameMain.World.RemoveBody(cell.body);
|
GameMain.World.RemoveBody(cell.body);
|
||||||
|
|||||||
@@ -236,6 +236,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
GameAnalyticsManager.AddDesignEvent("Submarine:" + submarine.Name);
|
GameAnalyticsManager.AddDesignEvent("Submarine:" + submarine.Name);
|
||||||
|
GameAnalyticsManager.AddDesignEvent("Level", ToolBox.StringToInt(level.Seed));
|
||||||
GameAnalyticsManager.AddProgressionEvent(GameAnalyticsSDK.Net.EGAProgressionStatus.Start,
|
GameAnalyticsManager.AddProgressionEvent(GameAnalyticsSDK.Net.EGAProgressionStatus.Start,
|
||||||
GameMode.Name, (Mission == null ? "None" : Mission.GetType().ToString()));
|
GameMode.Name, (Mission == null ? "None" : Mission.GetType().ToString()));
|
||||||
|
|
||||||
|
|||||||
@@ -349,7 +349,7 @@ namespace Barotrauma
|
|||||||
return pathCells;
|
return pathCells;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Body> GeneratePolygons(List<VoronoiCell> cells, out List<Vector2[]> renderTriangles, bool setSolid = true)
|
public static List<Body> GeneratePolygons(List<VoronoiCell> cells, Level level, out List<Vector2[]> renderTriangles, bool setSolid = true)
|
||||||
{
|
{
|
||||||
renderTriangles = new List<Vector2[]>();
|
renderTriangles = new List<Vector2[]>();
|
||||||
var bodies = new List<Body>();
|
var bodies = new List<Body>();
|
||||||
@@ -428,6 +428,15 @@ namespace Barotrauma
|
|||||||
Vertices bodyVertices = new Vertices(triangles[i]);
|
Vertices bodyVertices = new Vertices(triangles[i]);
|
||||||
var newFixture = FixtureFactory.AttachPolygon(bodyVertices, 5.0f, cellBody);
|
var newFixture = FixtureFactory.AttachPolygon(bodyVertices, 5.0f, cellBody);
|
||||||
newFixture.UserData = cell;
|
newFixture.UserData = cell;
|
||||||
|
|
||||||
|
if (newFixture.Shape.MassData.Area < FarseerPhysics.Settings.Epsilon)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError("Invalid triangle created by CaveGenerator (" + triangles[i][0] + ", " + triangles[i][1] + ", " + triangles[i][2] + ")");
|
||||||
|
GameAnalyticsManager.AddErrorEventOnce(
|
||||||
|
"CaveGenerator.GeneratePolygons:InvalidTriangle",
|
||||||
|
GameAnalyticsSDK.Net.EGAErrorSeverity.Warning,
|
||||||
|
"Invalid triangle created by CaveGenerator (" + triangles[i][0] + ", " + triangles[i][1] + ", " + triangles[i][2] + "). Seed: " + level.Seed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cell.body = cellBody;
|
cell.body = cellBody;
|
||||||
|
|||||||
@@ -449,11 +449,11 @@ namespace Barotrauma
|
|||||||
List<VoronoiCell> cellsWithBody = new List<VoronoiCell>(cells);
|
List<VoronoiCell> cellsWithBody = new List<VoronoiCell>(cells);
|
||||||
|
|
||||||
List<Vector2[]> triangles;
|
List<Vector2[]> triangles;
|
||||||
bodies = CaveGenerator.GeneratePolygons(cellsWithBody, out triangles);
|
bodies = CaveGenerator.GeneratePolygons(cellsWithBody, this, out triangles);
|
||||||
|
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
renderer.SetBodyVertices(CaveGenerator.GenerateRenderVerticeList(triangles).ToArray(), generationParams.WallColor);
|
renderer.SetBodyVertices(CaveGenerator.GenerateRenderVerticeList(triangles).ToArray(), generationParams.WallColor);
|
||||||
renderer.SetWallVertices(CaveGenerator.GenerateWallShapes(cells), generationParams.WallColor);
|
renderer.SetWallVertices(CaveGenerator.GenerateWallShapes(cells, this), generationParams.WallColor);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TopBarrier = BodyFactory.CreateEdge(GameMain.World,
|
TopBarrier = BodyFactory.CreateEdge(GameMain.World,
|
||||||
@@ -700,7 +700,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
SeaFloorTopPos = bottomPositions.Max(p => p.Y);
|
SeaFloorTopPos = bottomPositions.Max(p => p.Y);
|
||||||
|
|
||||||
extraWalls = new LevelWall[] { new LevelWall(bottomPositions, new Vector2(0.0f, -2000.0f), backgroundColor) };
|
extraWalls = new LevelWall[] { new LevelWall(bottomPositions, new Vector2(0.0f, -2000.0f), backgroundColor, this) };
|
||||||
|
|
||||||
BottomBarrier = BodyFactory.CreateEdge(GameMain.World,
|
BottomBarrier = BodyFactory.CreateEdge(GameMain.World,
|
||||||
ConvertUnits.ToSimUnits(new Vector2(borders.X, 0)),
|
ConvertUnits.ToSimUnits(new Vector2(borders.X, 0)),
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
private List<Body> bodies;
|
private List<Body> bodies;
|
||||||
|
|
||||||
public LevelWall(List<Vector2> edgePositions, Vector2 extendAmount, Color color)
|
public LevelWall(List<Vector2> edgePositions, Vector2 extendAmount, Color color, Level level)
|
||||||
{
|
{
|
||||||
cells = new List<VoronoiCell>();
|
cells = new List<VoronoiCell>();
|
||||||
for (int i = 0; i < edgePositions.Count - 1; i++)
|
for (int i = 0; i < edgePositions.Count - 1; i++)
|
||||||
@@ -46,13 +46,13 @@ namespace Barotrauma
|
|||||||
cells.Add(wallCell);
|
cells.Add(wallCell);
|
||||||
}
|
}
|
||||||
|
|
||||||
bodies = CaveGenerator.GeneratePolygons(cells, out List<Vector2[]> triangles, false);
|
bodies = CaveGenerator.GeneratePolygons(cells, level, out List<Vector2[]> triangles, false);
|
||||||
|
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
List<VertexPositionTexture> bodyVertices = CaveGenerator.GenerateRenderVerticeList(triangles);
|
List<VertexPositionTexture> bodyVertices = CaveGenerator.GenerateRenderVerticeList(triangles);
|
||||||
|
|
||||||
SetBodyVertices(bodyVertices.ToArray(), color);
|
SetBodyVertices(bodyVertices.ToArray(), color);
|
||||||
SetWallVertices(CaveGenerator.GenerateWallShapes(cells), color);
|
SetWallVertices(CaveGenerator.GenerateWallShapes(cells, level), color);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user