/**************************************************************************** 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); }
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); }
/************************************************************************** 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(); }
// ------------------------------------------------------------------- // 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; }
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; } } }
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); } }
// ----------------------------------------------------------- // 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() ) ); }