///////////////////////////////
// SKATEBOARD-CODE v.1.0 //
// //
// written by Patrick Ratz //
///////////////////////////////
#include <acknex.h>
#include <default.c>
///////////////////////////////
var skate_move = 1;
var skate_ramp = 0;
var skate_grav = 1;
var ramp_switch = 1;
var i;
ENTITY* skater;
PANEL* my_info=
{
digits(35, 10, "move = %0.f", *, 1, skate_move);
digits(35, 19, "ramp = %0.f", *, 1, skate_ramp);
digits(35, 28, "grav = %0.f", *, 1, skate_grav);
digits(35, 37, "scha = %0.f", *, 1, ramp_switch);
flags = SHOW;
}
function main()
{
vec_set(screen_size,vector(800,400,0));
vec_set(screen_color,vector(50,1,1)); // dark blue
vec_set(sky_color,vector(50,1,1)); // dark blue
video_window(NULL,NULL,0,"My New Game");
d3d_antialias = 1;
shadow_stencil = 3;
level_load("skate.wmb");
}
//////////////////////////////////////////////
function skate_event();
action Skater()
{
skater = my;
skater.pan = my.pan;
skater.roll = my.roll;
skater.tilt = my.tilt;
my.emask |= (ENABLE_BLOCK | ENABLE_ENTITY);
my.event = skate_event;
c_setminmax(my);
VECTOR vFeet;
vec_for_min(vFeet,me);
while(1)
{
if(skate_grav == 1)
{
c_trace(my.x,vector(my.x,my.y,my.z-1000),USE_POLYGON);
my.z = hit.z - vFeet.z;
}
if(my.z > 180 && skate_ramp == 0)
{
skate_ramp = 1; // move back !!
}
if(my.z > 180 && skate_ramp == 1 && ramp_switch == 2) // again , agian ;-)..
{
skate_ramp = 0; // move front !!
}
//vorwärts
if(skate_move == 1 && skate_ramp == 0 )
{
c_move(my,vector(5*time_step,0,0),nullvector,USE_POLYGON);
}
//rückwärts//
if(skate_ramp == 1 && skate_move == 1)
{
c_move(my,vector(-5*time_step,0,0),nullvector,USE_POLYGON);
}
//
wait(1);
}
}
function skate_event()
{
// is on the ramp -> drive realistic up
if(event_type == EVENT_ENTITY && skate_ramp == 0)
{
my.tilt += 5*time_step;
skate_grav = 0;
}
// is down the ramp -> drive realistic down
if(event_type == EVENT_ENTITY && skate_ramp == 1)
{
my.tilt -= 5*time_step;
skate_grav = 0;
}
// is on the ground -> need for "over the ramp (under)" to the ground
if(event_type == EVENT_BLOCK && skate_ramp == 1)
{
my.tilt = 0;
skate_grav = 1;
ramp_switch = 2;
}
if(event_type == EVENT_BLOCK && ramp_switch == 2)
{
my.tilt = 0;
skate_grav = 1;
}
}