114 lines
8.1 KiB
C#
114 lines
8.1 KiB
C#
|
|
using Marro.PacManUdon;
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
|
|
public class MazeDefinitionGenerator : UdonSharpBehaviour
|
|
{
|
|
void Start()
|
|
{
|
|
GetMazeMap();
|
|
}
|
|
|
|
private void GetMazeMap()
|
|
{
|
|
var pellets = GetComponentsInChildren<Pellet>(includeInactive: true);
|
|
|
|
var width = 28;
|
|
var height = 31;
|
|
int[] map = new int[width * height];
|
|
int[] pelletLocations = new int[pellets.Length];
|
|
var collisionMap = GetCollisionMap();
|
|
|
|
for (int i = 0; i < map.Length; i++)
|
|
{
|
|
if (collisionMap[i])
|
|
{
|
|
map[i] = (int)PacManTileType.Wall;
|
|
}
|
|
else
|
|
{
|
|
map[i] = (int)PacManTileType.Empty;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < pellets.Length; i++)
|
|
{
|
|
Pellet pellet = pellets[i];
|
|
var position = GridMover.PositionToGrid(new Vector2(pellet.transform.localPosition.x, - pellet.transform.localPosition.y));
|
|
var index = (int)position.x + (int)position.y * width;
|
|
map[index] = i;
|
|
pelletLocations[i] = index;
|
|
}
|
|
|
|
var result = "";
|
|
for (int i = 0; i < map.Length; i++)
|
|
{
|
|
if (map[i] < 0)
|
|
{
|
|
result += $"{map[i]:00}, ";
|
|
}
|
|
else
|
|
{
|
|
result += $"{map[i]:000}, ";
|
|
}
|
|
|
|
if (i % width == width - 1)
|
|
{
|
|
result += "\n";
|
|
}
|
|
}
|
|
|
|
Debug.Log(result);
|
|
|
|
result = "";
|
|
for (int i = 0; i < pelletLocations.Length; i++)
|
|
{
|
|
result += $"{pelletLocations[i]:000}, ";
|
|
|
|
if (i % 16 == 15)
|
|
{
|
|
result += "\n";
|
|
}
|
|
}
|
|
|
|
Debug.Log(result);
|
|
}
|
|
|
|
public static bool[] GetCollisionMap() => new bool[] {
|
|
true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true ,
|
|
true, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, true ,
|
|
true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true ,
|
|
true, false, true, false, false, true, false, true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, true, false, false, true, false, true ,
|
|
true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true ,
|
|
true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true ,
|
|
true, false, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, false, true ,
|
|
true, false, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, false, true ,
|
|
true, false, false, false, false, false, false, true, true, false, false, false, false, true, true, false, false, false, false, true, true, false, false, false, false, false, false, true ,
|
|
true, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true, true, true, false, true, true, true, true, true, true ,
|
|
false, false, false, false, false, true, false, true, true, true, true, true, false, true, true, false, true, true, true, true, true, false, true, false, false, false, false, false ,
|
|
false, false, false, false, false, true, false, true, true, false, false, false, false, false, false, false, false, false, false, true, true, false, true, false, false, false, false, false ,
|
|
false, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, false, false, false, false, false ,
|
|
true, true, true, true, true, true, false, true, true, false, true, false, false, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true ,
|
|
false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false ,
|
|
true, true, true, true, true, true, false, true, true, false, true, false, false, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true ,
|
|
false, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, false, false, false, false, false ,
|
|
false, false, false, false, false, true, false, true, true, false, false, false, false, false, false, false, false, false, false, true, true, false, true, false, false, false, false, false ,
|
|
false, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, false, false, false, false, false ,
|
|
true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true ,
|
|
true, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, true ,
|
|
true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true ,
|
|
true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true ,
|
|
true, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, true ,
|
|
true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true ,
|
|
true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true ,
|
|
true, false, false, false, false, false, false, true, true, false, false, false, false, true, true, false, false, false, false, true, true, false, false, false, false, false, false, true ,
|
|
true, false, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, false, true ,
|
|
true, false, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, false, true ,
|
|
true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true ,
|
|
true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true
|
|
};
|
|
}
|