コード例 #1
0
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)));
}
コード例 #2
0
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())
{
}
コード例 #3
0
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;
}
コード例 #4
0
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);
}
コード例 #5
0
fowBuildingSite::fowBuildingSite(SerializedGameData& sgd) :
    planing(sgd.PopBool()),
    type(BuildingType(sgd.PopUnsignedChar())),
    nation(Nation(sgd.PopUnsignedChar())),
    build_progress(sgd.PopUnsignedChar())
{}
コード例 #6
0
fowBuilding::fowBuilding(SerializedGameData& sgd) :
    type(BuildingType(sgd.PopUnsignedChar())),
    nation(Nation(sgd.PopUnsignedChar()))
{}
コード例 #7
0
ファイル: PostMsg.cpp プロジェクト: ikharbeq/s25client
ImagePostMsgWithLocation::ImagePostMsgWithLocation(SerializedGameData* sgd)
    : PostMsgWithLocation(sgd), senderBuilding(BuildingType(sgd->PopUnsignedInt())), senderNation(Nation(sgd->PopUnsignedInt())) { }
コード例 #8
0
ファイル: oc3_screen_game.cpp プロジェクト: coniu/opencaesar3
void ScreenGame::Impl::resolveCreateConstruction( int type )
{
  mapRenderer.setMode( TilemapBuildCommand::create( BuildingType( type ) ) );
}