Пример #1
0
int try_uncrouch(PlayerType * p)
{
    float x1 = p->p.x + 0.45f;
    float x2 = p->p.x - 0.45f;
    float y1 = p->p.y + 0.45f;
    float y2 = p->p.y - 0.45f;
    float z1 = p->p.z + 2.25f;
    float z2 = p->p.z - 1.35f;

    //first check if player can lower feet (in midair)
    if(p->airborne && !(
        clipbox(x1, y1, z1) ||
        clipbox(x1, y2, z1) ||
        clipbox(x2, y1, z1) ||
        clipbox(x2, y2, z1)))
        return(1);
    //then check if they can raise their head
    else if(!(clipbox(x1, y1, z2) ||
        clipbox(x1, y2, z2) ||
        clipbox(x2, y1, z2) ||
        clipbox(x2, y2, z2)))
    {
        p->p.z -= 0.9f;
        p->e.z -= 0.9f;
        return(1);
    }
    return(0);
}
Пример #2
0
void draw_pager( GtkWidget *widget )
{
  if( show_all_ws )
    box( bg, TRUE, 0, 0, width, height );
  else
    box( bg, TRUE, -ws_x, -ws_y, width+ws_x, height+ws_y );

  /* highlight the current viewport with color hilit background */
  if(xmark ==0)
    box( hilit_bg, TRUE, vp_x, vp_y, vp_width, vp_height );

  /* draw the windows */
  if(hatch == 0)
  {
    for( w = lowest; w >= windows; w-- ) {
      clipbox( (w->id == focus_id) ? focus_win : win, TRUE,
               w->w.x+1, w->w.y+1, w->w.width-2, w->w.height-2, &w->c );
      clipbox( win_border, FALSE,
               w->w.x, w->w.y, w->w.width-1, w->w.height-1, &w->c );
    }
  } else {
    for( w = lowest; w >= windows; w-- ) {
      int i;
      if(w->id == focus_id)
      {
        for(i=((w->w.width > w->w.height)?w->w.width:w->w.height)>>1; i>=1 ; i-=2)
          clipbox(focus_win, FALSE, w->w.x+i, w->w.y+1, w->w.width-1-(i<<1), w->w.height-1, &w->c );
      } else {
        for(i=((w->w.width > w->w.height)?w->w.width:w->w.height)>>1; i>=1 ; i-=2)
          clipbox(win,       FALSE, w->w.x+1, w->w.y+i, w->w.width-1, w->w.height-1-(i<<1), &w->c );
      }
/*      for(i=((w->w.width > w->w.height)?w->w.width:w->w.height)>>1; i>=1 ; i-=2)
        clipbox( (w->id == focus_id) ? focus_win : win, FALSE, w->w.x+i, w->w.y+i, w->w.width-1-(i<<1), w->w.height-1-(i<<1), &w->c );
        clipbox( (w->id == focus_id) ? focus_win : win, FALSE, w->w.x+1, w->w.y+1, w->w.width-3, w->w.height-3, &w->c );
        clipbox( (w->id == focus_id) ? focus_win : win, FALSE, w->w.x+2, w->w.y+2, w->w.width-5, w->w.height-5, &w->c );
        clipbox( (w->id == focus_id) ? focus_win : win, FALSE, w->w.x+3, w->w.y+3, w->w.width-7, w->w.height-7, &w->c ); */
        clipbox( win_border,                            FALSE, w->w.x, w->w.y, w->w.width-1, w->w.height-1, &w->c );
    }
  }
static void WinClipAndDrawLine( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int width )
{
    GRLastMoveToX = x2;
    GRLastMoveToY = y2;

    if( ClipBox )
    {
        EDA_RECT clipbox(*ClipBox);
        clipbox.Inflate(width/2);
        if( clipLine( &clipbox, x1, y1, x2, y2 ) )
            return;
    }

    DC->DrawLine( x1, y1, x2, y2 );
}
Пример #4
0
static void WinClipAndDrawLine( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
                                EDA_COLOR_T Color, int width = 1 )
{
    GRLastMoveToX = x2;
    GRLastMoveToY = y2;

    if( ClipBox )
    {
        EDA_RECT clipbox(*ClipBox);
        clipbox.Inflate(width/2);
        if( clipLine( &clipbox, x1, y1, x2, y2 ) )
            return;
    }

    GRSetColorPen( DC, Color, width );
    DC->DrawLine( x1, y1, x2, y2 );
}
Пример #5
0
//player movement with autoclimb
void boxclipmove(PlayerType * p)
{
	float offset, m, f, nx, ny, nz, z;
	long climb = 0;

	f = fsynctics*32.f;
	nx = f*p->v.x+p->p.x;
	ny = f*p->v.y+p->p.y;

	if(p->crouch)
	{
		offset = 0.45f;
		m = 0.9f;
	}
	else
	{
		offset = 0.9f;
		m = 1.35f;
	}

	nz = p->p.z + offset;

	if(p->v.x < 0) f = -0.45f;
	else f = 0.45f;
	z=m;
	while(z>=-1.36f && !clipbox(nx+f, p->p.y-0.45f, nz+z) && !clipbox(nx+f, p->p.y+0.45f, nz+z))
		z-=0.9f;
	if(z<-1.36f) p->p.x = nx;
	else if(!p->crouch && p->f.z<0.5f && !p->sprint)
	{
		z=0.35f;
		while(z>=-2.36f && !clipbox(nx+f, p->p.y-0.45f, nz+z) && !clipbox(nx+f, p->p.y+0.45f, nz+z))
			z-=0.9f;
		if(z<-2.36f)
		{
			p->p.x = nx;
			climb=1;
		}
		else p->v.x = 0;
	}
	else p->v.x = 0;

	if(p->v.y < 0) f = -0.45f;
	else f = 0.45f;
	z=m;
	while(z>=-1.36f && !clipbox(p->p.x-0.45f, ny+f, nz+z) && !clipbox(p->p.x+0.45f, ny+f, nz+z))
		z-=0.9f;
	if(z<-1.36f) p->p.y = ny;
	else if(!p->crouch && p->f.z<0.5f && !p->sprint && !climb)
	{
		z=0.35f;
		while(z>=-2.36f && !clipbox(p->p.x-0.45f, ny+f, nz+z) && !clipbox(p->p.x+0.45f, ny+f, nz+z))
			z-=0.9f;
		if(z<-2.36f)
		{
			p->p.y = ny;
			climb=1;
		}
		else p->v.y = 0;
	}
	else if(!climb)
		p->v.y = 0;

	if(climb)
	{
		p->v.x *= 0.5f;
		p->v.y *= 0.5f;
		p->lastclimb = ftotclk;
		nz--;
		m = -1.35f;
	}
	else
	{
		if(p->v.z < 0)
			m=-m;
		nz += p->v.z*fsynctics*32.f;
	}

	p->airborne = 1;

	if(clipbox(p->p.x-0.45f, p->p.y-0.45f, nz+m) ||
		clipbox(p->p.x-0.45f, p->p.y+0.45f, nz+m) ||
		clipbox(p->p.x+0.45f, p->p.y-0.45f, nz+m) ||
		clipbox(p->p.x+0.45f, p->p.y+0.45f, nz+m))
	{
		if(p->v.z >= 0)
		{
			p->wade = p->p.z > 61;
			p->airborne = 0;
		}
		p->v.z = 0;
	}
	else
		p->p.z = nz-offset;

	reposition_player(p, &p->p);
}