SitRep makeSitRep(Unit *u[NUM], int m) {
    if (!u[m])exit(5);
    SitRep s;
    int i, j;
    for (i = 0; i < ROWS; ++i)for (j = 0; j < COLS; ++j)s.board[i][j] = b[i][j];
    s.nearestEnemyCrown = getNearestEnemyCrown(u, m);
    s.nearestEnemy = getNearestEnemy(u, m);
    s.anyOpenSpace = anyDir(u[m]);
    s.turnNumber = numTurns;
    return s;
}
Exemple #2
0
void renderWorld(int vx, int vy, int vwidth, int vheight)
{
	if(!redraw){
		return;
	}

	clear();

	const char_t *p = getPlayer();
	int dmgcol = 255;
	if(p->stats.health < p->stats.max_health / 2){
		dmgcol = p->stats.health / ((float)p->stats.max_health) * 512;
	}

	int dis;
	const char_t *n = getNearestEnemy(&dis);

	for(int x = 0; x < vwidth; x++){
		for(int y = 0; y < vheight; y++){
			int rx = p->x + x - vwidth / 2;
			int ry = p->y + y - vheight / 2;
			tile_t *t = getTile(&map, rx, ry);
			char c = getCharFromTile(t);

			int nearestc = 1;
			if(t->c == n){
				nearestc = 0;
			}
			
			if(p->stats.health <= 0){
				drawCharBack(x + vx, y + vy, 64, 0, 0);
				drawChar(x + vx, y + vy, c, 255, 0, 0);
			}else{
				drawChar(x + vx, y + vy, c, 255, dmgcol, dmgcol * nearestc);
			}
		}
	}

	redraw = false;
}