Exemple #1
0
/****************************************************************************
  Return color for overview map tile.
****************************************************************************/
static struct color *overview_tile_color(struct tile *ptile)
{
  if (overview.layers[OLAYER_CITIES]) {
    struct city *pcity = tile_city(ptile);

    if (pcity) {
      if (NULL == client.conn.playing
          || city_owner(pcity) == client.conn.playing) {
	return get_color(tileset, COLOR_OVERVIEW_MY_CITY);
      } else if (pplayers_allied(city_owner(pcity), client.conn.playing)) {
	/* Includes teams. */
	return get_color(tileset, COLOR_OVERVIEW_ALLIED_CITY);
      } else {
	return get_color(tileset, COLOR_OVERVIEW_ENEMY_CITY);
      }
    }
  }
  if (overview.layers[OLAYER_UNITS]) {
    struct unit *punit = find_visible_unit(ptile);

    if (punit) {
      if (NULL == client.conn.playing
          || unit_owner(punit) == client.conn.playing) {
	return get_color(tileset, COLOR_OVERVIEW_MY_UNIT);
      } else if (pplayers_allied(unit_owner(punit), client.conn.playing)) {
	/* Includes teams. */
	return get_color(tileset, COLOR_OVERVIEW_ALLIED_UNIT);
      } else {
	return get_color(tileset, COLOR_OVERVIEW_ENEMY_UNIT);
      }
    }
  }
  if (overview.layers[OLAYER_BORDERS]) {
    struct player *owner = tile_owner(ptile);

    if (owner) {
      if (overview.layers[OLAYER_BORDERS_ON_OCEAN]) {
        return get_player_color(tileset, owner);
      } else if (!is_ocean_tile(ptile)) {
        return get_player_color(tileset, owner);
      }
    }
  }
  if (overview.layers[OLAYER_RELIEF] && tile_terrain(ptile) != T_UNKNOWN) {
    return get_terrain_color(tileset, tile_terrain(ptile));
  }
  if (overview.layers[OLAYER_BACKGROUND] && tile_terrain(ptile) != T_UNKNOWN) {
    if (is_ocean_tile(ptile)) {
      return get_color(tileset, COLOR_OVERVIEW_OCEAN);
    } else {
      return get_color(tileset, COLOR_OVERVIEW_LAND);
    }
  }

  return get_color(tileset, COLOR_OVERVIEW_UNKNOWN);
}
Exemple #2
0
void draw_stars(const void *data)
{
	const struct slist *t;
	struct marfitude_pos pos;
	const float *c;

	if(data) {}
	marfitude_get_pos(&pos);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE);

	slist_foreach(t, marfitude_get_hitnotes()) {
		struct marfitude_note *sn = t->data;

		glPushMatrix();
		marfitude_translatev(&sn->pos);
		setup_billboard();

		c = get_player_color(marfitude_get_ac()[sn->col].player);
		glColor4fv(c);
		if(sn->tic - pos.tic <= 0)
			glBindTexture(GL_TEXTURE_2D, stars[0]);
		else
			glBindTexture(GL_TEXTURE_2D, stars[1]);

		glBegin(GL_QUADS); {
			glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5, 0.0);
			glTexCoord2f(1.0, 0.0); glVertex3f(0.5, -0.5, 0.0);
			glTexCoord2f(1.0, 1.0); glVertex3f(0.5, 0.5, 0.0);
			glTexCoord2f(0.0, 1.0); glVertex3f(-0.5, 0.5, 0.0);
		} glEnd();

		glPopMatrix();
	}
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
Exemple #3
0
/**************************************************************************
  Returns data from item
**************************************************************************/
QVariant plr_item::data(int column, int role) const
{
  QPixmap *pix;
  struct player_dlg_column *pdc;

  if (role == Qt::UserRole) {
    return QVariant::fromValue((void *)ipplayer);
  }
  if (role != Qt::DisplayRole) {
    return QVariant();
  }
  pdc = &player_dlg_columns[column];
  switch (player_dlg_columns[column].type) {
  case COL_FLAG:
    pix = get_nation_flag_sprite(tileset, nation_of_player(ipplayer))->pm;
    return *pix;
    break;
  case COL_COLOR:
    return get_player_color(tileset, ipplayer)->qcolor;
    break;
  case COL_BOOLEAN:
    return pdc->bool_func(ipplayer);
    break;
  case COL_TEXT:
  case COL_RIGHT_TEXT:
    return pdc->func(ipplayer);
  default:
    return QVariant();
  }
  return QVariant();
}
Exemple #4
0
// -------------------------------------------------------------------
// A creature dwelling on the adventure map
// -------------------------------------------------------------------
bool t_adv_dwelling::read_from_map( std::streambuf& buffer, t_progress_handler* handler )
{
	int format_version = get< t_uint16 >( buffer );
	if ( format_version < 0 || format_version > k_current_map_format_version )
		return false;

	if (!t_owned_scriptable_adv_object::read_from_map( buffer, handler, to_base_class_map_format_version( format_version )))
		return false;

	set_initial_values( get_creature_type() );
	if (get_player_color() != k_player_gray)
		clear();

	return true;
}
Exemple #5
0
void create_path(const void *data)
{
	const struct marfitude_player *p = data;
	const float *pc;
	struct line *l = &lines[p->num];
	int pcount;
	int row;
	int col;

	pc = get_player_color(p->num);
	l->color = pc;
	col = p->channel;

	/* The +1 is because we may add a point at the first row of the AP
	 * if there isn't one there already.
	 */
	if(p->ap.notesTotal + 1 > l->num_pts) {
		l->num_pts = p->ap.notesTotal + 1;
		l->pts = realloc(l->pts, sizeof(union vector) * l->num_pts);
	}

	l->pts_used = p->ap.notesTotal + 1;
	l->pts[0].v[0] = col;
	l->pts[0].v[1] = 0.0;
	l->pts[0].v[2] = p->ap.startTic;
	marfitude_evalvec(&l->pts[0]);

	pcount = 1;
	for(row = p->ap.startRow; row < p->ap.stopRow; row++) {
		int note = marfitude_get_note(row, col);
		if(note) {
			marfitude_get_notepos(&l->pts[pcount], row, col);
			marfitude_evalvec(&l->pts[pcount]);
			pcount++;
			if(row == p->ap.startRow) {
				/* Override the fake point */
				marfitude_get_notepos(&l->pts[0], row, col);
				marfitude_evalvec(&l->pts[0]);
			}
			if(pcount == l->pts_used)
				break;
		}
	}
}
Exemple #6
0
void victory(const void *data)
{
	const struct slist *list = data;
	const struct slist *t;
	struct marfitude_pos pos;
	const struct wam *wam = marfitude_get_wam();
	const struct marfitude_player *ps;
	int num = 0;
	int x;

	num = slist_length(list);

	slist_foreach(t, list) {
		ps = t->data;
		for(x=0; x<48 / num; x++) {
			const float *c = get_player_color(ps->num);
			pos.tic = wam_row(wam, wam->num_rows)->ticpos;
			pos.channel = x % wam->num_cols;
			explosion_particle(&pos, c);
		}
	}
Exemple #7
0
// -----------------------------------------------------------
// town data
// -----------------------------------------------------------
bool t_abstract_town::preplacement( t_adventure_map& map, int pass )
{
	// At this point the owner number has not been set, so used the
	// player color
	return t_creature_array::preplacement( map, pass, map.get_player( get_player_color() ) );
}