示例#1
0
void StaffmodeWnd::writeName()
{
	int		i,j,x,y,fontSize,s_st,len;
	myRGB	*lpColor,color = {0,0,0xff};

	nameList.clearColorBuf();
	for(j=0;j<5;j++){
		if(j==2){
			fontSize = mainFontSize;
			lpColor = &color;
			y = 0;
		}else{
			fontSize = systemFontSize;
			lpColor = NULL;
			y = 4;
		}
		s_st = selectNum -2+j;
		if(s_st>43)s_st -= 44;
		if(s_st< 0)s_st += 44;
		len = strlen(StaffName[s_st]);
		x = 160*j +(160-len*(fontSize/2))/2; 
		OutputOutlineFont(&nameList,(BYTE *)"−",x-fontSize,y,fontSize,lpColor);
		OutputOutlineFont(&nameList,(BYTE *)"−",x+(fontSize/2*len),y,fontSize,lpColor);
		for(i=0;i<len;i++){
			OutputOutlineFont(&nameList,(BYTE *)StaffName[s_st] +i,x,y,fontSize,lpColor);
			if(BYTE(StaffName[s_st][i])>=0x80){
				i++;
				x+=fontSize;
			}else{
				x+=fontSize/2;
			}
		}
	}
}
示例#2
0
void ClMsgWnd::TextOut(int x,int y,char *msg)
{
	int			i,len;

	len = strlen(msg);
	for(i=0;i<len;i+=2){
		OutputOutlineFont(&msgPlate,(BYTE *)msg +i,x,y,mainFontSize);
		x+=mainFontSize;
	}
}
示例#3
0
void ClMsgWnd::MsgTypeChar(BYTE *msgBuf)
{
	BYTE	i;
	BYTE	tailCheck = FALSE;
	BYTE	msgWMAX = msgWmax,msgHMAX = msgHmax;

	msgWMAX = (msgWndWidth/sysInf.FontSize -1)*2;
	switch(*msgBuf){
		case '^':
		*msgBuf = ' ';
		break;
		case '~':
		*msgBuf = ',';
		break;
	}
	if( (widthOffset+sysInf.FontSize*2) > msgWndWidth){
		for( i=0; ForbidHeadW[i]!=0; i+=2){
			if( msgBuf[0]==ForbidHeadW[i] && msgBuf[1]==ForbidHeadW[i+1]){
				tailCheck = TRUE;
				break;
			}
		}
	}
	if( (tailCheck && (msgWndWidth<(widthOffset+sysInf.FontSize))) ||
		( FALSE==tailCheck && (msgWndWidth<(widthOffset+sysInf.FontSize*2)) ) )
	{
		MsgNewline();
	}
	if( (heightOffset+sysInf.FontSize)>msgWndHeight){	
		if(off==sysInf.bMsgAlreadyStop){
			sysInf.bMsgStop = on;
		}else{
			MsgCLS();
		}
	}
	
	sysInf.bShowMsgwin = on;
	if(sysInf.bMsgStop) return;
	sysInf.bMsgAlreadyStop = off;	
	if(msgWidth==0 && msgHeight==0){
		if( (*((WORD *)msgBuf)==0x7581 || *((WORD *)msgBuf)==0x7781 || *((WORD *)msgBuf)==0x6981) ) bIndent = TRUE;
	}
	OutputOutlineFont(&msgPlate,(BYTE *)msgBuf ,widthOffset,heightOffset,sysInf.FontSize);
	if(*msgBuf >= 0x80){
		msgWidth += 2;
		widthOffset += sysInf.FontSize;
		autoWaitTime += (11-sysInf.autoMsg) *WaitOneMsg*2/11;
	}else{
		msgWidth ++;
		widthOffset += (sysInf.FontSize /2);
		autoWaitTime += (11-sysInf.autoMsg) *WaitOneMsg/11;
	}
	if(sysInf.FontSize > lineHeight)lineHeight = sysInf.FontSize;
} // ClMsgWnd::MsgTypeChar
示例#4
0
void SaveWnd::TextOutSaveMsg(int x, int y, char *msg)
{
	int			i,len;
	BOOL		bRubi = FALSE, bBig = FALSE;

	len = strlen(msg);
	for(i=0;i<len;i+=2){
RetryTextOut:
		if(msg[i]=='<'){
			if(msg[i+1]=='R'){
				bRubi = TRUE;
				i += 2;
			}else if(msg[i+1]=='F'){
				bBig = TRUE;
				i += 2;
				while(msg[i]>='0' && msg[i]<='9' && i<len)i++;
			}else{
				while(msg[i]!='>' && i<len)i++;
				i++;
			}
			if(i>=len)return;
		}
		if(bRubi && msg[i]=='|'){
			bRubi = FALSE;
			while(msg[i]!='>' && i<len)i++;
			i++;
			if(i>=len)return;
			goto RetryTextOut;
		}
		if(bBig && msg[i]=='>'){
			bBig = FALSE;
			i--;
			continue;
		}
		if(msg[i]=='\\')break;	
		BOOL bHankaku = OutputOutlineFont(&infoWnd,(BYTE *)msg +i,x,y,mainFontSize,FALSE);
		if(FALSE==bHankaku){
			x+=mainFontSize;
		}else{
			x+=mainFontSize/2;
			i--;
		}
	}
} // SaveWnd::TextOutSaveMsg
示例#5
0
void SelectWnd::SelectStart(BOOL cancel)
{
    int		i,j,offsetX,offsetY;

    bSelect = on;
    bCancel = cancel;
    selectNum = -1;
    width = 640;
    height = 60*slctCnt;
    offsetX = (WIN_SIZEX -width -(slctCnt-1)*10) /2;
    offsetX += (slctCnt-1)*10;
    offsetY = (WIN_SIZEY -62*slctCnt)/2;
    selectBuf.loadLGF(pack_gparts,"SELECTWND");
    selectBase.loadLGF(pack_gparts,"SELECTWNDBase");
    selectMsg.createColorBuf(width,height,32);
    for(j=0; j<slctCnt; j++) {
        selectMsg.BltFast(0,60*j,&selectBuf,NULL,FALSE);
        int offset = (616 -lstrlen((char *)slctMsg[j])*(mainFontSize/2)) /2;
        for(i=0; i<(int)lstrlen((char *)slctMsg[j]); i+=2) {
            OutputOutlineFont(&selectMsg,(BYTE *)&slctMsg[j][i] ,i*(mainFontSize/2)+offset,60*j +14,mainFontSize);
            if(slctMsg[j][i]<0x80) i--;
        }
        selectRect[j].left = offsetX;
        selectRect[j].right = offsetX +width;
        selectRect[j].top = offsetY +62*j;
        selectRect[j].bottom = selectRect[j].top +60;
        offsetX -= 10;
    }
    point.x = selectRect[0].left + 30;
    point.y = selectRect[0].top - 20;
    SetWindowCursorPos(sysInf.hWnd, point.x, point.y);
    if(sysInf.bReadSkip) {
        sysInf.bReadSkip = off;
        sysInf.bAlreadyRead = off;
        CheckMenuItem( sysInf.hMenu, ID_READSKIP,   MF_UNCHECKED );
    }
    back_mode = sysInf.execMode;
    changeExecMode(select_exec_mode);
} // SelectWnd::SelectStart
示例#6
0
char *ClMsgWnd::DisplayMessage(BYTE *msgBuf)
{
	DWORD      bLoop = TRUE;
	char        valueBuf[12];
	POINT		rubiOffset;
	int			i,rubiWidth[2];

	if(NULL == msgBuf)return(NULL);
	if( msgStopCheck() )return ((char *)msgBuf);
	while(bLoop){
		if(*msgBuf){
			switch(*msgBuf){
			  case '\\':
				switch(msgBuf[1]){
				  case 'n':	
					MsgNewline();
					if(on==sysInf.bMsgStop)bLoop = FALSE;
					break;
				  case 'k':	
					sysInf.bMsgStop = on;
					bLoop = FALSE;
					break;
				}
				msgBuf += 2;
				break;
			  case '<':
				switch(*(msgBuf+1)){
				  case 'R':  case 'r':	
					rubiOffset.x = widthOffset;
					rubiOffset.y = heightOffset-13;
					if(msgWidth>=msgWmax && (msgHeight+1)<msgHmax){
						rubiOffset.x = 0;
						rubiOffset.y = heightOffset+(mainFontSize+rubiHeight)-13;
					}
					msgBuf += 2;
					rubiWidth[0] = 0;
					do{
						MsgTypeChar(msgBuf);
						if((*msgBuf) >= 0x80){
							msgBuf += 2;
							rubiWidth[0] += 2;
						}else{
							msgBuf ++;
							rubiWidth[0] ++;
						}
					}while(*msgBuf != '|');
					msgBuf ++;
					rubiWidth[0] = rubiWidth[0]*(mainFontSize/2);
					for(i=0;;i++){
						if(*(msgBuf+i)=='>')break;
					}
					rubiWidth[1] = i*(systemFontSize/2);
					if(rubiWidth[1]<rubiWidth[0] && i>=2){
						rubiWidth[0] = (rubiWidth[0] -rubiWidth[1]) / (i/2);
						rubiOffset.x += (rubiWidth[0]/2);
						rubiWidth[0] += systemFontSize;
					}else{
						rubiOffset.x -= (rubiWidth[1] -rubiWidth[0])/2;
						if(rubiOffset.x<0)rubiOffset.x = 0;
						rubiWidth[0] = systemFontSize;
					}
					while(*msgBuf != '>'){
						OutputOutlineFont(&msgPlate,(BYTE *)msgBuf ,rubiOffset.x,rubiOffset.y,systemFontSize);
						rubiOffset.x += rubiWidth[0];
						msgBuf += 2;
					}
					msgBuf ++;
					break;
				  case 'S':  case 's':	
					msgBuf += 3;
					break;
				  case 'W': case 'w':	
					for(i=0;;i++){
						if(*(msgBuf+i)=='>')break;
					}
					if(!keyState.data_skip && !sysInf.bAlreadyRead && !sysInf.bMsgAtOnce){
						*(msgBuf+i) = '\0';
						sysInf.msgWaitTime = timeGetTime() +atoi((char *)msgBuf+2)*1000/30;
						bLoop = FALSE;
					}
					msgBuf += (i+1);
					break;
				  case 'N': case 'n':
					NameCLS();
					msgBuf += 2;
					for(i=0;;i++){
						if(*(msgBuf+i)=='>')break;
					}
					rubiOffset.x = (12-i)*(mainFontSize/2)/2 +1;
					while(*msgBuf != '>'){
						OutputOutlineFont(&namePlate,(BYTE *)msgBuf ,rubiOffset.x, 2, mainFontSize);
						if((*msgBuf) >= 0x80){
							rubiOffset.x += mainFontSize;
							msgBuf += 2;
						}else{
							rubiOffset.x += mainFontSize/2;
							msgBuf ++;
						}
					}
					msgBuf ++;
					logMsgLine ++;
					bName = TRUE;
					break;
				  case 'F': case 'f':	
					msgBuf += 2;
					sysInf.FontSize = 0;
					while((*msgBuf)>='0' && (*msgBuf)<='9'){
						sysInf.FontSize *= 10;
						sysInf.FontSize += (*msgBuf) -'0';
						msgBuf ++;
					}
					break;
				}
				break;
			  case '>':
				sysInf.FontSize = mainFontSize;
				msgBuf ++;
				break;
			  default: 
				MsgTypeChar(msgBuf);
				if(on==sysInf.bMsgStop) return (char *)msgBuf;
				if((*msgBuf) >= 0x80){
					msgBuf += 2;
				}else{
					msgBuf ++;
				}
				if(!keyState.data_skip && !sysInf.bAlreadyRead && !sysInf.bMsgAtOnce && sysInf.msgSpeed<10){
					sysInf.msgWaitTime = timeGetTime() +(10-sysInf.msgSpeed)*10;
					bLoop = FALSE;
				}
				break;
			}
		}else{ 
			msgBuf = NULL;
			break;
		}
	}
    return ((char *)msgBuf);
} // ClMsgWnd::DisplayMessage