yo tengo una clase que aún no termino, y que derrepente esta echa de la manera mas horrible possible. pero les puede dar una idea de lo básico del Sistema de mapas de nvgt:
class MAP {
private int maxx;
private int maxy;
private int maxz;
private string map_name;
private string tyle_default;
private coordinate_map instancia_map;
MAP (const string &in map_name, const int maxx, const int maxy, const int maxz, const string &in tyle_default){
this.map_name = map_name;
this.maxx = maxx;
this.maxy = maxy;
this.maxz = maxz;
this.tyle_default = tyle_default;
this.instancia_map.add_area(0, this.maxx, 0, this.maxy, 0, 0, 0, any("platform"), "platform", this.tyle_default, "", 1);
}
void get_coordinates(int &out maxx, int &out maxy, int &out maxz) {
maxx = this.maxx;
maxy = this.maxy;
maxz = this.maxz;
}
void add_platform(const int minx, const int maxx, const int miny, const int maxy, const int minz, const int maxz, const string &in platform_name) {
instancia_map.add_area(minx, maxx, miny, maxy, minz, maxz, 0, any("platform"), "platform", platform_name, "", 1);
}
string get_tyles(const int x, const int y, const int z, string &out tyle_name) {
coordinate_map_area@[] tyle = instancia_map.get_areas(x, y, z);
int[] tyle_list;
for (int i = 0; i<tyle.length(); i++) {
if(tyle[i].data1 == "platform" || tyle[i].data1 == "wall") {
tyle_list.insert_last(i);
}
}
if(tyle_list.length() >1) {
int indice1 = tyle_list.length() -1;
int indice2 = tyle_list[indice1];
tyle_name = tyle[indice2].data2;
return tyle[indice2].data1;
}
else {
int indice = tyle_list[0];
tyle_name = tyle[indice].data2;
return tyle[indice].data1;
}
}
void add_zone(const int minx, const int maxx, const int miny, const int maxy, const int minz, const int maxz, const string &in zone) {
instancia_map.add_area(minx, maxx, miny, maxy, minz, maxz, 0, any("zone"), "zone", zone, "", 1);
}
string get_zone(const int x, const int y, const int z) {
coordinate_map_area@[] zones = instancia_map.get_areas(x, y, z);
int[] zone_list;
for (int i = 0; i<zones.length(); i++) {
if(zones[i].data1 == "zone") {
zone_list.insert_last(i);
}
}
if (zone_list.length() >1) {
int indice1 = zone_list.length() -1;
int indice2 = zone_list[indice1];
return zones[indice2].data2;
}
else {
int indice = zone_list[0];
return zones[indice].data2;
}
}
}
Aún me falta añadir la parte de paredes, y algunas cosas más. pero como dije, les puede dar luces de como puede funcionar el Sistema de mapas de nvgt.
Si alguien quiere darme ideas de como mejorarlo, mi permanente o privado están disponibles.