コード例 #1
0
ファイル: board.c プロジェクト: Jaconil/backgammon
/* Procedure pour afficher les boutons et popup
 * @param SDL_Surface* window
 *     Surface de la fenetre
 * @param S_GameState gameState
 *     Etat du jeu
 */
void DisplayBoardOverlays(SDL_Surface* window, S_GameState gameState)
{
    switch (gameState.currentStage)
    {
        case WAITING_FIRST_ROLL:
            DisplayButton(window, CENTER_X, CENTER_Y, "Lancer", gameState.selected == BUTTON1);
            break;
        case WAITING_ROLL_DBL:
            // On affiche les boutons que si le joueur est humain
            if (IsHuman(&gameState, 1))
            {
                DisplayButton(window, (gameState.currentPlayer == EPlayer1) ? CENTER_LEFT : CENTER_RIGHT,
                                        CENTER_Y - 20, "Doubler", gameState.selected == BUTTON1);
                DisplayButton(window, (gameState.currentPlayer == EPlayer1) ? CENTER_LEFT : CENTER_RIGHT,
                                        CENTER_Y + 20, "Lancer", gameState.selected == BUTTON2);
            }
            break;
        case WAITING_ROLL:
            // On affiche les boutons que si le joueur est humain
            if (IsHuman(&gameState, 1))
            {
                DisplayButton(window, (gameState.currentPlayer == EPlayer1) ? CENTER_LEFT : CENTER_RIGHT,
                                        CENTER_Y, "Lancer", gameState.selected == BUTTON1);
            }
            break;
        case FIRST_ROLL_POPUP:
            DisplayDice(window, gameState);

            // On affiche la popup que si un humain joue
            if (gameState.gameConfig.mode != AI_AI)
            {
                if (gameState.currentPlayer == EPlayer1)
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer1, "commence.");
                else
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer2, "commence.");

                DisplayButton(window, CENTER_X, 320, "OK", gameState.selected == BUTTON1);
            }
            break;
        case SELECT_ZONE_DST:
            DisplayNumbers(window, gameState);
            DisplayDice(window, gameState);

            if (gameState.gameConfig.option && gameState.gameConfig.mode != AI_AI)
                DisplayHelp(window, gameState);
            break;
        case PASS_POPUP:
            DisplayDice(window, gameState);

            // On affiche la popup que si le joueur est humain
            if (IsHuman(&gameState, 1))
            {
                if (gameState.currentPlayer == EPlayer1)
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer1, "passe son tour.");
                else
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer2, "passe son tour.");

                DisplayButton(window, CENTER_X, 320, "OK", gameState.selected == BUTTON1);
            }
            break;
        case DOUBLE_POPUP:
            // On affiche la popup que si le joueur adverse est humain
            if (IsHuman(&gameState, 0))
            {
                if (gameState.currentPlayer == EPlayer1)
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer1, "veut doubler.");
                else
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer2, "veut doubler.");

                DisplayButton(window, CENTER_X - 60, 320, "Accepter", gameState.selected == BUTTON1);
                DisplayButton(window, CENTER_X + 60, 320, "Refuser", gameState.selected == BUTTON2);
            }
            break;
        case FINISH_GAME_POPUP:
            DisplayDice(window, gameState);

            // On affiche la popup que si un joueur est humain
            if (gameState.gameConfig.mode != AI_AI)
            {
                if (gameState.currentPlayer == EPlayer1)
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer1, "a gagné la manche.");
                else
                    DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer2, "a gagné la manche.");

                DisplayButton(window, CENTER_X, 320, "OK", gameState.selected == BUTTON1);
            }
            break;
        case FINISH_MATCH_POPUP:
            DisplayDice(window, gameState);

            if (gameState.currentPlayer == EPlayer1)
                DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer1, "a gagné le match.");
            else
                DisplayPopup(window, 3, "Le joueur", gameState.gameConfig.namePlayer2, "a gagné le match.");

            DisplayButton(window, CENTER_X, 320, "Menu", gameState.selected == BUTTON1);

            break;
        default:
            DisplayNumbers(window, gameState);
            DisplayDice(window, gameState);
            break;
    }
}
コード例 #2
0
ファイル: PropertyList.cpp プロジェクト: Deepfreeze32/taken
void CPropertyList::OnSelchange() {
	CRect rect;
	CString lBoxSelText;
	static int recurse = 0;
	//m_curSel = GetCurSel();


	GetItemRect(m_curSel,rect);
	rect.left = m_nDivider;

	CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel);

	if (updateInspectors) {
		g_Inspectors->entityDlg.SetKeyVal(pItem->m_propName, pItem->m_curValue);
	}

	if (m_btnCtrl) {
		m_btnCtrl.ShowWindow(SW_HIDE);
	}

	if (pItem->m_nItemType==PIT_COMBO) {
		//display the combo box.  If the combo box has already been
		//created then simply move it to the new location, else create it
		m_nLastBox = 0;
		if (m_cmbBox) {
			m_cmbBox.MoveWindow(rect);
		} else {	
			rect.bottom += 300;
			m_cmbBox.Create(CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE | WS_CHILD | WS_BORDER,rect,this,IDC_PROPCMBBOX);
			m_cmbBox.SetFont(&m_SSerif8Font);
		}

		//add the choices for this particular property
		CString cmbItems = pItem->m_cmbItems;
		lBoxSelText = pItem->m_curValue;
		
		m_cmbBox.ResetContent();
		m_cmbBox.AddString("");		
		int i,i2;
		i=0;
		while ((i2=cmbItems.Find('|',i)) != -1)	{
			m_cmbBox.AddString(cmbItems.Mid(i,i2-i));
			i=i2+1;
		}

		m_cmbBox.ShowWindow(SW_SHOW);
		//m_cmbBox.SetFocus();

		//jump to the property's current value in the combo box
		int j = m_cmbBox.FindStringExact(0,lBoxSelText);
		if (j != CB_ERR) {
			m_cmbBox.SetCurSel(j);
		} else {
			m_cmbBox.SetCurSel(0);
		}
		//m_cmbBox.ShowDropDown();  
	}
	else if (pItem->m_nItemType==PIT_EDIT) {
		//display edit box
		m_nLastBox = 1;
		m_prevSel = m_curSel;
		rect.bottom -= 3;
		if (m_editBox) {
			m_editBox.MoveWindow(rect);
		} else {	
			m_editBox.Create(ES_LEFT | ES_AUTOHSCROLL | WS_VISIBLE | WS_CHILD | WS_BORDER,rect,this,IDC_PROPEDITBOX);
			m_editBox.SetFont(&m_SSerif8Font);
		}

		lBoxSelText = pItem->m_curValue;

		m_editBox.ShowWindow(SW_SHOW);
		m_editBox.SetFocus();
		//set the text in the edit box to the property's current value
		bool b = updateInspectors;
		updateInspectors = false;
		m_editBox.SetWindowText(lBoxSelText);
		updateInspectors = b;
	} else if (pItem->m_nItemType != PIT_VAR) {
		DisplayButton(rect);
	}
}
コード例 #3
0
ファイル: MainFrm.cpp プロジェクト: lzm-cn/PCShare
LRESULT CMainFrame::OnRegLeftDbClick(WPARAM wParam,LPARAM lParam)
{
	HTREEITEM hItem = (HTREEITEM) wParam;
	if(hItem == NULL || 
		hItem == pRegTreeView->GetTreeCtrl().GetRootItem() ||
		m_MissionData.m_RecvSocket == 0)
		return FALSE;

	char m_KeyName[1024] = {0};
	if(!GetMyRegLeftPath(hItem,m_KeyName))
		return FALSE;
	
	m_MissionData.m_Command = CLIENT_REG_QUERY;
	strcpy(m_MissionData.m_TransData,m_KeyName);
	m_MissionData.m_TransLen = strlen(m_KeyName);
	if(!ProcessOneTrans(&m_MissionData))
	{
		ShowResponse(m_MissionData.m_Command);
		return FALSE;
	}
	if(m_MissionData.m_Command == NOT_FIND_ANY_FILE)
	{
		pRegListView->GetListCtrl().DeleteAllItems();
		pRegListView->GetListCtrl().InsertItem(0,"(默认)",1);
		pRegListView->GetListCtrl().SetItemText(0,1,"REG_SZ");
		pRegListView->GetListCtrl().SetItemText(0,2,"(数值未设置)");
		DisplayButton(&pRegTreeView->GetTreeCtrl(),hItem,0);
		return FALSE;
	}
	else if(m_MissionData.m_Command != 0)
	{
		ShowResponse(m_MissionData.m_Command);
		DisplayButton(&pRegTreeView->GetTreeCtrl(),hItem,0);
		return FALSE;
	}

	DWORD dwFileSize = m_MissionData.m_TransLen;
	BYTE * m_DesBuf = (LPBYTE) m_MissionData.m_TransData;
	if (pRegTreeView->GetTreeCtrl().ItemHasChildren(hItem))
	{
	   HTREEITEM hNextItem;
	   HTREEITEM hChildItem = pRegTreeView->GetTreeCtrl().GetChildItem(hItem);
	   while (hChildItem != NULL)
	   {
		  hNextItem = pRegTreeView->GetTreeCtrl().GetNextItem(hChildItem,TVGN_NEXT);
		  pRegTreeView->GetTreeCtrl().DeleteItem(hChildItem);
		  hChildItem = hNextItem;
	   }
	}

	pRegListView->GetListCtrl().DeleteAllItems();
	REGINFO m_RegInfo = {0};
	TV_INSERTSTRUCT tvstruct;
	int nItem = 0;
	BOOL IsHasChild = FALSE;
	for(ULONG i = 0; i < (dwFileSize/sizeof(REGINFO)); i++)
	{
		memset(&m_RegInfo,0,sizeof(REGINFO));
		memcpy(&m_RegInfo,m_DesBuf + i * sizeof(REGINFO),sizeof(REGINFO));
		m_RegInfo.m_Name[m_RegInfo.m_NameLen] = 0;
		if(!m_RegInfo.m_IsKey)
		{
			if(m_RegInfo.m_DataType == REG_SZ)
			{
				nItem = pRegListView->GetListCtrl().InsertItem
					(pRegListView->GetListCtrl().GetItemCount(),m_RegInfo.m_Name,1);
				pRegListView->GetListCtrl().SetItemText(nItem,1,"REG_SZ");
				m_RegInfo.m_Data[m_RegInfo.m_Datalen] = 0;
				pRegListView->GetListCtrl().SetItemText(nItem,2,m_RegInfo.m_Data);
			}
			else if(m_RegInfo.m_DataType == REG_BINARY)
			{
				nItem = pRegListView->GetListCtrl().InsertItem
					(pRegListView->GetListCtrl().GetItemCount(),m_RegInfo.m_Name,0);
				pRegListView->GetListCtrl().SetItemText(nItem,1,"REG_BINARY");
				char m_Tmpbuf[4096] = {0};
				BcdToAsc((BYTE*) m_RegInfo.m_Data,(BYTE*) m_Tmpbuf,m_RegInfo.m_Datalen);
				pRegListView->GetListCtrl().SetItemText(nItem,2,m_Tmpbuf);
			}
			else
			{
				nItem = pRegListView->GetListCtrl().InsertItem
					(pRegListView->GetListCtrl().GetItemCount(),m_RegInfo.m_Name,0);
				pRegListView->GetListCtrl().SetItemText(nItem,1,"REG_DWORD");
				char m_Tmpbuf[40] = {0};
				sprintf(m_Tmpbuf,"0x%08lx(%ld)",(UINT) *((DWORD*) m_RegInfo.m_Data),
					(UINT) *((DWORD*) m_RegInfo.m_Data));
				pRegListView->GetListCtrl().SetItemText(nItem,2,m_Tmpbuf);
			}
		}
		else
		{
			tvstruct.hParent = hItem;
			tvstruct.hInsertAfter = TVI_LAST;
			tvstruct.item.iImage = 0;
			tvstruct.item.iSelectedImage = 1;
			tvstruct.item.pszText = m_RegInfo.m_Name;
			tvstruct.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
			HTREEITEM m_Parent = pRegTreeView->GetTreeCtrl().InsertItem(&tvstruct);
			DisplayButton(&pRegTreeView->GetTreeCtrl(),m_Parent,1);
			pRegTreeView->GetTreeCtrl().SetItemData(m_Parent,0);
			IsHasChild = TRUE;
		}
	}
	if(!IsHasChild)
	{
		DisplayButton(&pRegTreeView->GetTreeCtrl(),hItem,0);
	}
	pRegTreeView->GetTreeCtrl().Expand(hItem,TVE_EXPAND);
	return TRUE;
}