예제 #1
0
void CMainDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	if (IsIconic())
	{		

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		//dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{		
		//CDialog::OnPaint();
					
		RECT rect;
		GetClientRect(&rect);
		int w = rect.right - rect.left;
		int h = rect.bottom - rect.top;				
		COLORREF colortrans = RGB(0,255,0);
		HBRUSH hBrush = CreateSolidBrush(colortrans);
		FillRect(dc,&rect,hBrush);
		DeleteObject(hBrush);		
				
		BITMAP bmp;
		GetObject(m_hBmp,sizeof(bmp),&bmp);
		HDC hBmpDC = CreateCompatibleDC(dc);
		SelectObject(hBmpDC,m_hBmp);
		
		TransparentBlt(dc,0,0,bmp.bmWidth, bmp.bmHeight,hBmpDC,0,0,bmp.bmWidth,bmp.bmHeight,RGB(0,255,0));
		DeleteDC(hBmpDC);			
							
		if(m_bFirst){						
			HRGN rgn = GetTrans(dc,GetPixel(dc,0,0),0,0,bmp.bmWidth, bmp.bmHeight);	
			::SetWindowRgn(m_hWnd,rgn,TRUE);						
			m_bFirst = FALSE;								
		}
		
	}
}
예제 #2
0
plCameraModifier1::~plCameraModifier1()
{
    int i;
    for (i = 0; i < GetNumTrans(); i++)
        delete(GetTrans(i));
    fTrans.SetCountAndZero(0);
    
    for (i = 0; i < fMessageQueue.Count(); i++)
        hsRefCnt_SafeUnRef(fMessageQueue[i]);
    fMessageQueue.SetCountAndZero(0);

    for (i = 0; i < fFOVInstructions.Count(); i++)
        hsRefCnt_SafeUnRef(fFOVInstructions[i]);
    fFOVInstructions.SetCountAndZero(0);

}
예제 #3
0
void Shopmenu2Handler::OnMenuSelect2(IBaseMenu *menu,
	int client,
	unsigned int menuitem,
	unsigned int item_on_page)
{ 
	
	static bool once=true;
	ItemDrawInfo info;
	const char* info2=menu->GetItemInfo(menuitem,&info);

	if(once){	ERR("Shop2H: GetItemInfo OK");	}

	int itemid=strtoint(info2);
	//ERR("client %d menuitem %d item.page %d info %d",client,menuitem,item_on_page,itemid);

	//SetTrans(client);
	GetItem(itemid);
	if(once){	ERR("Shop2H: GetItem OK");	}
	int diamonds=GetDiamonds(client);
	if(once){	ERR("Shop2H: GetDiamonds OK");	}
	bool canbuy=true;

	char buf[512];
	//new race=War3_GetRace(client);
	//if(W3IsItem2DisabledGlobal(item)){
	////	War3_ChatMessage(client,"%T","{itemname} is disabled",GetTrans(),itemname);
	//	canbuy=false;
	//}



	//else if(W3IsItem2DisabledForRace(race,item)){
	//
	//	new String:racename[64];
	//	War3_GetRaceName(race,racename,sizeof(racename));
	//	War3_ChatMessage(client,"%T","You may not purchase {itemname} when you are {racename}",GetTrans(),itemname,racename);
	//	canbuy=false;
	//}
	//	ERR("hnldr");
	if(GetOwnsItem(client,itemid)){

		void* param2[3];
		param2[0]=(void*)"You already own {itemname}";
		param2[1]=(void*)&client;
		param2[2]=(void*)item->name();

		char* failedchar=0;
		cell_t client=GetTrans();
		g->myphrasecollection->FormatString(buf,sizeof(buf),"%T",param2,sizeof(param2),NULL,(const char**)&failedchar);

		EXTChatMessage(client,buf);


		canbuy=false;
	}
	else if(GetDiamonds(client)<item->cost()){

		void* param2[3];
		param2[0]=(void*)"You cannot afford {itemname}";
		param2[1]=(void*)&client;
		param2[2]=(void*)item->name();

		char* failedchar=0;
		cell_t client=GetTrans();
		g->myphrasecollection->FormatString(buf,sizeof(buf),"%T",param2,sizeof(param2),NULL,(const char**)&failedchar);

		EXTChatMessage(client,buf);

		//if(reshowmenu){
		//	ShowMenuShop(client);
		//}
		canbuy=false;
	}
	if(canbuy){ //check with deny system?
		//W3SetVar(EventArg1,item);
		//W3SetVar(EventArg2,1);
		//W3CreateEvent(CanBuyItem,client);
		//if(W3GetVar(EventArg2)==0){
		//	canbuy=false;
		//}
	}
	//if its use instantly then let them buy it
	//items maxed out
	if(canbuy &&GetClientItemsOwned(client)>=ITEMS2CANHAVE){
		canbuy=false;
	//	WantsToBuy[client]=item;
	//	InternalExceededMaxItemsMenuBuy(client);
	///
	}



	if(canbuy){

		SetDiamonds(client,GetDiamonds(client)-item->cost());
		if(once){	ERR("Shop2H: SetItem OK");	}
		SetOwnsItem(client,itemid,true);
		if(once){	ERR("Shop2H: SetOwns OK");	}

		void* param2[3];
		param2[0]=(void*)"You have successfully purchased {itemname}";
		param2[1]=(void*)&client;
		param2[2]=(void*)item->name();

		char* failedchar=0;
		cell_t client=GetTrans();
		g->myphrasecollection->FormatString(buf,sizeof(buf),"%T",param2,sizeof(param2),NULL,(const char**)&failedchar);

		EXTChatMessage(client,buf);
		if(once){	ERR("Shop2H: EXTChatOK OK");	}

		//War3_ChatMessage(client,"%T",,GetTrans(),itemname);


		//W3SetVar(TheItemBoughtOrLost,item);
		//W3CreateEvent(DoForwardClientBoughtItem2,client); //old item//forward, and set has item true inside

		//W3SetItem2ExpireTime(client,item,NOW()+3600);
		//W3SaveItem2ExpireTime(client,item);
	}
	once=false;
	
}
예제 #4
0
/*---------------------------------------------------------------------------
 *            AsyncEventHandler
 *---------------------------------------------------------------------------
 *
 * Synopsis:  Process async events from the TCP transports.
 *
 */
static LRESULT CALLBACK AsyncEventHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    I16    rcode;
    static BOOL busy =      FALSE;
    ObTcpCommonTransport *txp;

    txp = GetTrans((SOCKET)wParam);

    if (busy == TRUE) {
        kal_trace(BT_TRACE_G6_OBEX, OBEX_TRANSPORT_BUSY);
        return 0;
    }
    busy = TRUE;

    if (uMsg != WM_SELECT) {
        busy = FALSE;
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }

    switch (WSAGETSELECTEVENT(lParam)) {
    case FD_ACCEPT:
        ASSERT(txp);
        kal_trace(BT_TRACE_G6_OBEX,OBEX_ASYNCPROC_SOCKET_xX_RECEIVED_MESSAGE_ACCEPT , wParam);
        if ((WSAGETSELECTERROR(lParam) == 0) && (txp->conn == INVALID_SOCKET)) {
            /* Indicate the Connect request */
            TcpCallback(txp, TCP_EVENT_CONNECT_IND, 0, (U16)wParam);
        }
        break;
            
    case FD_READ:
/*      kal_trace(BT_TRACE_G6_OBEX,OBEX_ASYNCPROC_CLIENT_SOCKET_xX_RECEIVED_MESSAGE_READ , wParam); */
        if (WSAGETSELECTERROR(lParam) == 0) {
            /* receive the data ... */
            U8          buff[TCP_MAX_TPDU];
            int         len = TCP_MAX_TPDU;
            
            len = recv(wParam, buff, len, 0);
            if (len == SOCKET_ERROR) {
                if (WSAGetLastError() == WSAEWOULDBLOCK)
                    break;
                    
                kal_trace(BT_TRACE_G6_OBEX,DATAIND_RECV_FAILED_WSAGETLASTERROR__xD , WSAGetLastError());
                goto IndicateDiscon;    /* ASSERT(0); */
                break;
            }

            /* ASSERT(cTxp || sTxp); */
            if (txp && wParam == txp->conn) {
                TcpCallback(txp, TCP_EVENT_DATA_IND, buff, (U16)len);
            }
        }    
        break;

    case FD_CONNECT:
        kal_trace(BT_TRACE_G6_OBEX,OBEX_ASYNDPROC_SOCKET_xX_RECEIVED_MESSAGE , wParam);
        if (WSAGETSELECTERROR( lParam ) == 0) {
            kal_trace(BT_TRACE_G6_OBEX, OBEX_CONNECTED_TRC);
            /* Connection established */
            goto IndicateConnection;
        } else {
            kal_trace(BT_TRACE_G6_OBEX,OBEX_TCP_CONNECT_FAILED);
            /* Connection failed */
            goto IndicateDiscon;
        }       
        break;

    case FD_WRITE:
        kal_trace(BT_TRACE_G6_OBEX,OBEX_ASYNCPROC_SOCKET_xX_RECEIVED_MESSAGE_WRITE_CONN_ACCEPTED , wParam);
        ASSERT(WSAGETSELECTERROR(lParam) == 0);
IndicateConnection:
        /* Connection established */
        rcode = WSAAsyncSelect(wParam, asyncEventHandle, WM_SELECT, FD_READ|FD_CLOSE);
        ASSERT(rcode != SOCKET_ERROR);

        if (txp && wParam == txp->conn) {
            TcpCallback(txp, TCP_EVENT_CONNECTED, 0, (U16)wParam);
        }
        break;

    case FD_CLOSE:
        kal_trace(BT_TRACE_G6_OBEX,OBEX_ASYNDPROC_SOCKET_xX_RECEIVED_MESSAGE_CLOSE , wParam);
IndicateDiscon:
        if (txp && wParam == txp->conn) {
            TcpCallback(txp, TCP_EVENT_DISCON, 0, 0);
        }
        break;
            
    default:
        ASSERT(0);
        break;
    }  
    busy = FALSE;
    return 0;
}