62 lines
1.5 KiB
C#
62 lines
1.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
[CreateAssetMenu(fileName = "HomeMapSO", menuName = "GameData/HomeMap")]
|
|
public class HomeMapSO : ScriptableObject
|
|
{
|
|
public Vector2Int map_size = new Vector2Int(10, 10);
|
|
public List<GridData> grid_list = new List<GridData>();
|
|
|
|
|
|
// enum
|
|
public enum RoomType
|
|
{
|
|
None,
|
|
BugStatueRoom,
|
|
}
|
|
|
|
// serializable
|
|
[System.Serializable]
|
|
public class GridData
|
|
{
|
|
public Vector2Int position;
|
|
public bool is_activation;
|
|
public int room_id;
|
|
public RoomType room_type;
|
|
}
|
|
|
|
// function
|
|
// 生成默认地图数据
|
|
public void initialize_map_data()
|
|
{
|
|
grid_list.Clear();
|
|
for (var x = -map_size.x / 2; x <= map_size.x / 2; x++)
|
|
{
|
|
for (var y = -map_size.y / 2; y <= map_size.y / 2; y++)
|
|
{
|
|
grid_list.Add(new GridData
|
|
{
|
|
position = new Vector2Int(x, y),
|
|
is_activation = false,
|
|
room_id = -1
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
// 获取某个位置的数据
|
|
public GridData get_data_by_position(Vector2Int position)
|
|
{
|
|
return grid_list.Find(item => item.position == position);
|
|
}
|
|
|
|
// 标记建造点
|
|
public void create_room(Vector2Int position, int id, RoomType room_type)
|
|
{
|
|
var grid = get_data_by_position(position);
|
|
grid.is_activation = true;
|
|
grid.room_id = id;
|
|
grid.room_type = room_type;
|
|
}
|
|
} |