本文整理汇总了C++中Town::getID方法的典型用法代码示例。如果您正苦于以下问题:C++ Town::getID方法的具体用法?C++ Town::getID怎么用?C++ Town::getID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Town
的用法示例。
在下文中一共展示了Town::getID方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SelectBrush
bool HousePalettePanel::SelectBrush(const Brush* whatbrush)
{
const HouseBrush* house_brush = dynamic_cast<const HouseBrush*>(whatbrush);
const SpawnBrush* spawn_brush = dynamic_cast<const SpawnBrush*>(whatbrush);
if(house_brush && map != nullptr) {
for(HouseMap::iterator house_iter = map->houses.begin(); house_iter != map->houses.end(); ++house_iter) {
if(house_iter->second->id == house_brush->getHouseID()) {
for(uint32_t i = 0; i < town_choice->GetCount(); ++i) {
Town* town = reinterpret_cast<Town*>(town_choice->GetClientData(i));
// If it's "No Town" (nullptr) select it, or if it has the same town ID as the house
if(town == nullptr || town->getID() == house_iter->second->townid) {
SelectTown(i);
for(uint32_t j = 0; j < house_list->GetCount(); ++j) {
if(house_iter->second->id == reinterpret_cast<House*>(house_list->GetClientData(j))->id) {
SelectHouse(j);
return true;
}
}
return true;
}
}
}
}
} else if(spawn_brush) {
SelectExitBrush();
}
return false;
}
示例2: payRent
bool Houses::payRent(Player* player, House* house, uint32_t bid, time_t _time/* = 0*/)
{
if(rentPeriod == RENTPERIOD_NEVER || !house->getOwner() ||
house->getPaidUntil() > _time || !house->getRent() ||
player->hasCustomFlag(PlayerCustomFlag_IgnoreHouseRent))
return true;
Town* town = Towns::getInstance()->getTown(house->getTownId());
if(!town)
return false;
bool paid = false;
uint32_t amount = house->getRent() + bid;
if(g_config.getBool(ConfigManager::BANK_SYSTEM) && player->balance >= amount)
{
player->balance -= amount;
paid = true;
}
else if(DepotChest* depotChest = player->getDepotChest(town->getID(), true))
paid = g_game.removeMoney(depotChest, amount, FLAG_NOLIMIT);
if(!paid)
return false;
if(!_time)
_time = time(NULL);
uint32_t paidUntil = _time;
switch(rentPeriod)
{
case RENTPERIOD_DAILY:
paidUntil += 86400;
break;
case RENTPERIOD_WEEKLY:
paidUntil += 7 * 86400;
break;
case RENTPERIOD_MONTHLY:
paidUntil += 30 * 86400;
break;
case RENTPERIOD_YEARLY:
paidUntil += 365 * 86400;
break;
default:
break;
}
house->setLastWarning(0);
house->setRentWarnings(0);
house->setPaidUntil(paidUntil);
return true;
}
示例3: getDepotId
bool Mailbox::getDepotId(const std::string& townString, uint32_t& depotId)
{
Town* town = Towns::getInstance()->getTown(townString);
if(!town)
return false;
std::string disabledTowns = g_config.getString(ConfigManager::MAILBOX_DISABLED_TOWNS);
if(disabledTowns.size())
{
IntegerVec tmpVec = vectorAtoi(explodeString(disabledTowns, ","));
if(tmpVec[0] != 0)
{
for(IntegerVec::iterator it = tmpVec.begin(); it != tmpVec.end(); ++it)
{
if(town->getID() == uint32_t(*it))
return false;
}
}
}
depotId = town->getID();
return true;
}
示例4: OnClickAddHouse
void HousePalettePanel::OnClickAddHouse(wxCommandEvent& event)
{
if(map == nullptr)
return;
House* new_house = newd House(*map);
new_house->id = map->houses.getEmptyID();
std::ostringstream os;
os << "Unnamed House #" << new_house->id;
new_house->name = os.str();
Town* town = reinterpret_cast<Town*>(town_choice->GetClientData(town_choice->GetSelection()));
ASSERT(town);
new_house->townid = town->getID();
map->houses.addHouse(new_house);
house_list->Append(wxstr(new_house->getDescription()), new_house);
SelectHouse(house_list->FindString(wxstr(new_house->getDescription())));
gui.SelectBrush();
refresh_timer.Start(300, true);
}
示例5: payHouse
bool Houses::payHouse(House* house, time_t _time, uint32_t bid)
{
if(!house->getOwner())
return true;
Town* town = server.towns().getTown(house->getTownId());
if(!town)
return false;
uint32_t owner = house->getOwner();
if(house->isGuild() && !IOGuild::getInstance()->swapGuildIdToOwner(owner))
{
house->setOwnerEx(0, true);
return false;
}
std::string name;
if(!IOLoginData::getInstance()->getNameByGuid(owner, name))
{
house->setOwnerEx(0, true);
return false;
}
PlayerP player = server.game().getPlayerByNameEx(name);
if(!player)
return false;
int32_t loginClean = server.configManager().getNumber(ConfigManager::HOUSE_CLEAN_OLD);
if(player->isVirtual() && loginClean && _time >= (player->getLastLogin() + loginClean))
{
house->setOwnerEx(0, true);
return false;
}
if(rentPeriod == RENTPERIOD_NEVER || house->getPaidUntil() > _time || !house->getRent())
return true;
bool paid = payRent(player.get(), house, bid, _time), savePlayer = false;
if(!paid && _time >= (house->getLastWarning() + 86400))
{
uint32_t warningsLimit = 7;
switch(rentPeriod)
{
case RENTPERIOD_DAILY:
warningsLimit = 1;
break;
case RENTPERIOD_WEEKLY:
warningsLimit = 3;
break;
case RENTPERIOD_MONTHLY:
warningsLimit = 7;
break;
case RENTPERIOD_YEARLY:
warningsLimit = 14;
break;
default:
break;
}
uint32_t warnings = house->getRentWarnings();
if(warnings < warningsLimit)
{
Depot* depot = player->getDepot(town->getID(), true);
boost::intrusive_ptr<Item> letter = Item::CreateItem(ITEM_LETTER_STAMPED);
if(depot && letter)
{
std::string period;
switch(rentPeriod)
{
case RENTPERIOD_DAILY:
period = "daily";
break;
case RENTPERIOD_WEEKLY:
period = "weekly";
break;
case RENTPERIOD_MONTHLY:
period = "monthly";
break;
case RENTPERIOD_YEARLY:
period = "annual";
break;
default:
break;
}
std::stringstream s;
s << "Warning!\nThe " << period << " rent of " << house->getRent() << " gold for your "
<< (house->isGuild() ? "guild hall" : "house") << " \"" << house->getName()
<< "\" has to be paid. Have it within " << (warningsLimit - warnings)
<< " days or you will lose your " << (house->isGuild() ? "guild hall" : "house") << ".";
letter->setText(s.str().c_str());
if(server.game().internalAddItem(nullptr, depot, letter.get(), INDEX_WHEREEVER, FLAG_NOLIMIT) == RET_NOERROR)
savePlayer = true;
}
house->setRentWarnings(++warnings);
house->setLastWarning(_time);
}
else
//.........这里部分代码省略.........