////////////////////////
// 3D Interface pointer to point to the Eggs, turtle, sanctuary
//
ENTITY* GPS_Pointer; //assign the correct gps pointer to this pointer.
ENTITY GPS_Pointer1={
type = "Arrow_1.mdl";
layer = 2; // display above view entities with layer 1
//flags = VISIBLE;
// client_id = camera; // same camera parameters as the default view
x = 120; // place 100 quants ahead of the view
y = 0; // center
z = 53; // and top of screen
}
ENTITY GPS_Pointer2={
type = "Arrow_2.mdl";
layer = 2; // display above view entities with layer 1
//flags = VISIBLE;
// client_id = camera; // same camera parameters as the default view
x = 120; // place 100 quants ahead of the view
y = 0; // center
z = 53; // and top of screen
}
ENTITY GPS_Pointer3={
type = "Arrow_3.mdl";
layer = 2; // display above view entities with layer 1
//flags = VISIBLE;
// client_id = camera; // same camera parameters as the default view
x = 120; // place 100 quants ahead of the view
y = 0; // center
z = 53; // and top of screen
}
/////////////////////
// Init_GPS
// This is the code that controls our GPS_Pointer Panel entity.
// When you need the GPS_Pointer, attach this action to a Placeholder entity in the level.
//
// This is the logic behind the following,
// Hide GPS in security panels.
// If they are carrying a turtle, point to the Sanctuary.
// Otherwise point to the eggs in order then the turtle. This way the eggs can guide them to the turtle.
ACTION Init_GPS{
GPS_Pointer=GPS_Pointer1;//default to turtle and eggs.
If (Curr_level==3){GPS_Pointer=GPS_Pointer2;} //life rafts and powercells
If (Curr_level==5){GPS_Pointer=GPS_Pointer3;} //rubbish and barn
GPS_Pointer.Visible=on;
GPS_Pointer.skin=1;
While (ME!=NULL) { //While the level exists, keep the pointer pointing at the relevant objects.
If (Curr_SP==NULL){ //show GPS pointer
GPS_Pointer.Visible=on;
}ELSE{//hide GPS pointer
GPS_Pointer.Visible=off;
}
If (Got_turtle!=0) {//Then aim at sanctuary or maybe eggs in reverse order?
GPS_Pointer.skin=3;
If (Sanctuary_Ent!=NULL) {//Point at this egg
vec_set(temp,Sanctuary_ent.x);
}
}ELSE{
If (Egg1_Ent!=NULL) {//Point at this egg
GPS_Pointer.skin=1;
vec_set(temp,Egg1_ent.x);
}ELSE{
If (Egg2_Ent!=NULL) {//Point at this egg
GPS_Pointer.skin=1;
vec_set(temp,Egg2_ent.x);
}ELSE{
If (Egg3_Ent!=NULL) {//Point at this egg
GPS_Pointer.skin=1;
vec_set(temp,Egg3_ent.x);
}ELSE{
If (Egg4_Ent!=NULL) {//Point at this egg
GPS_Pointer.skin=1;
vec_set(temp,Egg4_ent.x);
}ELSE{
If (Egg5_Ent!=NULL) {//Point at this egg
GPS_Pointer.skin=1;
vec_set(temp,Egg5_ent.x);
}ELSE{
If (Egg6_Ent!=NULL) {//Point at this egg
GPS_Pointer.skin=1;
vec_set(temp,Egg6_ent.x);
}ELSE{
If (Turtle_Ent!=NULL) {//Point at this egg
GPS_Pointer.skin=2;
vec_set(temp,Turtle_ent.x);
}
}
}
}
}
}
}
}
//Do this once after temp set above to correct entity note:- must be no waits to modify temp
vec_sub(temp,camera.x);
vec_to_angle(MY_Angle.pan,temp); // now MY looks at YOU
GPS_Pointer.Pan=MY_ANGLE.PAN-Camera.pan; // -camera.pan because the Entity panel is referenced to the camera angle.
Wait(1);
}
}