void CRemoteFileDialog::OnDblclkFilelist(NMHDR* /*pNMHDR*/, LRESULT* pResult) { int nSel = GetFirstSelectedItem(); if (nSel != -1) { int nType = GetItemType(nSel); switch (nType) { case RFDT_FILE: if (!FolderSelect()) { OnOK(); } break; case RFDT_FOLDER: CString sFolder = m_lcFiles.GetItemText(nSel, 0); SetCurrentFolder(sFolder); break; } } *pResult = 0; }
ALERROR CShieldClass::OnDesignLoadComplete (SDesignLoadCtx &Ctx) // OnDesignLoadComplete // // Bind design { ALERROR error; // Compute shield damage adjustments if (error = m_DamageAdj.Bind(Ctx, g_pUniverse->GetShieldDamageAdj(m_iDamageAdjLevel))) return error; // Load events CItemType *pType = GetItemType(); pType->InitCachedEvents(evtCount, CACHED_EVENTS, m_CachedEvents); // Hit effect if (error = m_pHitEffect.Bind(Ctx)) return error; // If the hit effect is NULL, then use default if (m_pHitEffect == NULL) m_pHitEffect.Set(g_pUniverse->FindEffectType(g_ShieldEffectUNID)); return NOERROR; }
HRESULT ISelect::GetTypeName(BSTR *pVal) { WCHAR buf[256]; GetTypeNameForType(GetItemType(), buf); *pVal = SysAllocString(buf); return S_OK; }
OP_STATUS SpeedDialSuggestionsModelItem::GetItemData(ItemData* item_data) { switch (item_data->query_type) { case INIT_QUERY: { if (GetItemType() == FOLDER_TYPE) { item_data->flags |= FLAG_INITIALLY_OPEN; } break; } case COLUMN_QUERY: { if (GetItemType() == FOLDER_TYPE) { item_data->flags |= FLAG_BOLD; } item_data->column_query_data.column_text->Set(m_title); // skin image if (m_image.HasContent()) { item_data->column_query_data.column_image = m_image.CStr(); } else if (m_url.HasContent() && GetItemType() == LINK_TYPE) { // use bookmarks icon if it has a url item_data->column_query_data.column_image = "Bookmark Visited"; } item_data->column_bitmap = m_bitmap; break; } case SKIN_QUERY: if (GetItemType() == LINK_TYPE || GetItemType() == LINK_TYPE) { item_data->skin_query_data.skin = "Speed Dial Dialog Treeview Item Skin"; } break; default: break; } return OpStatus::OK; }
void CCList::SetInfoIcon(HTREEITEM hItem, HICON hIcon) { _ASSERT(hItem && hIcon && GetItemType(hItem) == MCLCIT_INFO); TVITEM tvi = { 0 }; tvi.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; tvi.hItem = hItem; HIMAGELIST iml = TreeView_GetImageList(hTreeView, TVSIL_NORMAL); tvi.iImage = tvi.iSelectedImage = ImageList_AddIcon(iml, hIcon); // again, we don't check for duplicate icons TreeView_SetImageList(hTreeView, iml, TVSIL_NORMAL); TreeView_SetItem(hTreeView, &tvi); }
void CSolarDeviceClass::OnInstall (CInstalledDevice *pDevice, CSpaceObject *pSource, CItemListManipulator &ItemList) // OnInstall // // Device installed { // Identified when installed if (pSource->IsPlayer()) GetItemType()->SetKnown(); }
// -------------------------------------------------------- // ---------- OnRightDown --------------------------------- // -------------------------------------------------------- void MIViewBrowser::OnRightDown( wxMouseEvent& event ) { wxPoint p = event.GetPosition(); /* figure out which item was clicked on */ wxTreeItemId *id = new wxTreeItemId(treeFileList->HitTest(p)); if (id == NULL) {} else { if (id->IsOk()) { /* select that item */ treeFileList->SelectItem(id); if ( (GetItemType(id) == TREE_TYPE_SERIES) || (GetItemType(id) == TREE_TYPE_FILE) ) { /* show the menu */ ShowContextMenu(p); } } } delete id; }
void CShieldClass::OnInstall (CInstalledDevice *pDevice, CSpaceObject *pSource, CItemListManipulator &ItemList) // OnInstall // // Called when the device is installed { // Set shields to max HP SetHPLeft(pDevice, GetMaxHP(pDevice, pSource)); // Identified if (pSource->IsPlayer()) GetItemType()->SetKnown(); }
//-------------------------------------------------------------------------------------------------- static le_result_t GetManifestItems ( json_t *jsonItemPtr, ///<[IN] json object containing manifest items. Manifest_t *manPtr ///<[IN] Object containing manifest header. ) { size_t arraySize; // Manifest items are collection of action items to do. Extract all action items. arraySize = json_array_size(jsonItemPtr); if (arraySize == 0) { LE_ERROR("Bad format. Json field %s must be an array.", JSON_FIELD_ITEMS); return LE_FAULT; } json_t* value; size_t index; json_array_foreach(jsonItemPtr, index, value) // Iterates until all json items finish. { le_update_ItemType_t itemType; // Get the item type. le_result_t result = GetItemType(value, &itemType); if (result == LE_OK) { switch (itemType) { // Now fill up the item pool as per the item type. case LE_UPDATE_APP: result = GetAppItem(value, manPtr); break; case LE_UPDATE_FIRMWARE: result = GetFirmwareItem(value, manPtr); break; } } // Return immediately in case of any bad item. if(result != LE_OK) { return LE_FAULT; } }
int NETLIST_OBJECT_LIST::CountPinsInNet( unsigned aNetStart ) { int count = 0; int curr_net = GetItemNet( aNetStart ); /* Test pins connected to NetItemRef */ for( unsigned item = aNetStart; item < size(); item++ ) { // We examine only a given net. We stop the search if the net changes if( curr_net != GetItemNet( item ) ) // End of net break; if( GetItemType( item ) == NET_PIN ) count++; } return count; }
void CCyberDeckClass::GetSelectedVariantInfo (CSpaceObject *pSource, CInstalledDevice *pDevice, CString *retsLabel, int *retiAmmoLeft, CItemType **retpType) // GetSelectedVariantInfo // // Returns weapons info { if (retsLabel) *retsLabel = CString(); if (retiAmmoLeft) *retiAmmoLeft = -1; if (retpType) *retpType = GetItemType(); }
bool ItemManager::AddItemType(FCULONG id, const string& name, const string& dbTable) { ItemType* pIT = GetItemType(id); bool bResult = false; if ( !pIT ) { pIT = new ItemType; pIT->SetID(id); pIT->SetName(name); pIT->SetDBTable(dbTable); m_lockItemTypes.LockForWrite(); m_mapItemTypes[id] = pIT; m_lockItemTypes.Unlock(); bResult = true; } return bResult; }
BOOL CRichListCtrl::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_LBUTTONUP) { int nBtnID = GetWindowLong(pMsg->hwnd,GWL_ID); POINT pt; GetCursorPos(&pt); ScreenToClient(&pt); LVHITTESTINFO hitInfo; hitInfo.pt=pt; SubItemHitTest(&hitInfo); if (GetItemType(hitInfo.iItem, hitInfo.iSubItem) == CTRL_BUTTON) { this->GetParent()->SendMessage(WM_RICHLISTCTRL_MESSGAE, WM_RICHLS_CLICK_BUTTON, (LPARAM)&hitInfo); return TRUE; } } return CListCtrl::PreTranslateMessage(pMsg); }
ALERROR CArmorClass::OnBindDesign (SDesignLoadCtx &Ctx) // OnBindDesign // // Called on Bind { ALERROR error; // Compute armor damage adjustments if (error = m_DamageAdj.Bind(Ctx, g_pUniverse->GetArmorDamageAdj(m_iDamageAdjLevel))) return error; // Cache some events CItemType *pType = GetItemType(); pType->InitCachedEvents(evtCount, CACHED_EVENTS, m_CachedEvents); return NOERROR; }
void SortTable (SItemTableCtx &Ctx, const TArray<CItemType *> &List, SItemTypeList *retSorted) { int i; // Loop over all items that match and add them to // a sorted table. retSorted->DeleteAll(); for (i = 0; i < List.GetCount(); i++) { CItemType *pType = List[i]; // Add with sort key char szBuffer[1024]; wsprintf(szBuffer, "%02d%s%02d%s", pType->GetLevel(), g_szTypeCode[GetItemType(pType)], GetItemFreq(pType), pType->GetNounPhrase().GetASCIIZPointer()); retSorted->Insert(CString(szBuffer), pType); } }
int CRemoteFileDialog::FindMatch(LPCTSTR szFilename) { CString sFilename(szFilename); sFilename.TrimLeft(); sFilename.TrimRight(); if (sFilename.IsEmpty()) { return -1; } int nMatch = -1; LVFINDINFO lvfi = { LVFI_STRING, szFilename, 0, { 0, 0 }, VK_DOWN }; do { nMatch = m_lcFiles.FindItem(&lvfi, nMatch); } while (nMatch != -1 && !(GetItemType(nMatch) == RFDT_FILE || FolderSelect())); return nMatch; }
bool CUIMpTradeWnd::TryToAttachItemAsAddon(SBuyItemInfo* itm, SBuyItemInfo* itm_parent) { bool b_res = false; item_addon_type _addon_type = GetItemType(itm->m_name_sect); if(_addon_type==at_not_addon) return b_res; if(itm_parent) { if(CanAttachAddon(itm_parent,_addon_type)) { return AttachAddon (itm_parent, _addon_type); } }else // auto-attach for(u32 i=0; i<2; ++i) { u32 list_idx = (i==0) ? e_rifle : e_pistol; CUIDragDropListEx* _list = m_list[list_idx]; VERIFY (_list->ItemsCount() <= 1); CUICellItem* ci = (_list->ItemsCount()) ? _list->GetItemIdx(0) : NULL; if(!ci) return false; SBuyItemInfo* attach_to = FindItem(ci); if(CanAttachAddon(attach_to,_addon_type)) { AttachAddon (attach_to,_addon_type); b_res = true; break; } } return b_res; }
// read separate table from combat report bool CSpeedKernel::ReadCRTable(genstring Table, vector<SItem> &Fleet, ShipTechs& techs) { genstring::size_type f=0, f2=0, f3=0; genstring anz; SItem tmp_SItem; int team = -1; // empty techs memset(&techs, 0, sizeof(ShipTechs)); f2 = Table.find(m_KBTable[1]); Fleet.clear(); // weapon tech f = Table.find(m_KBTechs[0]); if(f != genstring::npos && f < f2) { anz = Table.substr(f + m_KBTechs[0].length() + 1, 5); techs.Weapon = _ttoi(anz.c_str()) / 10; } // shield tech f = Table.find(m_KBTechs[1]); if(f != genstring::npos && f < f2) { anz = Table.substr(f+ m_KBTechs[1].length() + 1, 5); techs.Shield = _ttoi(anz.c_str()) / 10; } // hull tech f = Table.find(m_KBTechs[2]); if(f != genstring::npos && f < f2) { anz = Table.substr(f + m_KBTechs[2].length() + 1, 5); techs.Armour = _ttoi(anz.c_str()) / 10; } f = Table.find(m_KBTable[0]); if(f != genstring::npos && f < f2) { f += m_KBTable[0].length() + 1; f2 = Table.find(_T("\n"), f); } if(f2 == genstring::npos || f == genstring::npos) return false; // 'collect' unit types in correct order while(f < f2) { f3 = Table.find(_T(' '), f); if(f3 > f2) f3 = Table.find(_T('\n'), f); genstring tmp2 = Table.substr(f, f3-f); tmp_SItem.Type = GetItemType(tmp2); Fleet.push_back(tmp_SItem); f = f3 + 1; } f = Table.find(m_KBTable[1], f2 ) + m_KBTable[1].length(); if((f2 = Table.find(_T("\n"), f)) == genstring::npos) f2 = Table.length(); if(f == genstring::npos) return false; // remove dots from 'Number'-line for(size_t i = f; i < f2; i++) { if(Table[i] == '.') Table.erase(i, 1); } size_t n = 0; // get number of units of different types while(f < f2 && f < Table.length()) { f3 = Table.find(_T(' '), f+1); if(f3 == genstring::npos) f3 = Table.length(); anz = Table.substr(f, f3-f); if(n < Fleet.size()) Fleet[n++].Num = _ttoi(anz.c_str()); else break; f = f3 + 1; } // try to calculate the technologies from the table, if needed ITEM_TYPE t = Fleet[0].Type; f = Table.find(m_KBTable[1]); if((f2 = Table.find(m_KBTable[2], f)) != genstring::npos && techs.Weapon == 0) { genstring val = Table.substr(f2 + m_KBTable[2].length()); #ifdef UNICODE char c[10]; wcstombs(c, val.c_str(), 9); float weap = atof(c); #else float weap = atof(val.c_str()); #endif techs.Weapon = (weap / Dams[MAX_PLAYERS_PER_TEAM][ATTER][t] - 1) * 10; } if((f2 = Table.find(m_KBTable[3], f)) != genstring::npos && techs.Shield == 0) { genstring val = Table.substr(f2 + m_KBTable[3].length()); #ifdef UNICODE char c[10]; wcstombs(c, val.c_str(), 9); float shield = atof(c); #else float shield = atof(val.c_str()); #endif techs.Shield = (shield / MaxShields[MAX_PLAYERS_PER_TEAM][ATTER][t] - 1) * 10; } if((f2 = Table.find(m_KBTable[4], f)) != genstring::npos && techs.Armour == 0) { genstring val = Table.substr(f2 + m_KBTable[4].length()); #ifdef UNICODE char c[10]; wcstombs(c, val.c_str(), 9); float hull = atof(c); #else float hull = atof(val.c_str()); #endif techs.Armour = (hull / MaxLifes[MAX_PLAYERS_PER_TEAM][ATTER][t] - 1) * 10; } return true; }
void GenerateItemTable (CUniverse &Universe, CXMLElement *pCmdLine) { ALERROR error; int i, j; // Compute the criteria CItemCriteria Crit; CString sCriteria; if (pCmdLine->FindAttribute(CRITERIA_ATTRIB, &sCriteria)) CItem::ParseCriteria(sCriteria, &Crit); else CItem::InitCriteriaAll(&Crit); // Generate a table CSymbolTable Table(FALSE, TRUE); // Loop over all items that match and add them to // a sorted table. for (j = 0; j < Universe.GetItemTypeCount(); j++) { CItemType *pType = Universe.GetItemType(j); CItem Item(pType, 1); if (!Item.MatchesCriteria(Crit)) continue; // Figure out the sort order char szBuffer[1024]; wsprintf(szBuffer, "%02d%s%02d%s", pType->GetLevel(), g_szTypeCode[GetItemType(pType)], GetItemFreq(pType), pType->GetNounPhrase().GetASCIIZPointer()); Table.AddEntry(CString(szBuffer), (CObject *)pType); } // If we need to output total count, then load the table CSymbolTable TotalCount(TRUE, TRUE); if (pCmdLine->GetAttributeBool(FIELD_TOTAL_COUNT)) { if (error = LoadTotalCount(TOTAL_COUNT_FILENAME, TotalCount)) return; } // If we've got any entries in the table, output now if (Table.GetCount()) { // Generate a list of columns to display CStringArray Cols; Cols.AppendString(FIELD_LEVEL); Cols.AppendString(FIELD_TYPE); Cols.AppendString(FIELD_FREQUENCY); Cols.AppendString(FIELD_NAME); // More columns from command-line if (pCmdLine->GetAttributeBool(FIELD_AVERAGE_COUNT)) Cols.AppendString(FIELD_AVERAGE_COUNT); if (pCmdLine->GetAttributeBool(FIELD_BALANCE)) Cols.AppendString(FIELD_BALANCE); if (pCmdLine->GetAttributeBool(FIELD_COST)) Cols.AppendString(FIELD_COST); if (pCmdLine->GetAttributeBool(FIELD_INSTALL_COST)) Cols.AppendString(FIELD_INSTALL_COST); if (pCmdLine->GetAttributeBool(FIELD_MASS)) Cols.AppendString(FIELD_MASS); if (pCmdLine->GetAttributeBool(FIELD_TOTAL_COUNT)) Cols.AppendString(FIELD_TOTAL_COUNT); if (pCmdLine->GetAttributeBool(FIELD_REFERENCE)) Cols.AppendString(FIELD_REFERENCE); if (pCmdLine->GetAttributeBool(FIELD_HP)) Cols.AppendString(FIELD_HP); if (pCmdLine->GetAttributeBool(FIELD_HP_BONUS)) Cols.AppendString(FIELD_HP_BONUS); if (pCmdLine->GetAttributeBool(FIELD_REGEN)) Cols.AppendString(FIELD_REGEN); if (pCmdLine->GetAttributeBool(FIELD_FIRE_DELAY)) Cols.AppendString(FIELD_FIRE_DELAY); if (pCmdLine->GetAttributeBool(FIELD_THRUST)) Cols.AppendString(FIELD_THRUST); if (pCmdLine->GetAttributeBool(FIELD_POWER)) Cols.AppendString(FIELD_POWER); if (pCmdLine->GetAttributeBool(FIELD_POWER_PER_SHOT)) Cols.AppendString(FIELD_POWER_PER_SHOT); if (pCmdLine->GetAttributeBool(FIELD_AVERAGE_DAMAGE)) Cols.AppendString(FIELD_AVERAGE_DAMAGE); if (pCmdLine->GetAttributeBool(FIELD_MAX_SPEED)) Cols.AppendString(FIELD_MAX_SPEED); // Output the header for (j = 0; j < Cols.GetCount(); j++) { if (j != 0) printf("\t"); printf(Cols.GetStringValue(j).GetASCIIZPointer()); } printf("\n"); // Output each row for (i = 0; i < Table.GetCount(); i++) { CItemType *pType = (CItemType *)Table.GetValue(i); for (j = 0; j < Cols.GetCount(); j++) { if (j != 0) printf("\t"); CString sField = Cols.GetStringValue(j); CString sValue = pType->GetDataField(sField); if (strEquals(sField, FIELD_AVERAGE_DAMAGE) || strEquals(sField, FIELD_POWER_PER_SHOT)) printf("%.2f", strToInt(sValue, 0, NULL) / 1000.0); else if (strEquals(sField, FIELD_POWER)) printf("%.1f", strToInt(sValue, 0, NULL) / 1000.0); else if (strEquals(sField, FIELD_TOTAL_COUNT)) { double rCount = 0.0; CString sKey = strFromInt(pType->GetUNID(), FALSE); EntryInfo *pEntry; if (TotalCount.Lookup(sKey, (CObject **)&pEntry) == NOERROR) rCount = pEntry->rTotalCount; printf("%.2f", rCount); } else printf(sValue.GetASCIIZPointer()); } printf("\n"); } printf("\n"); } else printf("No entries match criteria.\n"); }
void CRemoteFileDialog::OnItemchangedFilelist(NMHDR* /*pNMHDR*/, LRESULT* pResult) { *pResult = 0; if (m_bFilling) { return; } // rebuild results at the same time int nSelCount = m_lcFiles.GetSelectedCount(); if (nSelCount == 1) { int nSel = GetFirstSelectedItem(); if (GetItemType(nSel) == RFDT_FILE || FolderSelect()) { // save result CString sFileName = m_lcFiles.GetItemText(nSel, 0); CString sFilePath(sFileName); if (!m_bRoot) { sFilePath.Format(_T("%s/%s"), m_sCurFolder, sFileName); } m_aFiles.RemoveAll(); m_aFiles.Add(FILERESULT(sFilePath, GetItemSize(nSel))); // update current filename m_sFilenames = sFileName; } } else if (nSelCount > 1) { m_sFilenames.Empty(); POSITION pos = m_lcFiles.GetFirstSelectedItemPosition(); while (pos) { int nItem = m_lcFiles.GetNextSelectedItem(pos); if (nItem != -1 && GetItemType(nItem) == RFDT_FILE) { // save result CString sFileName = m_lcFiles.GetItemText(nItem, 0); CString sFilePath(sFileName); if (!m_bRoot) { sFilePath.Format(_T("%s/%s"), m_sCurFolder, sFileName); } m_aFiles.Add(FILERESULT(sFilePath, GetItemSize(nItem))); // update current filename CString sItem; sItem.Format(_T("\"%s\" "), sFileName); m_sFilenames += sItem; } } } UpdateData(FALSE); UpdateOKButton(FALSE); }
/* The following steps are taken when showing shell extensions on an existing menu: 1. Load shell extensions. 2. Build and show menu. 3. Pass selection to shell extension (if necessary). 4. Release shell extensions (also free the DLL's they reside in). */ CContextMenuManager::CContextMenuManager(ContextMenuType_t ContextMenuType, LPCITEMIDLIST pidlDirectory,IDataObject *pDataObject,IUnknown *pUnkSite) { ItemType_t ItemType = GetItemType(pidlDirectory); const TCHAR *pszRegContext = NULL; switch(ItemType) { case ITEM_TYPE_FOLDER: if(ContextMenuType == CONTEXT_MENU_TYPE_DRAG_AND_DROP) { pszRegContext = CMH_FOLDER_DRAG_AND_DROP; } break; case ITEM_TYPE_DIRECTORY: if(ContextMenuType == CONTEXT_MENU_TYPE_BACKGROUND) { pszRegContext = CMH_DIRECTORY_BACKGROUND; } else if(ContextMenuType == CONTEXT_MENU_TYPE_DRAG_AND_DROP) { pszRegContext = CMH_DIRECTORY_DRAG_AND_DROP; } break; } if(pszRegContext == NULL) { return; } BOOL bRet = LoadContextMenuHandlers(pszRegContext,m_ContextMenuHandlers); if(!bRet) { return; } /* Initialize the shell extensions, and extract an IContextMenu interface. */ for each(auto ContextMenuHandler in m_ContextMenuHandlers) { IShellExtInit *pShellExtInit = NULL; HRESULT hr; IUnknown *pUnknown = ContextMenuHandler.pUnknown; hr = pUnknown->QueryInterface(IID_PPV_ARGS(&pShellExtInit)); if(SUCCEEDED(hr)) { MenuHandler_t MenuHandler; IContextMenu *pContextMenu = NULL; IContextMenu2 *pContextMenu2 = NULL; IContextMenu3 *pContextMenu3 = NULL; pShellExtInit->Initialize(pidlDirectory,pDataObject,NULL); pShellExtInit->Release(); if(pUnkSite != NULL) { IObjectWithSite *pObjectSite = NULL; hr = pUnknown->QueryInterface(IID_PPV_ARGS(&pObjectSite)); if(SUCCEEDED(hr)) { pObjectSite->SetSite(pUnkSite); pObjectSite->Release(); } } hr = pUnknown->QueryInterface(IID_PPV_ARGS(&pContextMenu3)); MenuHandler.pContextMenuActual = pContextMenu3; if(FAILED(hr) || pContextMenu3 == NULL) { hr = pUnknown->QueryInterface(IID_PPV_ARGS(&pContextMenu2)); MenuHandler.pContextMenuActual = pContextMenu2; if(FAILED(hr) || pContextMenu2 == NULL) { hr = pUnknown->QueryInterface(IID_PPV_ARGS(&pContextMenu)); MenuHandler.pContextMenuActual = pContextMenu; } } MenuHandler.pContextMenu = pContextMenu; MenuHandler.pContextMenu2 = pContextMenu2; MenuHandler.pContextMenu3 = pContextMenu3; MenuHandler.uStartID = 0; MenuHandler.uEndID = 0; m_MenuHandlers.push_back(MenuHandler); } }
//(1)支持and与or以构建复杂的条件 //(2)支持=与!=操作 //(3)值用单引号扩起(两个连续单引号表示一个单引号值) //(4)日期的值格式为:[a,b];[a,b);(a,b];(a,b); //(5)Host,Date,App,Module,Func,File,Key,Level,DMN,AIN,Line bool CLogChooser::AddChooser(const char* sCond) { bool bFirst = true; const char* sWhere = sCond; m_oMutex.Leave(); AddGroup(); if(sCond)while(sCond[0]) { bool bNot, bIncBeg, bIncEnd; CString oName, oVal1, oVal2; if(!sCond[0]) break; if(GetIdentifier(sCond, oName)) { RemoveEmptyGroup(); m_oMutex.Leave(); FocpError(("CLogChooser::AddChooser(%u:%s): get compare item failure", sCond-sWhere, sWhere)); return false; } if(!bFirst) { if(!oName.Compare("and", false)) continue; if(!oName.Compare("or", false)) { AddGroup(); continue; } } bFirst = false; uint32 nRet, nType = GetItemType(oName); if(nType >= 11) { RemoveEmptyGroup(); m_oMutex.Leave(); FocpError(("CLogChooser::AddChooser(%u:%s): the item '%s' is invalid", sCond-sWhere, sWhere, oName.GetStr())); return false; } if(GetOperator(sCond, bNot)) { RemoveEmptyGroup(); m_oMutex.Leave(); FocpError(("CLogChooser::AddChooser(%u:%s): get oprand failure", sCond-sWhere, sWhere)); return false; } if(nType == 1) nRet = GetDateTime(sCond, oVal1, oVal2, bIncBeg, bIncEnd); else if(nType >= 7) nRet = GetInt(sCond, oVal1); else nRet = GetString(sCond, oVal1); if(nRet) { RemoveEmptyGroup(); m_oMutex.Leave(); FocpError(("CLogChooser::AddChooser(%u:%s): get value failure", sCond-sWhere, sWhere)); return false; } AddCond(nType, bNot, oVal1, oVal2, bIncBeg, bIncEnd); } RemoveEmptyGroup(); m_oMutex.Leave(); return true; }
void NETLIST_OBJECT_LIST::TestforSimilarLabels() { // Similar labels which are different when using case sensitive comparisons // but are equal when using case insensitive comparisons // list of all labels (used the better item to build diag messages) std::vector<NETLIST_OBJECT*> fullLabelList; // list of all labels , each label appears only once (used to to detect similar labels) std::set<NETLIST_OBJECT*, compare_labels> uniqueLabelList; wxString msg; // Build a list of differents labels. If inside a given sheet there are // more than one given label, only one label is stored. // not also the sheet labels are not taken in account for 2 reasons: // * they are in the root sheet but they are seen only from the child sheet // * any mismatch between child sheet hierarchical labels and the sheet label // already detected by ERC for( unsigned netItem = 0; netItem < size(); ++netItem ) { switch( GetItemType( netItem ) ) { case NET_LABEL: case NET_BUSLABELMEMBER: case NET_PINLABEL: case NET_GLOBBUSLABELMEMBER: case NET_HIERLABEL: case NET_HIERBUSLABELMEMBER: case NET_GLOBLABEL: // add this label in lists uniqueLabelList.insert( GetItem( netItem ) ); fullLabelList.push_back( GetItem( netItem ) ); break; case NET_SHEETLABEL: case NET_SHEETBUSLABELMEMBER: default: break; } } // build global labels and compare std::set<NETLIST_OBJECT*, compare_label_names> loc_labelList; std::set<NETLIST_OBJECT*>::const_iterator it; for( it = uniqueLabelList.begin(); it != uniqueLabelList.end(); ++it ) { if( (*it)->IsLabelGlobal() ) loc_labelList.insert( *it ); } // compare global labels (same label names appears only once in list) for( it = loc_labelList.begin(); it != loc_labelList.end(); ++it ) { std::set<NETLIST_OBJECT*>::const_iterator it_aux = it; for( ++it_aux; it_aux != loc_labelList.end(); ++it_aux ) { if( (*it)->m_Label.CmpNoCase( (*it_aux)->m_Label ) == 0 ) { // Create new marker for ERC. int cntA = countIndenticalLabels( fullLabelList, *it ); int cntB = countIndenticalLabels( fullLabelList, *it_aux ); if( cntA <= cntB ) SimilarLabelsDiagnose( (*it), (*it_aux) ); else SimilarLabelsDiagnose( (*it_aux), (*it) ); } } } // Build paths list std::set<NETLIST_OBJECT*, compare_paths> pathsList; for( it = uniqueLabelList.begin(); it != uniqueLabelList.end(); ++it ) pathsList.insert( *it ); // Examine each label inside a sheet path: for( it = pathsList.begin(); it != pathsList.end(); ++it ) { loc_labelList.clear(); std::set<NETLIST_OBJECT*>::const_iterator it_aux = uniqueLabelList.begin(); for( ; it_aux != uniqueLabelList.end(); ++it_aux ) { if( (*it)->m_SheetPath.Path() == (*it_aux)->m_SheetPath.Path() ) loc_labelList.insert( *it_aux ); } // at this point, loc_labelList contains labels of the current sheet path. // Detect similar labels (same label names appears only once in list) std::set<NETLIST_OBJECT*>::const_iterator ref_it; for( ref_it = loc_labelList.begin(); ref_it != loc_labelList.end(); ++ref_it ) { NETLIST_OBJECT* ref_item = *ref_it; it_aux = ref_it; for( ++it_aux; it_aux != loc_labelList.end(); ++it_aux ) { // global label versus global label was already examined. // here, at least one label must be local if( ref_item->IsLabelGlobal() && (*it_aux)->IsLabelGlobal() ) continue; if( ref_item->m_Label.CmpNoCase( (*it_aux)->m_Label ) == 0 ) { // Create new marker for ERC. int cntA = countIndenticalLabels( fullLabelList, ref_item ); int cntB = countIndenticalLabels( fullLabelList, *it_aux ); if( cntA <= cntB ) SimilarLabelsDiagnose( ref_item, (*it_aux) ); else SimilarLabelsDiagnose( (*it_aux), ref_item ); } } } } }
void RTCPSDESPacket::Dump() { RTCPPacket::Dump(); if (!IsKnownFormat()) { std::cout << " Unknown format" << std::endl; return; } if (!GotoFirstChunk()) { std::cout << " No chunks present" << std::endl; return; } do { std::cout << " SDES Chunk for SSRC: " << GetChunkSSRC() << std::endl; if (!GotoFirstItem()) std::cout << " No items found" << std::endl; else { do { std::cout << " "; switch (GetItemType()) { case None: std::cout << "None "; break; case CNAME: std::cout << "CNAME "; break; case NAME: std::cout << "NAME "; break; case EMAIL: std::cout << "EMAIL "; break; case PHONE: std::cout << "PHONE "; break; case LOC: std::cout << "LOC "; break; case TOOL: std::cout << "TOOL "; break; case NOTE: std::cout << "NOTE "; break; case PRIV: std::cout << "PRIV "; break; case Unknown: default: std::cout << "Unknown "; } std::cout << "Length: " << GetItemLength() << std::endl; if (GetItemType() != PRIV) { char str[1024]; memcpy(str,GetItemData(),GetItemLength()); str[GetItemLength()] = 0; std::cout << " Value: " << str << std::endl; } #ifdef RTP_SUPPORT_SDESPRIV else // PRIV item { char str[1024]; memcpy(str,GetPRIVPrefixData(),GetPRIVPrefixLength()); str[GetPRIVPrefixLength()] = 0; std::cout << " Prefix: " << str << std::endl; std::cout << " Length: " << GetPRIVPrefixLength() << std::endl; memcpy(str,GetPRIVValueData(),GetPRIVValueLength()); str[GetPRIVValueLength()] = 0; std::cout << " Value: " << str << std::endl; std::cout << " Length: " << GetPRIVValueLength() << std::endl; } #endif // RTP_SUPPORT_SDESPRIV } while (GotoNextItem()); } } while (GotoNextChunk()); }
void Odin(char *Packet) { sOdin *p = (sOdin*)Packet; MOB *player = (MOB*)GetMobFromIndex(p->Header.ClientID); MOB *thisclient = (MOB*)GetMobFromIndex(Packet[6]); short ClientID = Packet[6]; short emb1 = Packet[76], emb2 = Packet[77], item = Packet[78], ref1 = Packet[79], ref2 = Packet[80], ref3 = Packet[81], ref4 = Packet[82]; char tmp[1024], tmp2[1024], msg[100]; int RefDoItem = GetItemSanc(ClientID,1,item); int RefDaRef1 = GetItemSanc(ClientID,1,ref1); int RefDaRef2 = GetItemSanc(ClientID,1,ref2); int RefDaRef3 = GetItemSanc(ClientID,1,ref3); int RefDaRef4 = GetItemSanc(ClientID,1,ref4); int chance = rand() % 100; int refatual = PegaRef(ClientID, item); srand(time(NULL)); srand(time(NULL) / 5 * (rand() % 500) * 5); // Refinação +12 ~ +15 Tentativa com 2 Emblema da proteçao if(thisclient->Inventory[emb1].Index == 4043 || thisclient->Inventory[emb1].Index == 3448 || thisclient->Inventory[emb2].Index == 4043 || thisclient->Inventory[emb2].Index == 3448) { if(PegaRef(ClientID, item) == 15) { SendClientMsg(ClientID, "Refinação Máxima!"); SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); return; } else { int chance = rand() % 100; int chance_total; chance_total = ReturnChance(ClientID, ref1, refatual) + ReturnChance(ClientID, ref2, refatual) + ReturnChance(ClientID, ref3, refatual) + ReturnChance(ClientID, ref4, refatual) - (PegaRef(ClientID, item) - 10); if((thisclient->Inventory[emb1].Index == 4043) && (thisclient->Inventory[emb2].Index == 4043)) // Item protegido { if(chance<=chance_total && chance <= 95) // Sucesso na refinação { thisclient->Inventory[emb1].Index = 0; thisclient->Inventory[emb2].Index = 0; thisclient->Inventory[ref1].Index = 0; thisclient->Inventory[ref2].Index = 0; thisclient->Inventory[ref3].Index = 0; thisclient->Inventory[ref4].Index = 0; thisclient->Inventory[item].EFV1 += 4; sprintf(tmp, "Sucesso na composição [%d/%d]", chance, chance_total); SendClientMsg(ClientID, tmp); SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); SendALL(ClientID); } else if(chance >= 95 && chance <= 100)// Aconteceu uma tragédia. Extração, amigo! { thisclient->Inventory[emb1].Index = 0; thisclient->Inventory[emb2].Index = 0; thisclient->Inventory[ref1].Index = 0; thisclient->Inventory[ref2].Index = 0; thisclient->Inventory[ref3].Index = 0; thisclient->Inventory[ref4].Index = 0; thisclient->Inventory[item+1].Index = GetItemType(ClientID, thisclient->Inventory[item].Index); thisclient->Inventory[item+1].EF1 = thisclient->Inventory[item].EF1; thisclient->Inventory[item+1].EF2 = thisclient->Inventory[item].EF2; thisclient->Inventory[item+1].EF3 = thisclient->Inventory[item].EF3; thisclient->Inventory[item+1].EFV1 = thisclient->Inventory[item].EFV1; thisclient->Inventory[item+1].EFV2 = thisclient->Inventory[item].EFV2; thisclient->Inventory[item+1].EFV3 = thisclient->Inventory[item].EFV3; thisclient->Inventory[item].Index = 0; sprintf(tmp, "Houve uma falha durante a composição (%d/%d) - Item destruído", chance, chance_total); SendClientMsg(ClientID, tmp); SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); SendALL(ClientID); } else { thisclient->Inventory[emb1].Index = 0; thisclient->Inventory[emb2].Index = 0; thisclient->Inventory[ref1].Index = 0; thisclient->Inventory[ref2].Index = 0; thisclient->Inventory[ref3].Index = 0; thisclient->Inventory[ref4].Index = 0; thisclient->Inventory[item].EFV1 -= 4; sprintf(tmp, "Houve uma falha durante a composição (%d/%d)", chance, chance_total); SendClientMsg(ClientID, tmp); SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); SendALL(ClientID); } } else { // Não são emblemas - Chance de quebrar //5110, 5124, 5117, 5129, 5114, 5125,5128. } } // Não é refinação máxima } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cRefCapa)) { RefiCapa(p->Header.ClientID,p->slot); return; } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cPistaRunas)) { PistaRunas(p->Header.ClientID,p->slot); return; } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cSecretaSol)) { SecretaSol(p->Header.ClientID,p->slot); return; } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cSecretaTerra)) { SecretaTerra(p->Header.ClientID,p->slot); return; } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cSecretaAgua)) { SecretaAgua(p->Header.ClientID,p->slot); return; } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cSecretaVento)) { SecretaVento(p->Header.ClientID,p->slot); return; } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cDesbloq40)) { DesbloqLvL40(p->Header.ClientID,p->slot); return; } else if(CompositionValidt(p->Header.ClientID,7,p->slot,cDesbloq90)) { DesbloqLvL90(p->Header.ClientID,p->slot); return; } else { SendClientMsg(p->Header.ClientID, "Composição Invalida"); SendClientSignalParm(p->Header.ClientID,0x7530, 0x3A7, 2); return; } }
bool CCyberDeckClass::Activate (CInstalledDevice *pDevice, CSpaceObject *pSource, CSpaceObject *pTarget, bool *retbSourceDestroyed, bool *retbConsumedItems) // Activate // // Activate device { // Init if (retbConsumedItems) *retbConsumedItems = false; // Won't work if not enabled if (!pDevice->IsEnabled() || pDevice->IsDamaged() || pDevice->IsDisrupted()) return false; // We better have a target if (pTarget == NULL) return false; // The attack has a random chance of succeeding. If it did not // succeed, we're done. if (mathRandom(1, 100) > m_iAttackChance) { // There is a chance that the target gets to find out about the // attempted attack. // Counts as an attempt (meaning we consume power) return true; } // See if the attack is blocked by defenses if (m_Program.iAILevel < pTarget->GetCyberDefenseLevel()) { // There is a chance that the attacker will need to reboot // Counts as an attempt return true; } // Run the program pTarget->ProgramDamage(pSource, m_Program); // Identify when program is run if (pSource->IsPlayer()) GetItemType()->SetKnown(); return true; }
void Item::UpdatePlayerMagnet(float dt) { if(IsItemPickedUp()) { if(m_disappear) { m_renderScale = m_disappearScale; if(m_disappearTimer <= 0.0f) { if(m_disappearAnimationStarted == false) { Interpolator::GetInstance()->AddFloatInterpolation(&m_disappearScale, m_disappearScale, 0.0f, 0.5f, -100.0f, NULL, _PickupAnimationFinished, this); m_disappearAnimationStarted = true; } } } else { vec3 diff = m_pickupPos - m_position; float lengthSize = length(diff); if(lengthSize < 0.01f) { m_disappear = true; m_disappearTimer = m_disappearDelay; m_disappearScale = m_renderScale; } else { diff = normalize(diff); m_position += diff * lengthSize*0.25f; } } } else { if(IsCollectible()) { if(m_droppedInventoryItem == NULL || m_pInventoryManager->CanAddInventoryItem(GetItemTitle(), GetItemType(), 1)) { float yAdditionalMaagnetOffset = 0.5f; // Magnet towards the player if(m_pPlayer->IsDead() == false && length(m_pPlayer->GetCenter() - GetCenter()) < m_pPlayer->GetRadius() + 4.0f) { vec3 toPlayer = (m_pPlayer->GetCenter()+vec3(0.0f, yAdditionalMaagnetOffset, 0.0f)) - GetCenter(); SetGravityDirection(toPlayer); SetVelocity(normalize(toPlayer)*(20.0f/length(toPlayer))); SetWorldCollide(false); } else { SetGravityDirection(vec3(0.0f, -1.0f, 0.0f)); SetWorldCollide(true); } // Check if we have been picked up by the player if(m_pPlayer->IsDead() == false && length((m_pPlayer->GetCenter()+vec3(0.0f, yAdditionalMaagnetOffset, 0.0f)) - GetCenter()) < m_pPlayer->GetRadius()) { SetPickupGotoPosition(m_pPlayer->GetCenter() + vec3(0.0f, 2.5f, 0.0f)); SetVelocity(vec3(0.0f, 0.0f, 0.0f)); SetGravityDirection(vec3(0.0f, 0.0f, 0.0f)); if(m_itemType == eItem_Heart) { m_pPlayer->GiveHealth(10.0f); } if(m_itemType == eItem_Coin) { m_pPlayer->GiveCoins(1); } if(m_droppedInventoryItem != NULL) { m_pInventoryManager->AddInventoryItem(m_droppedInventoryItem, -1, -1); } } } } } }