📄 roundcanvas.java
字号:
prevCursor();
}
}
private boolean nextCursor() {
int newPos = getNextPosition( 1 );
if ( curPosY == newPos )
return false;
clearCursor(pmData.isLeft(), curPosY);
drawCursor(pmData.isLeft(), newPos);
curPosY = newPos;
return true;
}
private boolean prevCursor() {
int newPos = getNextPosition( -1 );
if ( curPosY == newPos )
return false;
clearCursor(pmData.isLeft(), curPosY);
drawCursor(pmData.isLeft(), newPos);
curPosY = newPos;
return true;
}
private int getNextPosition(int plus) {
int result = curPosY;
int value = curPosY;
if ( plus > 0 ){
while ( 0 <= value && value < TConst.SUB_CURSOR-1 ) {
value += plus;
if ( closePos[value] == -1 ) {
result = value;
break;
}
}
} else {
while ( 0 < value && value <= TConst.SUB_CURSOR-1 ) {
value += plus;
if ( closePos[value] == -1 ) {
result = value;
break;
}
}
}
return result;
}
private boolean isGameOverByClose() {
for (int i = 0; i < closePos.length; i++) {
if ( closePos[i] < 0 ) {
return false;
}
}
return true;
}
private void drawClosedAll() {
for (int i = 0; i < closePos.length; i++) {
drawClosed(i);
}
}
private void drawClosed( int pos ) {
if ( pos < 0 || pos >= TConst.SUB_CURSOR || closePos[pos] < 0 ) {
return;
}
if ( TConst.DRAW_MARK ) {
g.setColor(TConst.CLOSECOLOR);
g.fillArc(rectLeftCursor[pos].x, rectLeftCursor[pos].y, rectLeftCursor[pos].width, rectLeftCursor[pos].height, 0, 360);
g.fillArc(rectRightCursor[pos].x, rectRightCursor[pos].y, rectRightCursor[pos].width, rectRightCursor[pos].height, 0, 360);
g.setColor(TConst.BACKGROUND);
g.fillArc(rectLeftCursor[pos].x+3, rectLeftCursor[pos].y+3, rectLeftCursor[pos].width-6, rectLeftCursor[pos].height-6, 0, 360);
g.fillArc(rectRightCursor[pos].x+3, rectRightCursor[pos].y+3, rectRightCursor[pos].width-6, rectRightCursor[pos].height-6, 0, 360);
g.setColor(TConst.CLOSECOLOR);
for ( int i= -1 ; i<2 ; i++){
g.drawLine(rectLeftCursor[pos].x + rectLeftCursor[pos].width/2 +i,
rectLeftCursor[pos].y + 2,
rectLeftCursor[pos].x + rectLeftCursor[pos].width/2 +i,
rectLeftCursor[pos].height + rectLeftCursor[pos].y - 2 );
}
for ( int i= -1 ; i<2 ; i++){
g.drawLine(rectRightCursor[pos].x + rectRightCursor[pos].width/2 +i,
rectRightCursor[pos].y + 2,
rectRightCursor[pos].x + rectRightCursor[pos].width/2 +i,
rectRightCursor[pos].height + rectRightCursor[pos].y - 2 );
}
for ( int i= -1 ; i<2 ; i++){
g.drawLine(rectLeftCursor[pos].x + 2,
rectLeftCursor[pos].y + rectLeftCursor[pos].height/2 +i,
rectLeftCursor[pos].x + rectLeftCursor[pos].width -2,
rectLeftCursor[pos].y + rectLeftCursor[pos].height/2 +i );
}
for ( int i= -1 ; i<2 ; i++){
g.drawLine(rectRightCursor[pos].x + 2,
rectRightCursor[pos].y + rectRightCursor[pos].height/2 +i,
rectRightCursor[pos].x + rectRightCursor[pos].width -2,
rectRightCursor[pos].y + rectRightCursor[pos].height/2 +i );
}
} else {
g.setColor(TConst.CLOSECOLOR);
String str = "亊";
g.drawString(str, (rectBody[1].width-ft_default.getBBoxWidth(str))/2, rectLeftCursor[pos].y + ft_default.getAscent() );
g.drawString(str, rectBody[2].x+(rectBody[2].width-ft_default.getBBoxWidth(str))/2, rectRightCursor[pos].y + ft_default.getAscent() );
str = "仜";
g.drawString(str, (rectBody[1].width-ft_default.getBBoxWidth(str))/2, rectLeftCursor[pos].y + ft_default.getAscent() );
g.drawString(str, rectBody[2].x+(rectBody[2].width-ft_default.getBBoxWidth(str))/2, rectRightCursor[pos].y + ft_default.getAscent() );
}
int addy = rectLeftCursor[pos].height / 3;
int maxx = rectRightCursor[pos].x + rectRightCursor[pos].width;
for ( int i=-1 ; i<1 ; i++){
g.drawLine( rectLeftCursor[pos].x, rectLeftCursor[pos].y + addy+i, maxx, rectLeftCursor[pos].y + addy+i );
g.drawLine( rectLeftCursor[pos].x, rectLeftCursor[pos].y + addy+addy+i, maxx, rectLeftCursor[pos].y + addy+addy+i );
}
}
private void drawCursor(boolean left, int pos){
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
g.setColor(TConst.CURSORCOLOR);
g.drawRect(rectLeftCursor[pos].x, rectLeftCursor[pos].y, rectLeftCursor[pos].width, rectLeftCursor[pos].height);
} else {
g.setColor(TConst.CURSORCOLOR);
g.drawRect(rectRightCursor[pos].x, rectRightCursor[pos].y, rectRightCursor[pos].width, rectRightCursor[pos].height);
}
}
private void clearCursor(boolean left, int pos){
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
g.setColor(TConst.BACKGROUND);
g.drawRect(rectLeftCursor[pos].x, rectLeftCursor[pos].y, rectLeftCursor[pos].width, rectLeftCursor[pos].height);
} else {
g.setColor(TConst.BACKGROUND);
g.drawRect(rectRightCursor[pos].x, rectRightCursor[pos].y, rectRightCursor[pos].width, rectRightCursor[pos].height);
}
}
private void drawLeftStyleAll(){
for (int i = 0; i < TConst.SUB_CURSOR; i++) {
int style = scoreMgr.getMarkStyle(pmData.leftUser, i);
markStyle(style, true, i);
}
}
private void drawRightStyleAll(){
for (int i = 0; i < TConst.SUB_CURSOR; i++) {
int style = scoreMgr.getMarkStyle(pmData.rightUser, i);
markStyle(style, false, i);
}
}
private void markStyle(int style, boolean left, int pos) {
if ( style == 1 ) {
markOne(left, pos);
} else if ( style == 2 ) {
markTwo(left, pos);
} else if ( style >= 3 ) {
markThree(left, pos);
}
}
private void markOne(boolean left, int pos){
clearMark(left, pos);
if ( TConst.DRAW_MARK ) {
drawMarkA(left, pos);
} else {
textMarkA(left, pos);
}
clearCursor(left, pos);
}
private void markTwo(boolean left, int pos){
clearMark(left, pos);
if ( TConst.DRAW_MARK ) {
drawMarkA(left, pos);
drawMarkB(left, pos);
} else {
textMarkB(left, pos);
}
clearCursor(left, pos);
}
private void markThree(boolean left, int pos){
clearMark(left, pos);
if ( TConst.DRAW_MARK ) {
drawCircle(left, pos);
drawMarkA(left, pos);
drawMarkB(left, pos);
} else {
textMarkB(left, pos);
textCircle(left, pos);
}
clearCursor(left, pos);
}
private void clearMark(boolean left, int pos){
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
g.setColor(TConst.BACKGROUND);
g.fillRect( rectLeftCursor[pos].x, rectLeftCursor[pos].y, rectLeftCursor[pos].width, rectLeftCursor[pos].height );
} else {
g.setColor(TConst.BACKGROUND);
g.fillRect( rectRightCursor[pos].x, rectRightCursor[pos].y, rectRightCursor[pos].width, rectRightCursor[pos].height );
}
}
private void textCircle(boolean left, int pos) {
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
String str = "仜";
g.setColor(getLeftColor());
g.drawString(str, (rectBody[1].width-ft_default.getBBoxWidth(str))/2, rectLeftCursor[pos].y + ft_default.getAscent() );
} else {
String str = "仜";
g.setColor(getRightColor());
g.drawString(str, rectBody[2].x+(rectBody[2].width-ft_default.getBBoxWidth(str))/2, rectRightCursor[pos].y + ft_default.getAscent() );
}
}
private void textMarkA(boolean left, int pos) {
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
String str = "乛";
g.setColor(getLeftColor());
g.drawString(str, (rectBody[1].width-ft_default.getBBoxWidth(str))/2, rectLeftCursor[pos].y + ft_default.getAscent() );
} else {
String str = "乛";
g.setColor(getRightColor());
g.drawString(str, rectBody[2].x+(rectBody[2].width-ft_default.getBBoxWidth(str))/2, rectRightCursor[pos].y + ft_default.getAscent() );
}
}
private void textMarkB(boolean left, int pos) {
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
String str = "亊";
g.setColor(getLeftColor());
g.drawString(str, (rectBody[1].width-ft_default.getBBoxWidth(str))/2, rectLeftCursor[pos].y + ft_default.getAscent() );
} else {
String str = "亊";
g.setColor(getRightColor());
g.drawString(str, rectBody[2].x+(rectBody[2].width-ft_default.getBBoxWidth(str))/2, rectRightCursor[pos].y + ft_default.getAscent() );
}
}
private void drawCircle(boolean left, int pos) {
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
g.setColor(getLeftColor());
g.fillArc(rectLeftCursor[pos].x, rectLeftCursor[pos].y, rectLeftCursor[pos].width, rectLeftCursor[pos].height, 0, 360);
g.setColor(TConst.BACKGROUND);
g.fillArc(rectLeftCursor[pos].x+3, rectLeftCursor[pos].y+3, rectLeftCursor[pos].width-6, rectLeftCursor[pos].height-6, 0, 360);
} else {
g.setColor(getRightColor());
g.fillArc(rectRightCursor[pos].x, rectRightCursor[pos].y, rectRightCursor[pos].width, rectRightCursor[pos].height, 0, 360);
g.setColor(TConst.BACKGROUND);
g.fillArc(rectRightCursor[pos].x+3, rectRightCursor[pos].y+3, rectRightCursor[pos].width-6, rectRightCursor[pos].height-6, 0, 360);
}
}
private void drawMarkA(boolean left, int pos) {
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
g.setColor(getLeftColor());
for ( int i= -1 ; i<2 ; i++){
g.drawLine(rectLeftCursor[pos].x + rectLeftCursor[pos].width/2 +i,
rectLeftCursor[pos].y + 2,
rectLeftCursor[pos].x + rectLeftCursor[pos].width/2 +i,
rectLeftCursor[pos].height + rectLeftCursor[pos].y - 2 );
}
} else {
g.setColor(getRightColor());
for ( int i= -1 ; i<2 ; i++){
g.drawLine(rectRightCursor[pos].x + rectRightCursor[pos].width/2 +i,
rectRightCursor[pos].y + 2,
rectRightCursor[pos].x + rectRightCursor[pos].width/2 +i,
rectRightCursor[pos].height + rectRightCursor[pos].y - 2 );
}
}
}
private void drawMarkB(boolean left, int pos) {
if ( pos < 0 || pos >= TConst.SUB_CURSOR )
return ;
if ( left ) {
g.setColor(getLeftColor());
for ( int i= -1 ; i<2 ; i++){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -