bool CTaskTrayIcon::Restore() { Delete(); return Add(); }
index_set::~index_set() { for_each(constraint_index_sets.begin(), constraint_index_sets.end(), Delete()); }
SurfaceStream_SingleBuffer::~SurfaceStream_SingleBuffer() { Delete(mConsumer); }
/** * @brief Immediately deletes all tags attached to an entity (skips all effects). */ void DeleteTags( gentity_t *ent ) { Delete( ent->alienTag ); Delete( ent->humanTag ); }
void operator()(Ptr ptr) const { Delete(ptr); }
void SwigType_add_memberpointer(SwigType *t, String_or_char *name) { String *temp = NewStringf("m(%s).", name); Insert(t,0,temp); Delete(temp); }
CSWMutex::~CSWMutex(){ Delete(); }
status_t POP3Protocol::HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo) { ResetProgress("Fetch body"); SetTotalItems(1); status_t error = Connect(); if (error != B_OK) return error; error = _RetrieveUniqueIDs(); if (error != B_OK) { Disconnect(); return error; } BFile file(&ref, B_READ_WRITE); status_t status = file.InitCheck(); if (status != B_OK) { Disconnect(); return status; } char uidString[256]; BNode node(&ref); if (node.ReadAttr("MAIL:unique_id", B_STRING_TYPE, 0, uidString, 256) < 0) { Disconnect(); return B_ERROR; } int32 toRetrieve = fUniqueIDs.IndexOf(uidString); if (toRetrieve < 0) { Disconnect(); return B_NAME_NOT_FOUND; } bool leaveOnServer; if (fSettings.FindBool("leave_mail_on_server", &leaveOnServer) != B_OK) leaveOnServer = true; // TODO: get rid of this BMailMessageIO! BMailMessageIO io(this, &file, toRetrieve); // read body status = io.Seek(0, SEEK_END); if (status < 0) { Disconnect(); return status; } BMessage attributes; NotifyBodyFetched(ref, file, attributes); ReplyBodyFetched(replyTo, ref, B_OK); if (!leaveOnServer) Delete(toRetrieve); ReportProgress(1, 0); ResetProgress(); Disconnect(); return B_OK; }
void GameObject::Update(uint32 p_time) { if (GUID_HIPART(GetGUID()) == HIGHGUID_TRANSPORT) { //((Transport*)this)->Update(p_time); return; } switch (m_lootState) { case GO_NOT_READY: if (GetGoType()==17) { // fishing code (bobber ready) if( time(NULL) > m_respawnTime - FISHING_BOBBER_READY_TIME ) { // splash bobber (bobber ready now) Unit* caster = GetOwner(); if(caster && caster->GetTypeId()==TYPEID_PLAYER) { SetUInt32Value(GAMEOBJECT_STATE, 0); SetUInt32Value(GAMEOBJECT_FLAGS, 32); UpdateData udata; WorldPacket packet; BuildValuesUpdateBlockForPlayer(&udata,((Player*)caster)); udata.BuildPacket(&packet); ((Player*)caster)->GetSession()->SendPacket(&packet); WorldPacket data; data.Initialize(SMSG_GAMEOBJECT_CUSTOM_ANIM); data << GetGUID(); data << (uint32)(0); ((Player*)caster)->SendMessageToSet(&data,true); } m_lootState = GO_CLOSED; // can be succesfully open with some chance } return; } m_lootState = GO_CLOSED; // for not bobber is same as GO_CLOSED // NO BREAK case GO_CLOSED: if (m_respawnTime > 0) // timer on { if (m_respawnTime <= time(NULL)) // timer expired { m_respawnTime = 0; m_SkillupList.clear(); switch (GetGoType()) { case GAMEOBJECT_TYPE_FISHINGNODE: // can't fish now { Unit* caster = GetOwner(); if(caster && caster->GetTypeId()==TYPEID_PLAYER) { if(caster->m_currentSpell) { caster->m_currentSpell->SendChannelUpdate(0); caster->m_currentSpell->finish(false); } WorldPacket data; data.Initialize(SMSG_FISH_NOT_HOOKED); ((Player*)caster)->GetSession()->SendPacket(&data); } m_lootState = GO_LOOTED; // can be delete return; } case GAMEOBJECT_TYPE_DOOR: SetUInt32Value (GAMEOBJECT_FLAGS, m_flags); SetUInt32Value (GAMEOBJECT_STATE, 1); break; case GAMEOBJECT_TYPE_TRAP: break; default: if(GetOwnerGUID()) // despawn timer { m_respawnTime = 0; Delete(); return; } // respawn timer MapManager::Instance().GetMap(GetMapId(), this)->Add(this); break; } } } break; case GO_OPEN: break; case GO_LOOTED: if(GetOwnerGUID()) { m_respawnTime = 0; Delete(); return; } loot.clear(); SetLootState(GO_CLOSED); SendDestroyObject(GetGUID()); m_respawnTime = time(NULL) + m_respawnDelayTime; // if option not set then object will be ssaved at grif unload if(sWorld.getConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATLY)) SaveRespawnTime(); break; } SpellEntry const *createSpell = m_spellId ? sSpellStore.LookupEntry(m_spellId) : NULL; if (!createSpell) return; int i; for (i = 0; i < 3; i++) if (createSpell->Effect[i] == SPELL_EFFECT_SUMMON_OBJECT_SLOT1) break; if (i<3) { // traps CellPair p(MaNGOS::ComputeCellPair(GetPositionX(),GetPositionY())); Cell cell = RedZone::GetZone(p); cell.data.Part.reserved = ALL_DISTRICT; Unit* owner = GetOwner(); if (!owner) { m_respawnTime = 0; // to prevent save respawn timer Delete(); return; } Unit* ok = NULL; // pointer to appropriate target if found any float radius = GetRadius(sSpellRadiusStore.LookupEntry(createSpell->EffectRadiusIndex[i])); MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(this, owner, radius); MaNGOS::UnitSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> checker(ok, u_check); CellLock<GridReadGuard> cell_lock(cell, p); // search unfriedly creature { TypeContainerVisitor<MaNGOS::UnitSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker); cell_lock->Visit(cell_lock, grid_object_checker, *MapManager::Instance().GetMap(GetMapId(), this)); } // or unfriendly player/pet if(!ok) { TypeContainerVisitor<MaNGOS::UnitSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck>, WorldTypeMapContainer > world_object_checker(checker); cell_lock->Visit(cell_lock, world_object_checker, *MapManager::Instance().GetMap(GetMapId(), this)); } if (ok) { owner->CastSpell(ok, GetGOInfo()->sound3, true); m_respawnTime = 0; // to prevent save respawn timer Delete(); } } if (m_usetimes >= 5) { m_respawnTime = 0; // to prevent save respawn timer Delete(); } }
BOOL CAccountObjectMgr::ReleaseAccountObject( UINT32 dwAccountID ) { return Delete(dwAccountID); }
status_t POP3Protocol::SyncMessages() { bool leaveOnServer; if (fSettings.FindBool("leave_mail_on_server", &leaveOnServer) != B_OK) leaveOnServer = true; // create directory if not exist create_directory(fDestinationDir, 0777); printf("POP3Protocol::SyncMessages()\n"); _ReadManifest(); SetTotalItems(2); ReportProgress(1, 0, B_TRANSLATE("Connect to server" B_UTF8_ELLIPSIS)); status_t error = Connect(); if (error != B_OK) { printf("POP3 could not connect: %s\n", strerror(error)); ResetProgress(); return error; } ReportProgress(1, 0, B_TRANSLATE("Getting UniqueIDs" B_UTF8_ELLIPSIS)); error = _RetrieveUniqueIDs(); if (error < B_OK) { ResetProgress(); Disconnect(); return error; } BStringList toDownload; NotHere(fManifest, fUniqueIDs, &toDownload); int32 numMessages = toDownload.CountStrings(); if (numMessages == 0) { CheckForDeletedMessages(); ResetProgress(); Disconnect(); return B_OK; } ResetProgress(); SetTotalItems(toDownload.CountStrings()); SetTotalItemsSize(fTotalSize); printf("POP3: Messages to download: %i\n", (int)toDownload.CountStrings()); for (int32 i = 0; i < toDownload.CountStrings(); i++) { const char* uid = toDownload.StringAt(i); int32 toRetrieve = fUniqueIDs.IndexOf(uid); if (toRetrieve < 0) { // should not happen! error = B_NAME_NOT_FOUND; printf("POP3: uid %s index %i not found in fUniqueIDs!\n", uid, (int)toRetrieve); continue; } BPath path(fDestinationDir); BString fileName = "Downloading file... uid: "; fileName += uid; fileName.ReplaceAll("/", "_SLASH_"); path.Append(fileName); BEntry entry(path.Path()); BFile file(&entry, B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); error = file.InitCheck(); if (error != B_OK) { printf("POP3: Can't create file %s\n ", path.Path()); break; } BMailMessageIO mailIO(this, &file, toRetrieve); BMessage attributes; entry_ref ref; entry.GetRef(&ref); int32 size = MessageSize(toRetrieve); if (fFetchBodyLimit < 0 || size <= fFetchBodyLimit) { error = mailIO.Seek(0, SEEK_END); if (error < 0) { printf("POP3: Failed to download body %s\n ", uid); break; } ProcessMessageFetched(ref, file, attributes); if (!leaveOnServer) Delete(toRetrieve); } else { int32 dummy; error = mailIO.ReadAt(0, &dummy, 1); if (error < 0) { printf("POP3: Failed to download header %s\n ", uid); break; } ProcessHeaderFetched(ref, file, attributes); } ReportProgress(1, 0); if (file.WriteAttr("MAIL:unique_id", B_STRING_TYPE, 0, uid, strlen(uid)) < 0) error = B_ERROR; file.WriteAttr("MAIL:size", B_INT32_TYPE, 0, &size, sizeof(int32)); write_read_attr(file, B_UNREAD); // save manifest in case we get disturbed fManifest.Add(uid); _WriteManifest(); } ResetProgress(); CheckForDeletedMessages(); Disconnect(); return error; }
void SqlMassInsert::Flush() { const uint64 DONE = (uint64)-1; if(cache.GetCount() == 0) return; if(use_transaction) sql.GetSession().Begin(); SqlBool remove; bool doremove = false; for(int ii = 0; ii < cache.GetCount(); ii++) { SqlBool rm = cache[ii].remove; if(!rm.IsEmpty()) { doremove = true; remove = remove || rm; } } if(doremove) sql * Delete(table).Where(remove); String insert; int dialect = sql.GetDialect(); if(findarg(dialect, MY_SQL, PGSQL, MSSQL) >= 0) { insert << "insert into " + ~table + '('; for(int i = 0; i < column.GetCount(); i++) { if(i) insert << ", "; insert << column[i]; } insert << ") values "; for(int i = 0; i < cache.GetCount(); i++) { Row& r = cache[i]; if(r.value.GetCount()) { if(i) insert << ", "; insert << "("; for(int i = 0; i < r.value.GetCount(); i++) { if(i) insert << ", "; insert << SqlCompile(dialect, SqlFormat(r.value[i])); } insert << ")"; } } } else for(int ii = 0; ii < cache.GetCount(); ii++) { uint64 nulls = cache[ii].nulls; if(nulls != DONE) { insert << "insert into " + ~table + '('; bool nextcol = false; for(int i = 0; i < column.GetCount(); i++) { if(!(nulls & ((uint64)1 << i))) { if(nextcol) insert << ", "; nextcol = true; insert << column[i]; } } insert << ')'; bool nextsel = false; for(int i = ii; i < cache.GetCount(); i++) { Row& r = cache[i]; if(r.nulls == nulls && r.value.GetCount()) { r.nulls = DONE; if(nextsel) insert << " union all"; nextsel = true; insert << " select "; bool nextval = false; for(int i = 0; i < r.value.GetCount(); i++) if(!(nulls & ((uint64)1 << i))) { if(nextval) insert << ", "; nextval = true; insert << SqlCompile(dialect, SqlFormat(r.value[i])); } if(dialect == ORACLE) insert << " from dual"; } } } } sql.Execute(insert); if(sql.WasError()) { error = true; if(use_transaction) sql.GetSession().Rollback(); } else if(use_transaction) sql.GetSession().Commit(); cache.Clear(); column.Clear(); pos = 0; }
IDENTLIST::~IDENTLIST (void) { if (m_lIdents) Delete (m_lIdents); m_lIdents = NULL; }
bool CSfxModel::_nextFrame() { bool ret = false; m_currentFrame += m_perSlerp; const ushort frame = (ushort)m_currentFrame; ushort startFrame, endFrame; CPtrArray<Particle>* particles; Particle* particle; int j; for (int i = 0; i < m_particles.GetSize(); i++) { if (m_particles[i]) { const CSfxPartParticle* part = (CSfxPartParticle*)m_sfx->m_parts[i]; particles = m_particles[i]; for (j = 0; j < particles->GetSize(); j++) { particle = particles->GetAt(j); particle->pos += particle->speed; particle->speed += part->m_particleAccel; if (!part->m_repeatScal) particle->scale += part->m_scaleSpeed; particle->frame++; if (particle->frame >= part->m_particleFrameDisappear) { Delete(particle); particles->RemoveAt(j); j--; } } startFrame = 0; endFrame = 0; if (part->GetFirstKey()) { startFrame = part->GetFirstKey()->frame; endFrame = part->GetLastKey()->frame; } if (frame >= startFrame && frame <= endFrame - part->m_particleFrameDisappear) { if ((part->m_particleCreate == 0 && frame == startFrame) || (part->m_particleCreate != 0 && (frame - startFrame) % part->m_particleCreate == 0) ) { const float rand1 = (rand() % 50000) / 50000.0f; const float rand2 = (rand() % 50000) / 50000.0f; const float rand3 = (rand() % 50000) / 50000.0f; for (j = 0; j < part->m_particleCreateNum; j++) { particle = new Particle(); particle->frame = 0; const float angle = ((rand() % 50000) / 50000.0f) * 360.0f; particle->pos = D3DXVECTOR3( sin(angle) * part->m_particleStartPosVar, rand1 * part->m_particleStartPosVarY, cos(angle) * part->m_particleStartPosVar ); const float factor = part->m_particleXZLow + rand2 * (part->m_particleXZHigh - part->m_particleXZLow); particle->speed = D3DXVECTOR3( sin(angle) * factor, part->m_particleYLow + rand2 * (part->m_particleYHigh - part->m_particleYLow), cos(angle) * factor ); particle->scaleStart = particle->scale = part->m_scale; particle->rotation = D3DXVECTOR3(part->m_rotationLow.x + rand1 * (part->m_rotationHigh.x - part->m_rotationLow.x), part->m_rotationLow.y + rand3 * (part->m_rotationHigh.y - part->m_rotationLow.y), part->m_rotationLow.z + rand2 * (part->m_rotationHigh.z - part->m_rotationLow.z)); particle->swScal = false; particle->scaleEnd = part->m_scaleEnd; particle->scaleSpeed = D3DXVECTOR3(part->m_scalSpeedXLow + rand3 * (part->m_scalSpeedXHigh - part->m_scalSpeedXLow), part->m_scalSpeedYLow + rand2 * (part->m_scalSpeedYHigh - part->m_scalSpeedYLow), part->m_scalSpeedZLow + rand1 * (part->m_scalSpeedZHigh - part->m_scalSpeedZLow)); particles->Append(particle); } } } if (particles->GetSize() > 0 || frame < startFrame) ret = true; #ifndef SFX_EDITOR if (part->m_repeat) { if (endFrame >= 0) { const float f = m_currentFrame / (float)endFrame; if (f >= 0.65f) m_currentFrame = (float)endFrame * 0.6f; } } #endif // SFX_EDITOR } else { if (m_sfx->m_parts[i]->GetNextKey(frame)) ret = true; } } return ret; }
void C4PacketList::Clear() { while (pFirst) Delete(pFirst); }
bool CChar::NPC_OnHearPetCmd(LPCTSTR pszCmd, CChar *pSrc, bool bAllPets) { ADDTOCALLSTACK("CChar::NPC_OnHearPetCmd"); // This should just be another speech block !!! // We own this char (pet or hireling) // pObjTarget = the m_ActTarg has been set for them to attack. // RETURN: // true = we understand this. tho we may not do what we are told. // false = this is not a command we know. // if ( GetTargMode() == CLIMODE_TARG_PET_CMD ) it needs a target. if ( !m_pNPC || !pSrc->m_pClient ) return false; m_fIgnoreNextPetCmd = false; // we clear this incase it's true from previous pet commands TALKMODE_TYPE mode = TALKMODE_SAY; if ( OnTriggerSpeech(true, pszCmd, pSrc, mode) ) { m_fIgnoreNextPetCmd = !bAllPets; return true; } if ((m_pNPC->m_Brain == NPCBRAIN_BERSERK) && !pSrc->IsPriv(PRIV_GM)) return false; // Berserk npcs do not listen to any command (except if src is a GM) static LPCTSTR const sm_PetCommands[] = { "ATTACK", "BOUGHT", "CASH", "COME", "DROP", "DROP ALL", "EQUIP", "FOLLOW", "FOLLOW ME", "FRIEND", "GO", "GUARD", "GUARD ME", "KILL", "PRICE", "RELEASE", "SAMPLES", "SPEAK", "STATUS", "STAY", "STOCK", "STOP", "TRANSFER", "UNFRIEND" }; PC_TYPE iCmd = static_cast<PC_TYPE>(FindTableSorted(pszCmd, sm_PetCommands, COUNTOF(sm_PetCommands))); if ( iCmd < 0 ) { if ( !strnicmp(pszCmd, sm_PetCommands[PC_PRICE], 5) ) iCmd = PC_PRICE; else return false; } if ( !NPC_PetCheckAccess(iCmd, pSrc) ) return true; bool bTargAllowGround = false; bool bCheckCrime = false; LPCTSTR pTargPrompt = NULL; CCharBase *pCharDef = Char_GetDef(); switch ( iCmd ) { case PC_ATTACK: case PC_KILL: pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_ATT); bCheckCrime = true; break; case PC_COME: case PC_FOLLOW_ME: NPC_OnHearPetCmdTarg(PC_FOLLOW, pSrc, pSrc, NULL, NULL); break; case PC_FOLLOW: pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FOLLOW); break; case PC_FRIEND: if ( IsStatFlag(STATF_Conjured) ) { pSrc->SysMessage(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND_SUMMONED)); return false; } pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND); break; case PC_UNFRIEND: pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_UNFRIEND); break; case PC_GO: pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_GO); bTargAllowGround = true; break; case PC_GUARD: pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_GUARD); bCheckCrime = true; break; case PC_GUARD_ME: NPC_OnHearPetCmdTarg(PC_GUARD, pSrc, pSrc, NULL, NULL); break; case PC_STAY: case PC_STOP: Skill_Start(NPCACT_STAY); break; case PC_TRANSFER: if ( IsStatFlag(STATF_Conjured) ) { pSrc->SysMessage(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_TRANSFER_SUMMONED)); return true; } pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_TRANSFER); break; case PC_RELEASE: if ( IsStatFlag(STATF_Conjured) || (m_pNPC->m_bonded && IsStatFlag(STATF_DEAD)) ) { Effect(EFFECT_XYZ, ITEMID_FX_TELE_VANISH, this, 10, 15); Sound(SOUND_TELEPORT); Delete(); return true; } SoundChar(CRESND_NOTICE); Skill_Start(SKILL_NONE); NPC_PetClearOwners(); ResendTooltip(); break; case PC_DROP: { // Drop backpack items on ground // NOTE: This is also called on pet release CItemContainer *pPack = GetContainer(LAYER_PACK); if ( pPack ) { pPack->ContentsDump(GetTopPoint(), ATTR_OWNED); break; } if ( NPC_CanSpeak() ) Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_CARRYNOTHING)); return true; } case PC_DROP_ALL: DropAll(NULL, ATTR_OWNED); break; case PC_SPEAK: NPC_PetConfirmCommand(true, pSrc); return true; case PC_EQUIP: ItemEquipWeapon(false); ItemEquipArmor(false); break; case PC_STATUS: { if ( !NPC_CanSpeak() ) break; CItemContainer *pBank = GetContainerCreate(LAYER_BANKBOX); TCHAR *pszMsg = Str_GetTemp(); if ( NPC_IsVendor() ) { CItemContainer *pCont = GetContainerCreate(LAYER_VENDOR_STOCK); TCHAR *pszTemp1 = Str_GetTemp(); TCHAR *pszTemp2 = Str_GetTemp(); TCHAR *pszTemp3 = Str_GetTemp(); if ( pCharDef->m_iHireDayWage ) { sprintf(pszTemp1, g_Cfg.GetDefaultMsg(DEFMSG_NPC_VENDOR_STAT_GOLD_1), pBank->m_itEqBankBox.m_Check_Amount); sprintf(pszTemp2, g_Cfg.GetDefaultMsg(DEFMSG_NPC_VENDOR_STAT_GOLD_2), pBank->m_itEqBankBox.m_Check_Amount / pCharDef->m_iHireDayWage); sprintf(pszTemp3, g_Cfg.GetDefaultMsg(DEFMSG_NPC_VENDOR_STAT_GOLD_3), static_cast<int>(pCont->GetCount())); } else { sprintf(pszTemp1, g_Cfg.GetDefaultMsg(DEFMSG_NPC_VENDOR_STAT_GOLD_1), pBank->m_itEqBankBox.m_Check_Amount); sprintf(pszTemp2, g_Cfg.GetDefaultMsg(DEFMSG_NPC_VENDOR_STAT_GOLD_4), pBank->m_itEqBankBox.m_Check_Restock, pBank->GetTimerAdjusted() / 60); sprintf(pszTemp3, g_Cfg.GetDefaultMsg(DEFMSG_NPC_VENDOR_STAT_GOLD_3), static_cast<int>(pCont->GetCount())); } sprintf(pszMsg, "%s %s %s", pszTemp1, pszTemp2, pszTemp3); } else if ( pCharDef->m_iHireDayWage ) { sprintf(pszMsg, g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_DAYS_LEFT), pBank->m_itEqBankBox.m_Check_Amount / pCharDef->m_iHireDayWage); } Speak(pszMsg); return true; } case PC_CASH: { // Give up my cash total. if ( !NPC_IsVendor() ) return false; CItemContainer *pBank = GetContainerCreate(LAYER_BANKBOX); if ( pBank ) { TCHAR *pszMsg = Str_GetTemp(); if ( pBank->m_itEqBankBox.m_Check_Amount > pCharDef->m_iHireDayWage ) { sprintf(pszMsg, g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_GETGOLD_1), pBank->m_itEqBankBox.m_Check_Amount - pCharDef->m_iHireDayWage); pSrc->AddGoldToPack(pBank->m_itEqBankBox.m_Check_Amount - pCharDef->m_iHireDayWage); pBank->m_itEqBankBox.m_Check_Amount = pCharDef->m_iHireDayWage; } else sprintf(pszMsg, g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_GETGOLD_2), pBank->m_itEqBankBox.m_Check_Amount); Speak(pszMsg); } return true; } case PC_BOUGHT: if ( !NPC_IsVendor() ) return false; Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_ITEMS_BUY)); pSrc->m_pClient->addBankOpen(this, LAYER_VENDOR_EXTRA); break; case PC_PRICE: if ( !NPC_IsVendor() ) return false; pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_SETPRICE); break; case PC_SAMPLES: if ( !NPC_IsVendor() ) return false; Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_ITEMS_SAMPLE)); pSrc->m_pClient->addBankOpen(this, LAYER_VENDOR_BUYS); break; case PC_STOCK: // Magic restocking container. if ( !NPC_IsVendor() ) return false; Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_ITEMS_SELL)); pSrc->m_pClient->addBankOpen(this, LAYER_VENDOR_STOCK); break; default: return false; } if ( pTargPrompt ) { pszCmd += strlen(sm_PetCommands[iCmd]); GETNONWHITESPACE(pszCmd); pSrc->m_pClient->m_tmPetCmd.m_iCmd = iCmd; pSrc->m_pClient->m_tmPetCmd.m_fAllPets = bAllPets; pSrc->m_pClient->m_Targ_UID = GetUID(); pSrc->m_pClient->m_Targ_Text = pszCmd; pSrc->m_pClient->addTarget(CLIMODE_TARG_PET_CMD, pTargPrompt, bTargAllowGround, bCheckCrime); return true; } // Make some sound to confirm we heard it NPC_PetConfirmCommand(true, pSrc); return true; }
void ForceSchemaDelete(SqlId table, SqlId key, const Value& keyval, Sql& cursor) { Delete(SchemaTable(table)).Where(key == keyval).Force(cursor); }
CSequence::~CSequence( void ) { Delete(); }
void CLocalTreeView::Refresh() { wxLogNull nullLog; const wxString separator = wxFileName::GetPathSeparator(); std::list<t_dir> dirsToCheck; #ifdef __WXMSW__ int prevErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS); wxTreeItemIdValue tmp; wxTreeItemId child = GetFirstChild(m_drives, tmp); while (child) { if (IsExpanded(child)) { wxString drive = GetItemText(child); int pos = drive.Find(_T(" ")); if (pos != -1) drive = drive.Left(pos); t_dir dir; dir.dir = drive + separator; dir.item = child; dirsToCheck.push_back(dir); } child = GetNextSibling(child); } #else t_dir dir; dir.dir = separator; dir.item = GetRootItem(); dirsToCheck.push_back(dir); #endif CFilterManager filter; while (!dirsToCheck.empty()) { t_dir dir = dirsToCheck.front(); dirsToCheck.pop_front(); // Step 1: Check if directory exists CLocalFileSystem local_filesystem; if (!local_filesystem.BeginFindFiles(dir.dir, true)) { // Dir does exist (listed in parent) but may not be accessible. // Recurse into children anyhow, they might be accessible again. wxTreeItemIdValue value; wxTreeItemId child = GetFirstChild(dir.item, value); while (child) { t_dir subdir; subdir.dir = dir.dir + GetItemText(child) + separator; subdir.item = child; dirsToCheck.push_back(subdir); child = GetNextSibling(child); } continue; } // Step 2: Enumerate subdirectories on disk and sort them std::list<wxString> dirs; wxString file; const wxLongLong size(-1); bool was_link; bool is_dir; int attributes; CDateTime date; while (local_filesystem.GetNextFile(file, was_link, is_dir, 0, &date, &attributes)) { if (file == _T("")) { wxGetApp().DisplayEncodingWarning(); continue; } if (filter.FilenameFiltered(file, dir.dir, true, size, true, attributes, date)) continue; dirs.push_back(file); } dirs.sort(sortfunc); bool inserted = false; // Step 3: Merge list of subdirectories with subtree. wxTreeItemId child = GetLastChild(dir.item); std::list<wxString>::reverse_iterator iter = dirs.rbegin(); while (child || iter != dirs.rend()) { int cmp; if (child && iter != dirs.rend()) #ifdef __WXMSW__ cmp = GetItemText(child).CmpNoCase(*iter); #else cmp = GetItemText(child).Cmp(*iter); #endif else if (child) cmp = 1; else cmp = -1; if (!cmp) { // Found item with same name. Mark it for further processing if (!IsExpanded(child)) { wxString path = dir.dir + *iter + separator; if (!CheckSubdirStatus(child, path)) { t_dir subdir; subdir.dir = path; subdir.item = child; dirsToCheck.push_front(subdir); } } else { t_dir subdir; subdir.dir = dir.dir + *iter + separator; subdir.item = child; dirsToCheck.push_front(subdir); } child = GetPrevSibling(child); ++iter; } else if (cmp > 0) { // Subdirectory currently in tree no longer exists. // Delete child from tree, unless current selection // is in the subtree. wxTreeItemId sel = GetSelection(); while (sel && sel != child) sel = GetItemParent(sel); wxTreeItemId prev = GetPrevSibling(child); if (!sel) Delete(child); child = prev; } else if (cmp < 0) { // New subdirectory, add treeitem wxString fullname = dir.dir + *iter + separator; wxTreeItemId newItem = AppendItem(dir.item, *iter, GetIconIndex(::dir, fullname), #ifdef __WXMSW__ -1 #else GetIconIndex(opened_dir, fullname) #endif ); CheckSubdirStatus(newItem, fullname); ++iter; inserted = true; } } if (inserted) SortChildren(dir.item); }
MixtureMemo::~MixtureMemo() { Delete(); }
int DocRecord::Merge(DT vl, DT vr) { Segment bt, ut; int a, b, out; PointNumero r, r1, r2, l, l1, l2; bt = LowerCommonTangent(vl, vr); ut = UpperCommonTangent(vl, vr); l = bt.from; // left endpoint of BT r = bt.to; // right endpoint of BT while((l != ut.from) || (r != ut.to)) { a = b = 0; if(!Insert(l, r)) return 0; r1 = Predecessor(r, l);//候选点R1 if(r1 == -1) return 0; if(IsRightOf(l, r, r1)) //已经到达最上的点 a = 1; //a else { out = 0; while(!out) { //开始寻找最终点 r2 = Predecessor(r, r1); if(r2 == -1) return 0; if(r2 < vr.begin) //如果r2???? out = 1; else if(Qtest(l, r, r1, r2)) out = 1; //如果r2在外接圆外,最终候选点为r1,跳出循环 else { if(!Delete(r, r1)) //如果在圆内,删除R R1边 return 0; r1 = r2; //r2成为新的R1 if(IsRightOf(l, r, r1)) //如果新的R1已经过了最高点 out = a = 1; // //最终候选点是r1,并且a=1,跳出循环 //没过最高点,则out=0,继续寻找 } } } l1 = Successor(l, r); if(l1 == -1) return 0; if(IsLeftOf(r, l, l1)) b = 1; else { out = 0; while(!out) { l2 = Successor(l, l1); if(l2 == -1) return 0; if(l2 > vl.end) out = 1; else if(Qtest(r, l, l1, l2)) out = 1; else { if(!Delete(l, l1)) return 0; l1 = l2; if(IsLeftOf(r, l, l1)) out = b = 1; } } } if(a) l = l1; else if(b) r = r1; else { if(Qtest(l, r, r1, l1)) //如果l1在外接圆外 r = r1; else l = l1; } }//直到上公切线 if(!Insert(l, r)) return 0; if(!FixFirst(ut.to, ut.from)) //???? return 0; if(!FixFirst(bt.from, bt.to)) return 0; return 1; }
bool CAddrMan::Add_(const CAddress& addr, const CNetAddr& source, int64_t nTimePenalty) { if (!addr.IsRoutable()) return false; bool fNew = false; int nId; CAddrInfo* pinfo = Find(addr, &nId); // Do not set a penalty for a source's self-announcement if (addr == source) { nTimePenalty = 0; } if (pinfo) { // periodically update nTime bool fCurrentlyOnline = (GetAdjustedTime() - addr.nTime < 24 * 60 * 60); int64_t nUpdateInterval = (fCurrentlyOnline ? 60 * 60 : 24 * 60 * 60); if (addr.nTime && (!pinfo->nTime || pinfo->nTime < addr.nTime - nUpdateInterval - nTimePenalty)) pinfo->nTime = std::max((int64_t)0, addr.nTime - nTimePenalty); // add services pinfo->nServices = ServiceFlags(pinfo->nServices | addr.nServices); // do not update if no new information is present if (!addr.nTime || (pinfo->nTime && addr.nTime <= pinfo->nTime)) return false; // do not update if the entry was already in the "tried" table if (pinfo->fInTried) return false; // do not update if the max reference count is reached if (pinfo->nRefCount == ADDRMAN_NEW_BUCKETS_PER_ADDRESS) return false; // stochastic test: previous nRefCount == N: 2^N times harder to increase it int nFactor = 1; for (int n = 0; n < pinfo->nRefCount; n++) nFactor *= 2; if (nFactor > 1 && (RandomInt(nFactor) != 0)) return false; } else { pinfo = Create(addr, source, &nId); pinfo->nTime = std::max((int64_t)0, (int64_t)pinfo->nTime - nTimePenalty); nNew++; fNew = true; } int nUBucket = pinfo->GetNewBucket(nKey, source); int nUBucketPos = pinfo->GetBucketPosition(nKey, true, nUBucket); if (vvNew[nUBucket][nUBucketPos] != nId) { bool fInsert = vvNew[nUBucket][nUBucketPos] == -1; if (!fInsert) { CAddrInfo& infoExisting = mapInfo[vvNew[nUBucket][nUBucketPos]]; if (infoExisting.IsTerrible() || (infoExisting.nRefCount > 1 && pinfo->nRefCount == 0)) { // Overwrite the existing new table entry. fInsert = true; } } if (fInsert) { ClearNew(nUBucket, nUBucketPos); pinfo->nRefCount++; vvNew[nUBucket][nUBucketPos] = nId; } else { if (pinfo->nRefCount == 0) { Delete(nId); } } } return fNew; }
int Pass1(FILE *fd, unsigned applied) { u_char *p,*q; MD5_CTX ctx; int i,j,sep,cnt; u_char *md5=0,*name=0,*trash=0; struct CTM_Syntax *sp; int slashwarn=0, match=0, total_matches=0; unsigned current; char md5_1[33]; if(Verbose>3) printf("Pass1 -- Checking integrity of incoming CTM-patch\n"); MD5Init (&ctx); GETFIELD(p,' '); /* CTM_BEGIN */ if(strcmp(p,"CTM_BEGIN")) { Fatal("Probably not a CTM-patch at all."); if(Verbose>3) fprintf(stderr,"Expected \"CTM_BEGIN\" got \"%s\".\n",p); return 1; } GETFIELDCOPY(Version,' '); /* <Version> */ if(strcmp(Version,VERSION)) { Fatal("CTM-patch is wrong version."); if(Verbose>3) fprintf(stderr,"Expected \"%s\" got \"%s\".\n",VERSION,p); return 1; } GETFIELDCOPY(Name,' '); /* <Name> */ GETFIELDCOPY(Nbr,' '); /* <Nbr> */ GETFIELDCOPY(TimeStamp,' '); /* <TimeStamp> */ GETFIELDCOPY(Prefix,'\n'); /* <Prefix> */ sscanf(Nbr, "%u", ¤t); if (FilterList || ListIt) current = 0; /* ignore if -l or if filters are present */ if(current && current <= applied) { if(Verbose > 0) fprintf(stderr,"Delta number %u is already applied; ignoring.\n", current); return Exit_Version; } for(;;) { Delete(md5); Delete(name); Delete(trash); cnt = -1; /* if a filter list is defined we assume that all pathnames require an action opposite to that requested by the first filter in the list. If no filter is defined, all pathnames are assumed to match. */ match = (FilterList ? !(FilterList->Action) : CTM_FILTER_ENABLE); GETFIELD(p,' '); /* CTM_something */ if (p[0] != 'C' || p[1] != 'T' || p[2] != 'M') { Fatal("Expected CTM keyword."); fprintf(stderr,"Got [%s]\n",p); return 1; } if(!strcmp(p+3,"_END")) break; for(sp=Syntax;sp->Key;sp++) if(!strcmp(p+3,sp->Key)) goto found; Fatal("Expected CTM keyword."); fprintf(stderr,"Got [%s]\n",p); return 1; found: if(Verbose > 5) fprintf(stderr,"%s ",sp->Key); for(i=0;(j = sp->List[i]);i++) { if (sp->List[i+1] && (sp->List[i+1] & CTM_F_MASK) != CTM_F_Bytes) sep = ' '; else sep = '\n'; if(Verbose > 5) fprintf(stderr," %x(%d)",sp->List[i],sep); switch (j & CTM_F_MASK) { case CTM_F_Name: /* XXX check for garbage and .. */ GETFIELDCOPY(name,sep); j = strlen(name); if(name[j-1] == '/' && !slashwarn) { fprintf(stderr,"Warning: contains trailing slash\n"); slashwarn++; } if (name[0] == '/') { Fatal("Absolute paths are illegal."); return Exit_Mess; } q = name; for (;;) { if (q[0] == '.' && q[1] == '.') if (q[2] == '/' || q[2] == '\0') { Fatal("Paths containing '..' are illegal."); return Exit_Mess; } if ((q = strchr(q, '/')) == NULL) break; q++; } /* if we have been asked to `keep' files then skip removes; i.e. we don't match these entries at all. */ if (KeepIt && (!strcmp(sp->Key,"DR") || !strcmp(sp->Key,"FR"))) { match = CTM_FILTER_DISABLE; break; } /* If filter expression have been defined, match the path name against the expression list. */ if (FilterList) { struct CTM_Filter *filter; for (filter = FilterList; filter; filter = filter->Next) { if (0 == regexec(&filter->CompiledRegex, name, 0, 0, 0)) /* if the name matches, adopt the action */ match = filter->Action; } } /* Add up the total number of matches */ total_matches += match; break; case CTM_F_Uid: GETFIELD(p,sep); while(*p) { if(!isdigit(*p)) { Fatal("Non-digit in uid."); return 32; } p++; } break; case CTM_F_Gid: GETFIELD(p,sep); while(*p) { if(!isdigit(*p)) { Fatal("Non-digit in gid."); return 32; } p++; } break; case CTM_F_Mode: GETFIELD(p,sep); while(*p) { if(!isdigit(*p)) { Fatal("Non-digit in mode."); return 32; } p++; } break; case CTM_F_MD5: if(j & CTM_Q_MD5_Chunk) { GETFIELDCOPY(md5,sep); /* XXX check for garbage */ } else if(j & CTM_Q_MD5_Before) { GETFIELD(p,sep); /* XXX check for garbage */ } else if(j & CTM_Q_MD5_After) { GETFIELD(p,sep); /* XXX check for garbage */ } else { fprintf(stderr,"List = 0x%x\n",j); Fatal("Unqualified MD5."); return 32; } break; case CTM_F_Count: GETBYTECNT(cnt,sep); break; case CTM_F_Bytes: if(cnt < 0) WRONG GETDATA(trash,cnt); p = MD5Data(trash,cnt,md5_1); if(md5 && strcmp(md5,p)) { Fatal("Internal MD5 failed."); return Exit_Garbage; default: fprintf(stderr,"List = 0x%x\n",j); Fatal("List had garbage."); return Exit_Garbage; } } } if(Verbose > 5) putc('\n',stderr); if(ListIt && match) printf("> %s %s\n", sp->Key, name); } Delete(md5); Delete(name); Delete(trash); q = MD5End (&ctx,md5_1); if(Verbose > 2) printf("Expecting Global MD5 <%s>\n",q); GETFIELD(p,'\n'); /* <MD5> */ if(Verbose > 2) printf("Reference Global MD5 <%s>\n",p); if(strcmp(q,p)) { Fatal("MD5 sum doesn't match."); fprintf(stderr,"\tI have:<%s>\n",q); fprintf(stderr,"\tShould have been:<%s>\n",p); return Exit_Garbage; } if (-1 != getc(fd)) { if(!Force) { Fatal("Trailing junk in CTM-file. Can Force with -F."); return 16; } } if ((Verbose > 1) && (0 == total_matches)) printf("No matches in \"%s\"\n", FileName); return (total_matches ? Exit_OK : Exit_NoMatch); }
int main( int argc, char ** argv ) { char *pszDriver = NULL; GDALDriverH hDriver = NULL; /* Check that we are running against at least GDAL 1.5 */ /* Note to developers : if we use newer API, please change the requirement */ if (atoi(GDALVersionInfo("VERSION_NUM")) < 1500) { fprintf(stderr, "At least, GDAL >= 1.5.0 is required for this version of %s, " "which was compiled against GDAL %s\n", argv[0], GDAL_RELEASE_NAME); exit(1); } GDALAllRegister(); argc = GDALGeneralCmdLineProcessor( argc, &argv, 0 ); if( argc < 1 ) exit( -argc ); if( argc < 3 ) Usage(); if( EQUAL(argv[1], "--utility_version") ) { printf("%s was compiled against GDAL %s and is running against GDAL %s\n", argv[0], GDAL_RELEASE_NAME, GDALVersionInfo("RELEASE_NAME")); return 0; } /* -------------------------------------------------------------------- */ /* Do we have a driver specifier? */ /* -------------------------------------------------------------------- */ char **papszRemainingArgv = argv + 2; int nRemainingArgc = argc - 2; if( EQUAL(papszRemainingArgv[0],"-f") && nRemainingArgc > 1 ) { pszDriver = papszRemainingArgv[1]; papszRemainingArgv += 2; nRemainingArgc -= 2; } if( pszDriver != NULL ) { hDriver = GDALGetDriverByName( pszDriver ); if( hDriver == NULL ) { fprintf( stderr, "Unable to find driver named '%s'.\n", pszDriver ); exit( 1 ); } } /* -------------------------------------------------------------------- */ /* Split out based on operation. */ /* -------------------------------------------------------------------- */ if( STARTS_WITH_CI(argv[1],"ident" /* identify" */ ) ) Identify( nRemainingArgc, papszRemainingArgv ); else if( EQUAL(argv[1],"copy") ) Copy( hDriver, nRemainingArgc, papszRemainingArgv, "copy" ); else if( EQUAL(argv[1],"rename") ) Copy( hDriver, nRemainingArgc, papszRemainingArgv, "rename" ); else if( EQUAL(argv[1],"delete") ) Delete( hDriver, nRemainingArgc, papszRemainingArgv ); else Usage(); /* -------------------------------------------------------------------- */ /* Cleanup */ /* -------------------------------------------------------------------- */ CSLDestroy( argv ); GDALDestroyDriverManager(); exit( 0 ); }
// TASK TO BE LAUNCHED SIMULTANEOUSLY to "main"!! task updateOdometry(){ float cycle = 0.01; // we want to update odometry every 0.01 s int step = 20; // we want to write odometry data each 20 steps float dSl,dSr,dS,dx,dy,dT; float x, y, th; string odometryString = ""; strcat(odometryString, "odometry = ["); // concatenate string2 into string1 string sFileName = "odometrylog.txt"; CloseAllHandles(nIoResult); // // Deletes the file if it already exists // Delete(sFileName, nIoResult); hFileHandle = 0; OpenWrite(hFileHandle, nIoResult, sFileName, nFileSize); WriteText(hFileHandle, nIoResult, odometryString); while (true){ // show each step on screen and write in the string float timeAux = nPgmTime; float timeAux2; // read tachometers, and estimate how many m. each wheel has moved since last update // RESET tachometer right after to start including the "moved" degrees turned in next iteration // locks the cpu to modify the motors power // CPU LOCKED hogCPU(); dSl = nMotorEncoder[motorA]; dSr = nMotorEncoder[motorC]; nMotorEncoder[motorA] = 0; nMotorEncoder[motorC] = 0; releaseCPU(); // CPU RELEASED // calculates odometry dSl = R * degToRad(dSl); dSr = R * degToRad(dSr); dS = (dSr + dSl) / 2; dT = (dSr - dSl) / L; dx = dS * cos(robot_odometry.th + (dT/2)); dy = dS * sin(robot_odometry.th + (dT/2)); x = robot_odometry.x + dx; y = robot_odometry.y + dy; th = normTheta(robot_odometry.th + dT); // updates odometry AcquireMutex(semaphore_odometry); set_position(robot_odometry, x, y, th); ReleaseMutex(semaphore_odometry); // Write final string into file if(step==20){ step = 0; string temp, temp2; StringFormat(temp, "%.2f, %.2f,", x, y); StringFormat(temp2, "%.2f; \n", th); strcat(temp,temp2); WriteText(hFileHandle, nIoResult, temp); } step++; // Wait until cycle is completed timeAux2 = nPgmTime; if ((timeAux2 - timeAux) < (cycle * 1000)) { Sleep( (cycle * 1000) - (timeAux2 - timeAux) ); } } }
bool Corpse::Process() { if (player_corpse_depop) return false; if (corpse_delay_timer.Check()) { for (int i = 0; i < MAX_LOOTERS; i++) allowed_looters[i] = 0; corpse_delay_timer.Disable(); return true; } if (corpse_graveyard_timer.Check()) { if (zone->HasGraveyard()) { Save(); player_corpse_depop = true; database.SendCharacterCorpseToGraveyard(corpse_db_id, zone->graveyard_zoneid(), (zone->GetZoneID() == zone->graveyard_zoneid()) ? zone->GetInstanceID() : 0, zone->GetGraveyardPoint()); corpse_graveyard_timer.Disable(); ServerPacket* pack = new ServerPacket(ServerOP_SpawnPlayerCorpse, sizeof(SpawnPlayerCorpse_Struct)); SpawnPlayerCorpse_Struct* spc = (SpawnPlayerCorpse_Struct*)pack->pBuffer; spc->player_corpse_id = corpse_db_id; spc->zone_id = zone->graveyard_zoneid(); worldserver.SendPacket(pack); safe_delete(pack); Log.Out(Logs::General, Logs::None, "Moved %s player corpse to the designated graveyard in zone %s.", this->GetName(), database.GetZoneName(zone->graveyard_zoneid())); corpse_db_id = 0; } corpse_graveyard_timer.Disable(); return false; } /* if(corpse_res_timer.Check()) { can_rez = false; corpse_res_timer.Disable(); } */ /* This is when a corpse hits decay timer and does checks*/ if (corpse_decay_timer.Check()) { /* NPC */ if (IsNPCCorpse()){ corpse_decay_timer.Disable(); return false; } /* Client */ if (!RuleB(Zone, EnableShadowrest)){ Delete(); } else { if (database.BuryCharacterCorpse(corpse_db_id)) { Save(); player_corpse_depop = true; corpse_db_id = 0; Log.Out(Logs::General, Logs::None, "Tagged %s player corpse has buried.", this->GetName()); } else { Log.Out(Logs::General, Logs::Error, "Unable to bury %s player corpse.", this->GetName()); return true; } } corpse_decay_timer.Disable(); return false; } return true; }
DescriptorGroup::~DescriptorGroup() { if (deleteOnDesctruction) Delete(); delete[] array; }
VKVertexProgram::~VKVertexProgram() { Delete(); }
SurfaceStream_TripleBuffer_Copy::~SurfaceStream_TripleBuffer_Copy() { Delete(mStaging); Delete(mConsumer); }
CTaskTrayIcon::~CTaskTrayIcon() { if( m_show ) Delete(); }