private static Coordinates GroundCoordinates(double x, double z, GetSnapshotHeight ground) { double y = ground == null ? 0: (double)ground((float)x, (float)z); y += heightBuffer; return(new Coordinates(x, y, z)); }
public static void Generate(Arguments arguments, float fieldSize, GetSnapshotHeight ground = null, List <UnitSnapshot> units = null, List <FieldSnapshot> fields = null) { Debug.Log("Generating snapshot."); var snapshot = CreateSnapshot(ground, fieldSize, units, fields); Debug.Log($"Writing snapshot to: {arguments.OutputPath}"); snapshot.WriteToFile(arguments.OutputPath); }
public static void Generate(Arguments arguments, GetSnapshotHeight ground = null) { Debug.Log("Generating snapshot."); var snapshot = CreateSnapshot(ground); Debug.Log($"Writing snapshot to: {arguments.OutputPath}"); snapshot.WriteToFile(arguments.OutputPath); }
private static void AddUnits(Snapshot snapshot, GetSnapshotHeight ground, List <UnitSnapshot> units) { foreach (var u in units) { var template = BaseUnitTemplate.CreateBaseUnitEntityTemplate(u.side, GroundCoordinates(u.pos.x, u.pos.y, u.pos.z), u.type); snapshot.AddEntity(template); } }
private static void AddCubeGrid(Snapshot snapshot, int cubeCount, GetSnapshotHeight ground = null) { // Calculate grid size var gridLength = (int)Math.Ceiling(Math.Sqrt(cubeCount)); if (gridLength % 2 == 1) // To make sure nothing is in (0, 0) { gridLength += 1; } var cubesToSpawn = cubeCount; for (var x = -gridLength + 1; x <= gridLength - 1; x += 2) { for (var z = -gridLength + 1; z <= gridLength - 1; z += 2) { // Leave the centre empty if (x == 0 && z == 0) { continue; } // Exit when we've hit our cube limit if (cubesToSpawn-- <= 0) { return; } UnitSide side = x < 0 ? UnitSide.A : UnitSide.B; int nx; if (x < 0) { nx = x - 3; } else { nx = x + 3; } double pos_x = nx * scale; double pos_z = z * scale; var entityTemplate = BaseUnitTemplate.CreateBaseUnitEntityTemplate(side, GroundCoordinates(pos_x, pos_z, ground), UnitType.Soldier); snapshot.AddEntity(entityTemplate); } } AddDefaultUnits(snapshot, ground); }
public static Snapshot GenerateGroundSnapshot(float fieldSize, GetSnapshotHeight ground = null) { var snapshot = new Snapshot(); int count = (int)Mathf.Round(fieldSize / standardSize) * 2; for (int i = 0; i <= count; i++) { for (int j = 0; j <= count; j++) { var length_x = standardSize * (i - (count - 1) / 2.0f); var length_z = standardSize * (j - (count - 1) / 2.0f); AddPlayerSpawner(snapshot, GroundCoordinates(length_x, length_z, ground)); } } return(snapshot); }
private static void AddUnits(Snapshot snapshot, GetSnapshotHeight ground, List <UnitSnapshot> units) { foreach (var u in units) { var template = BaseUnitTemplate.CreateBaseUnitEntityTemplate(u.side, u.type, GroundCoordinates(u.pos.x, u.pos.y, u.pos.z), u.rotate.ToCompressedQuaternion()); if (u.attachments != null) { foreach (var attach in u.attachments) { attach.AddComponent(template); } } snapshot.AddEntity(template); //if (u.type == UnitType.HeadQuarter) //{ // template = BaseUnitTemplate.CreateBaseUnitEntityTemplate(u.side, new Coordinates(u.pos.x, FixedParams.StrategyHeight, u.pos.z), UnitType.ArmyCloud); //} } }
private static void AddDefaultUnits(Snapshot snapshot, GetSnapshotHeight ground = null) { var gridLength = (int)Math.Ceiling(Math.Sqrt(16)); var len = gridLength * scale; var templateA = BaseUnitTemplate.CreateBaseUnitEntityTemplate(UnitSide.A, GroundCoordinates(-len * 3, 0, ground), UnitType.Stronghold); var templateB = BaseUnitTemplate.CreateBaseUnitEntityTemplate(UnitSide.B, GroundCoordinates(len * 3, 0, ground), UnitType.Stronghold); snapshot.AddEntity(templateA); snapshot.AddEntity(templateB); var templateCa = BaseUnitTemplate.CreateBaseUnitEntityTemplate(UnitSide.A, GroundCoordinates(-len * 2, 0, ground), UnitType.Commander); var templateCb = BaseUnitTemplate.CreateBaseUnitEntityTemplate(UnitSide.B, GroundCoordinates(len * 2, 0, ground), UnitType.Commander); snapshot.AddEntity(templateCa); snapshot.AddEntity(templateCb); var templateHa = BaseUnitTemplate.CreateBaseUnitEntityTemplate(UnitSide.A, GroundCoordinates(-len * 3.5, 0, ground), UnitType.HeadQuarter); var templateHb = BaseUnitTemplate.CreateBaseUnitEntityTemplate(UnitSide.B, GroundCoordinates(len * 3.5, 0, ground), UnitType.HeadQuarter); snapshot.AddEntity(templateHa); snapshot.AddEntity(templateHb); }
private static Snapshot CreateSnapshot(GetSnapshotHeight ground = null, float fieldSize = standardSize, List <UnitSnapshot> units = null, List <FieldSnapshot> fields = null) { var snapshot = new Snapshot(); int count = (int)Mathf.Round(fieldSize / standardSize) * 2; for (int i = 0; i <= count; i++) { for (int j = 0; j <= count; j++) { var length_x = standardSize * (i - (count - 1) / 2.0f); var length_z = standardSize * (j - (count - 1) / 2.0f); AddPlayerSpawner(snapshot, GroundCoordinates(length_x, length_z, ground)); } } AddWorldTimer(snapshot, Coordinates.Zero); if (units == null) { AddDefaultUnits(snapshot, ground); } else { AddUnits(snapshot, ground, units); } if (fields == null) { AddField(snapshot, Coordinates.Zero); } else { AddFields(snapshot, fields); } return(snapshot); }