DEFINE _levelNr,SKILL1;
DEFINE _levelPos,SKILL2;
bmap loading_level_bmap = <loading_level.tga>;
panel loading_level_panel {
bmap = loading_level_bmap;
flags = refresh,d3d,overlay;
}
function load_new_level (lName,entPosName) {
loading_level_panel.pos_x = (screen_size.x - bmap_width(loading_level_bmap))/2;
loading_level_panel.pos_y = (screen_size.y - bmap_height(loading_level_bmap))/2;
loading_level_panel.visible = on;
wait(2);
my = null; // make this action a global function
gid01_level_state = gid01_level_not_loaded;
level_load(lName);
wait(2);
you = ptr_for_name (entPosName);
me = ptr_for_name ("gfinal");
if (me != null && you != null) {
vec_set(me.x, you.x);
vec_set(me.pan, you.pan);
vec_set(plBiped01_force_vec,nullvector);
vec_set(plBiped01_ang_force_vec,nullvector);
vec_set(plBiped01_flag_array,nullvector);
panAtStart = 0;
playerTargetPan = you.pan;
lastPlayerTargetPan = playerTargetPan;
}
if (me != null) {
if(str_cmpi (currentPlayerModel, "punk") == 1) {
ent_morph(me,punk_model);
}
}
getInFront();
gid01_level_state = gid01_level_loaded;
wait(2);
loading_level_panel.visible = off;
bmap_purge(loading_level_bmap);
}
string levelString[30];
string levelNumber[30];
string entPosString[30];
string entPosNumber[30];
function load_level_events {
if(EVENT_TYPE == event_impact) {
if (you == plSelect_curr_ent) {
my.enable_impact = off;
my.passable = on;
str_cpy(levelString,"level_");
if (my._levelNr < 100) {
str_cat(levelString,"0");
}
if (my._levelNr < 10) {
str_cat(levelString,"0");
}
str_for_num(levelNumber,my._levelNr);
str_cat(levelString,levelNumber);
str_cat(levelString,".wmb");
str_cpy(entPosString,"levelPos_");
if (my._levelPos < 100) {
str_cat(entPosString,"0");
}
if (my._levelPos < 10) {
str_cat(entPosString,"0");
}
str_for_num(entPosNumber,my._levelPos);
str_cat(entPosString,entPosNumber);
load_new_level(levelString,entPosString);
}
}
}
action level_warper {
my.polygon = on;
while(plSelect_curr_ent == NULL) {
wait(1);
}
my.event = load_level_events;
my.enable_impact = on;
}