Files
starruler-linux/scripts/shared/maps.as
T
2018-07-17 14:15:37 +02:00

97 lines
1.6 KiB
ActionScript

#priority init 1500
#section server
import settings.map_lib;
import map_generation;
#section shadow
import settings.map_lib;
class MapGeneration {
void initDefs() {}
void init() {}
void tick(double time) {}
};
#section client-side
import util.settings_page;
class MapGeneration : SettingsPage {}
#section all
bool mapsInitialized = false;
class Map : MapGeneration {
uint index;
string id;
string name;
string description;
string dlc;
AnyClass@ mapClass;
int sortIndex = 0;
bool isListed = true;
bool isScenario = false;
bool allowHomeworlds = true;
bool eatsPlayers = false;
bool isUnique = false;
string icon;
Color color;
Map() {
id = __module__;
@mapClass = getClass(this);
if(!mapsInitialized)
addMap(this);
}
Map@ create() {
Map@ other = cast<Map>(mapClass.create());
other.id = id;
other.index = index;
return other;
}
int opCmp(const Map@ other) const {
if(sortIndex < other.sortIndex)
return -1;
if(sortIndex > other.sortIndex)
return 1;
return 0;
}
};
Map@[] Maps;
void addMap(Map@ map) {
Maps.insertLast(map);
}
Map@ getMap(uint index) {
return Maps[index];
}
Map@ getMap(const string& id) {
uint cnt = Maps.length;
for(uint i = 0; i < cnt; ++i)
if(Maps[i].id == id)
return Maps[i];
return null;
}
uint get_mapCount() {
return Maps.length;
}
Map@ get_maps(uint num) {
return Maps[num];
}
void setupPhysics(double size, double fuzz, uint cells) {
@physicsWorld = PhysicsWorld(size, fuzz, cells);
@nodePhysicsWorld = PhysicsWorld(size, fuzz, cells);
}
void init() {
Maps.sortDesc();
for(uint i = 0, cnt = Maps.length; i < cnt; ++i)
Maps[i].index = i;
mapsInitialized = true;
}