Пример #1
0
void renderStepZoneDMX(int player)
{
	int startColumn = player == 0 ? 0 : 4;
	if ( gs.isSingles() )
	{
		if ( gs.player[0].centerLeft )
		{
			startColumn = 0;
		}
		else if ( gs.player[0].centerRight )
		{
			startColumn = 4;
		}
		else
		{
			startColumn = 2; // center play
		}
	}
	int endColumn = gs.isDoubles ? 8 : startColumn+4;

	for ( int i = startColumn; i < endColumn; i++ )
	{
		int x = getColumnOffsetX_DMX(i);
		int blink = gs.player[player].stepZoneBlinkTimer > 0 ? 0 : 1;	// pick the state of the step zone
		int hitcolor = 0x7F000000;
		int outlineColor = 0xFFB4B4B4;
		const int fadeOutLength = 100;
		if ( blink == 1 )
		{
			static int colors[3] = { makeacol(41, 239, 115, 255), makeacol(239, 101, 190, 255), makeacol(76, 0, 190, 255) };
			int stageColor = gs.player[player].stagesLevels[gs.currentStage] % 10;
			outlineColor = colors[stageColor];
		}
 
		if ( gs.player[player].laneFlareColors[i] == 2 )
		{
			blink = 2; // currently holding a hold note in this column
		}

		int color = getColorOfColumn(i);
		if ( im.isKeyDown(i) )
		{
			hitcolor = color == 0 ? 0xEECC0000 : 0xEE0000CC;
		}
		else if ( im.getReleaseLength(i) <= fadeOutLength )
		{
			int a = getValueFromRange(0xFF, 0x7F, im.getReleaseLength(i) * 100/ fadeOutLength);
			if ( i ==4 )
			{
				al_trace("%d\r\n", a);
			}
			hitcolor = color == 0 ? makeacol32(0xFF, 0, 0, a) : makeacol32(0, 0, 0xFF, a);
		}
		renderStepLaneDMX(x, hitcolor, outlineColor);
		masked_blit(m_stepZoneSourceDMX[color], rm.m_backbuf, blink*34, 0, x, (gs.player[player].isColumnReversed(i) ? DMX_STEP_ZONE_REV_Y-34 : DMX_STEP_ZONE_Y), 34, 38);
	}
}
Пример #2
0
void renderDMXNote(int player, struct ARROW n, int y)
{
	int x = getColumnOffsetX_DMX(n.columns[0]);
	int leftX = getColumnOffsetX_DMX(0);
	int rightX = getColumnOffsetX_DMX(3) + 34-1;
	if ( gs.isDoubles || (gs.isVersus && player == 1) || gs.player[0].centerRight )
	{
		rightX = getColumnOffsetX_DMX(7) + 34-1;
		if ( (gs.isVersus && player == 1) || gs.player[0].centerRight )
		{
			leftX = getColumnOffsetX_DMX(4);
		}
	}
	if ( gs.isSingles() && gs.player[0].isCenter() )
	{
		leftX = getColumnOffsetX_DMX(1);
		rightX = getColumnOffsetX_DMX(6) +34-1;
	}

	// implement reverse - the stepzone will take care of itself, this is just the notes
	int originalY = y;
	if ( gs.player[player].reverseModifier != 0 )
	{
		y = DMX_STEP_ZONE_REV_Y - y;
	}

	switch ( n.type )
	{
	case TAP:
		renderDMXArrow(player, n.columns[0], 0, n.judgement, x-2, gs.player[player].isColumnReversed(n.columns[0]) ? y+40 : originalY);
		//renderWhiteNumber(n.timing, getColumnOffsetX_DMX(0)-64, gs.player[player].isColumnReversed(n.columns[0]) ? y+40 : originalY);
		break;
	case JUMP:
		for ( int i = 0; i < 4; i++ )
		{
			if ( n.columns[i] != -1 )
			{
				x = getColumnOffsetX_DMX(n.columns[i]);
				renderDMXArrow(player, n.columns[i], 0, n.judgement, x-2, gs.player[player].isColumnReversed(n.columns[i]) ? y+40 : originalY);
			}
			//renderWhiteNumber(n.timing, getColumnOffsetX_DMX(0)-64, gs.player[player].isColumnReversed(n.columns[0]) ? y+40 : originalY);
		}
		break;
	//case HOLD_START:
	//case HOLD_END:
		//break; // intentionally do nothing
	case SHOCK:
		break; // intentionally do nothing
	case NEW_SECTION:
		break;
	case END_SONG:
		//renderEndSongMarker(leftX, rightX, (gs.player[player].reverseModifier != 0 ? y+74 : y));
		break;
	case BPM_CHANGE:
		if ( ABS(n.color - gs.player[player].scrollRate) >= 5 && n.timing > 0 )
		{
			renderBPMMarker(leftX, rightX, (gs.player[player].reverseModifier != 0 ? y+74 : y), n.color);
		}
		break;
	case SCROLL_STOP:
		renderTempoStopMarker(leftX, rightX, (gs.player[player].reverseModifier != 0 ? y+74 : y), n.color);
		break;
	}
}