39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
//\$ Copyright 2015-22, Code Respawn Technologies Pvt Ltd - All Rights Reserved \$//\n
|
|
using UnityEngine;
|
|
using DungeonArchitect;
|
|
using DungeonArchitect.Utils;
|
|
using DungeonArchitect.Builders.SimpleCity;
|
|
|
|
[System.Serializable]
|
|
public class SkyscraperRange
|
|
{
|
|
public float startDistance;
|
|
public float endDistance;
|
|
public string markerName;
|
|
};
|
|
|
|
public class CitySkyscraperInserter : DungeonEventListener {
|
|
public SkyscraperRange[] skyscraperRanges;
|
|
|
|
public override void OnDungeonMarkersEmitted(Dungeon dungeon, DungeonModel model, LevelMarkerList markers) {
|
|
var cityModel = model as SimpleCityDungeonModel;
|
|
var width = cityModel.CityWidth;
|
|
var height = cityModel.CityHeight;
|
|
var center = Vector3.Scale(new Vector3 (width / 2.0f, 0, height / 2.0f), new Vector3 (cityModel.Config.CellSize.x, 0, cityModel.Config.CellSize.y));
|
|
center += dungeon.transform.position;
|
|
|
|
foreach (var marker in markers) {
|
|
if (marker.SocketType == SimpleCityDungeonMarkerNames.House) {
|
|
var distanceFromCenter = (Matrix.GetTranslation (ref marker.Transform) - center).magnitude;
|
|
foreach (var rangeInfo in skyscraperRanges) {
|
|
if (distanceFromCenter >= rangeInfo.startDistance && distanceFromCenter <= rangeInfo.endDistance) {
|
|
marker.SocketType = rangeInfo.markerName;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|