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; } } } }
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; } }
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
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
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
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