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;
}
Example #2
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;
	}
Example #3
0
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;
}
Example #5
0
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();
	}
Example #7
0
// --------------------------------------------------------
// ---------- 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;
}
Example #8
0
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();
	}
Example #9
0
//--------------------------------------------------------------------------------------------------
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;
        }
    }
Example #10
0
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();
	}
Example #12
0
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;
}
Example #13
0
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);
}
Example #14
0
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;
	}
Example #15
0
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;
}
Example #17
0
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;
}
Example #18
0
// 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;
}
Example #19
0
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);
		}
	}
Example #22
0
//(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;
}
Example #23
0
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 );
                }
            }
        }
    }
}
Example #24
0
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());
}
Example #25
0
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;
	}
Example #27
0
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);
					}
				}
			}
		}
	}
}