void BuildingRegister::CalcProductivities(std::vector<unsigned short>& productivities) const { RTTR_Assert(productivities.size() == NUM_BUILDING_TYPES); for(unsigned i = 0; i < NUM_BUILDING_TYPES; ++i) productivities[i] = static_cast<unsigned short>(CalcAverageProductivity(BuildingType(i))); }
noBaseBuilding::noBaseBuilding(SerializedGameData * sgd, const unsigned obj_id) : noRoadNode(sgd,obj_id), type(BuildingType(sgd->PopUnsignedChar())), nation(Nation(sgd->PopUnsignedChar())), door_point_x(sgd->PopSignedInt()), door_point_y(sgd->PopSignedInt()) { }
unsigned short BuildingRegister::CalcAverageProductivity() const { unsigned totalProductivity = 0; unsigned numBlds = 0; for(unsigned i = 0; i < NUM_BUILDING_TYPES; ++i) { auto bldType = BuildingType(i); if(BLD_WORK_DESC[bldType].producedWare == GD_NOTHING) continue; for(const nobUsual* bld : GetBuildings(bldType)) totalProductivity += bld->GetProductivity(); numBlds += GetBuildings(bldType).size(); } if(numBlds == 0) return 0; return totalProductivity / numBlds; }
int GameWorldBase::LUA_DisableBuilding(lua_State *L) { // GameWorldBase *gw = static_cast<GameWorldBase*>(lua_touserdata(L,lua_upvalueindex(1))); int argc = lua_gettop(L); if (argc < 2) { lua_pushstring(L, "too few or too many arguments!"); lua_error(L); return(0); } // player unsigned pnr = luaL_checknumber(L, 1); if (pnr >= GAMECLIENT.GetPlayerCount()) { lua_pushstring(L, "player number invalid!"); lua_error(L); return(0); } GameClientPlayer *player = GAMECLIENT.GetPlayer(pnr); int cnt = 2; while (cnt <= argc) { // building type unsigned building_type = luaL_checknumber(L, cnt++); if (building_type < BUILDING_TYPES_COUNT) { fprintf(stderr, "DISABLE %u\n", building_type); player->DisableBuilding(BuildingType(building_type)); } else { lua_pushstring(L, "building type invalid!"); lua_error(L); } } return(0); }
fowBuildingSite::fowBuildingSite(SerializedGameData& sgd) : planing(sgd.PopBool()), type(BuildingType(sgd.PopUnsignedChar())), nation(Nation(sgd.PopUnsignedChar())), build_progress(sgd.PopUnsignedChar()) {}
fowBuilding::fowBuilding(SerializedGameData& sgd) : type(BuildingType(sgd.PopUnsignedChar())), nation(Nation(sgd.PopUnsignedChar())) {}
ImagePostMsgWithLocation::ImagePostMsgWithLocation(SerializedGameData* sgd) : PostMsgWithLocation(sgd), senderBuilding(BuildingType(sgd->PopUnsignedInt())), senderNation(Nation(sgd->PopUnsignedInt())) { }
void ScreenGame::Impl::resolveCreateConstruction( int type ) { mapRenderer.setMode( TilemapBuildCommand::create( BuildingType( type ) ) ); }