У меня проблема, и я не уверен, как подойти к решению.
Мне нужно создать редактор 2D-карт для моего приложения XNA с определенным количеством плиток.
Скажем, карта будет размером 50x100.
Я не уверен, какую структуру данных использовать для карты, тайлов и как сохранить ее на жестком диске для последующей загрузки.
То, о чем я сейчас думаю, это следующее. Я буду хранить карту в текстовом файле примерно так:
//x, y, ground_type, object_type
0, 0, 1, 0
0, 1, 2, 1
где 0 = трава, 1 = река и т. Д. Для рельефа местности, и 0 = ничего, 1 = стена для типов объектов.
Тогда у меня будет класс Game Component Map, который сможет прочитать этот файл или создать новый с нуля:
class Map : DrawableGameComponent {
//These are things like grass, whater, sand...
Tile ground_tiles[,];
//These are things like walls that can be destroyed
Tile object_tiles[,];
public Map(Game game, String filepath){
for line in open(filepath){
//Set the x,y tile to a new tile
ground_tiles[line[0], line[1]] = new Tile(line[3])
object_tiles[line[0], line[1]] = new Tile(line[4])
}
}
public Map(Game game, int width, int heigth){
//constructor
init_map()
}
private void init_map(){
//initialize all the ground_tiles
//to "grass"
for i,j width, heigth{
ground_tiles[i,j] = new Tile(TILE.GRASS)
}
public override Draw(game_time){
for tile in tiles:
sprite_batch.draw(tile.texture, tile.x, tile.y etc..)
}
Мой класс Tile, вероятно, НЕ будет игровым компонентом.
Я все еще не совсем уверен, как обращаться с обнаружением столкновений, например, между пулей, исходящей от игрока с объектом карты. Должно ли это обрабатываться классом Map или каким-либо супер-классом менеджера?
Любые намеки приветствуются.
Спасибо!