Modificators now alter the score and earned coin counts, added song speed change on the submenu
This commit is contained in:
parent
bb65c0c95d
commit
e111e31f6d
@ -45,6 +45,18 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
for (int i = 0; i < txSongSpeed.Length; i++)
|
||||||
|
{
|
||||||
|
Color _c = Color.White;
|
||||||
|
|
||||||
|
if (i < 5)
|
||||||
|
_c = Color.LimeGreen;
|
||||||
|
else if (i > 5)
|
||||||
|
_c = Color.Red;
|
||||||
|
|
||||||
|
txSongSpeed[i] = OptionTypeTx((0.5f + i * 0.1f).ToString("n1"), _c, Color.Black);
|
||||||
|
}
|
||||||
|
|
||||||
txSwitch[0] = OptionTypeTx(CLangManager.LangInstance.GetString(9000), Color.White, Color.Black);
|
txSwitch[0] = OptionTypeTx(CLangManager.LangInstance.GetString(9000), Color.White, Color.Black);
|
||||||
txSwitch[1] = OptionTypeTx(CLangManager.LangInstance.GetString(9001), Color.White, Color.Black);
|
txSwitch[1] = OptionTypeTx(CLangManager.LangInstance.GetString(9001), Color.White, Color.Black);
|
||||||
|
|
||||||
@ -82,8 +94,6 @@ namespace TJAPlayer3
|
|||||||
txOtoiro[0] = OptionTypeTx(CLangManager.LangInstance.GetString(9007), Color.White, Color.Black);
|
txOtoiro[0] = OptionTypeTx(CLangManager.LangInstance.GetString(9007), Color.White, Color.Black);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OptionType[0] = OptionTypeTx(CLangManager.LangInstance.GetString(9008), Color.White, Color.Black);
|
OptionType[0] = OptionTypeTx(CLangManager.LangInstance.GetString(9008), Color.White, Color.Black);
|
||||||
OptionType[1] = OptionTypeTx(CLangManager.LangInstance.GetString(9009), Color.White, Color.Black);
|
OptionType[1] = OptionTypeTx(CLangManager.LangInstance.GetString(9009), Color.White, Color.Black);
|
||||||
OptionType[2] = OptionTypeTx(CLangManager.LangInstance.GetString(9010), Color.White, Color.Black);
|
OptionType[2] = OptionTypeTx(CLangManager.LangInstance.GetString(9010), Color.White, Color.Black);
|
||||||
@ -92,7 +102,7 @@ namespace TJAPlayer3
|
|||||||
OptionType[5] = OptionTypeTx(CLangManager.LangInstance.GetString(72), Color.White, Color.Black);
|
OptionType[5] = OptionTypeTx(CLangManager.LangInstance.GetString(72), Color.White, Color.Black);
|
||||||
OptionType[6] = OptionTypeTx(CLangManager.LangInstance.GetString(9012), Color.White, Color.Black);
|
OptionType[6] = OptionTypeTx(CLangManager.LangInstance.GetString(9012), Color.White, Color.Black);
|
||||||
OptionType[7] = OptionTypeTx(CLangManager.LangInstance.GetString(9013), Color.White, Color.Black);
|
OptionType[7] = OptionTypeTx(CLangManager.LangInstance.GetString(9013), Color.White, Color.Black);
|
||||||
OptionType[8] = OptionTypeTx(CLangManager.LangInstance.GetString(9014), Color.White, Color.Black);
|
OptionType[8] = OptionTypeTx(CLangManager.LangInstance.GetString(10), Color.White, Color.Black);
|
||||||
OptionType[9] = OptionTypeTx(CLangManager.LangInstance.GetString(9015), Color.White, Color.Black);
|
OptionType[9] = OptionTypeTx(CLangManager.LangInstance.GetString(9015), Color.White, Color.Black);
|
||||||
|
|
||||||
var _timingColors = new Color[] { Color.LimeGreen, Color.YellowGreen, Color.White, Color.Orange, Color.Red };
|
var _timingColors = new Color[] { Color.LimeGreen, Color.YellowGreen, Color.White, Color.Orange, Color.Red };
|
||||||
@ -107,9 +117,16 @@ namespace TJAPlayer3
|
|||||||
base.On活性化();
|
base.On活性化();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void tFetchMults(int player)
|
||||||
|
{
|
||||||
|
var scoreMult = tGetModMultiplier(EBalancingType.SCORE, true, player);
|
||||||
|
var coinMult = tGetModMultiplier(EBalancingType.COINS, true, player);
|
||||||
|
txModMults[0] = OptionTypeTx("Score Multiplier : " + scoreMult.ToString("n2"), Color.White, Color.Black);
|
||||||
|
txModMults[1] = OptionTypeTx("Coins Multiplier : " + coinMult.ToString("n2"), Color.White, Color.Black);
|
||||||
|
}
|
||||||
|
|
||||||
public override void On非活性化()
|
public override void On非活性化()
|
||||||
{
|
{
|
||||||
|
|
||||||
base.On非活性化();
|
base.On非活性化();
|
||||||
}
|
}
|
||||||
public override void OnManagedリソースの作成()
|
public override void OnManagedリソースの作成()
|
||||||
@ -123,6 +140,8 @@ namespace TJAPlayer3
|
|||||||
base.OnManagedリソースの解放();
|
base.OnManagedリソースの解放();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int On進行描画(int player)
|
public int On進行描画(int player)
|
||||||
{
|
{
|
||||||
if (this.b活性化してない)
|
if (this.b活性化してない)
|
||||||
@ -169,7 +188,7 @@ namespace TJAPlayer3
|
|||||||
txJust[nJust],
|
txJust[nJust],
|
||||||
txGameMode[nGameMode],
|
txGameMode[nGameMode],
|
||||||
txSwitch[nAutoMode],
|
txSwitch[nAutoMode],
|
||||||
txNone,
|
txSongSpeed[nSongSpeed],
|
||||||
txOtoiro[nOtoiro],
|
txOtoiro[nOtoiro],
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -184,6 +203,9 @@ namespace TJAPlayer3
|
|||||||
OptionType[i].t2D描画(TJAPlayer3.app.Device, baseX - 184, baseY + 4 + i * 40.8f);
|
OptionType[i].t2D描画(TJAPlayer3.app.Device, baseX - 184, baseY + 4 + i * 40.8f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
txModMults[0]?.t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Up, baseX - 92, baseY + 4 - 5 * 40.8f);
|
||||||
|
txModMults[1]?.t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Up, baseX - 92, baseY + 4 - 4 * 40.8f);
|
||||||
|
|
||||||
for (int i = 0; i < _textures.Length; i++)
|
for (int i = 0; i < _textures.Length; i++)
|
||||||
{
|
{
|
||||||
_textures[i]?.t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Up, baseX, baseY + 4 + i * 40.8f);
|
_textures[i]?.t2D拡大率考慮描画(TJAPlayer3.app.Device, CTexture.RefPnt.Up, baseX, baseY + 4 + i * 40.8f);
|
||||||
@ -219,8 +241,19 @@ namespace TJAPlayer3
|
|||||||
: (TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.LRed2P) || TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RRed2P));
|
: (TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.LRed2P) || TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RRed2P));
|
||||||
|
|
||||||
|
|
||||||
if (_leftDrum) { OptionSelect(true); TJAPlayer3.Skin.sound変更音.t再生する(); };
|
if (_leftDrum)
|
||||||
if (_rightDrum) { OptionSelect(false); TJAPlayer3.Skin.sound変更音.t再生する(); };
|
{
|
||||||
|
OptionSelect(true);
|
||||||
|
tFetchMults(player);
|
||||||
|
TJAPlayer3.Skin.sound変更音.t再生する();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_rightDrum)
|
||||||
|
{
|
||||||
|
OptionSelect(false);
|
||||||
|
tFetchMults(player);
|
||||||
|
TJAPlayer3.Skin.sound変更音.t再生する();
|
||||||
|
}
|
||||||
|
|
||||||
if (_centerDrum && ctOpen.n現在の値 >= ctOpen.n終了値)
|
if (_centerDrum && ctOpen.n現在の値 >= ctOpen.n終了値)
|
||||||
{
|
{
|
||||||
@ -283,6 +316,11 @@ namespace TJAPlayer3
|
|||||||
public CHitSounds hsInfo;
|
public CHitSounds hsInfo;
|
||||||
public int nOtoiro = 0;
|
public int nOtoiro = 0;
|
||||||
|
|
||||||
|
public CTexture[] txSongSpeed = new CTexture[16];
|
||||||
|
public int nSongSpeed = 5;
|
||||||
|
|
||||||
|
public CTexture[] txModMults = new CTexture[2];
|
||||||
|
|
||||||
public CTexture OptionTypeTx(string str文字, Color forecolor, Color backcolor)
|
public CTexture OptionTypeTx(string str文字, Color forecolor, Color backcolor)
|
||||||
{
|
{
|
||||||
using (var bmp = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 13).DrawPrivateFont(str文字, forecolor, backcolor))
|
using (var bmp = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 13).DrawPrivateFont(str文字, forecolor, backcolor))
|
||||||
@ -336,6 +374,9 @@ namespace TJAPlayer3
|
|||||||
if (nAutoMode == 0) nAutoMode = 1;
|
if (nAutoMode == 0) nAutoMode = 1;
|
||||||
else nAutoMode = 0;
|
else nAutoMode = 0;
|
||||||
break;
|
break;
|
||||||
|
case 8:
|
||||||
|
ShiftVal(left, ref nSongSpeed, txSongSpeed.Length - 1, 0);
|
||||||
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
ShiftVal(left, ref nOtoiro, txOtoiro.Length - 1, 0);
|
ShiftVal(left, ref nOtoiro, txOtoiro.Length - 1, 0);
|
||||||
break;
|
break;
|
||||||
@ -444,6 +485,14 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region [ Song speed ]
|
||||||
|
|
||||||
|
nSongSpeed = Math.Max(0, Math.Min(txSongSpeed.Length - 1, (TJAPlayer3.ConfigIni.n演奏速度 / 2) - 5));
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
tFetchMults(player);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Decision(int player)
|
public void Decision(int player)
|
||||||
@ -564,7 +613,86 @@ namespace TJAPlayer3
|
|||||||
hsInfo.tReloadHitSounds(nOtoiro, actual);
|
hsInfo.tReloadHitSounds(nOtoiro, actual);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region [ Song speed ]
|
||||||
|
|
||||||
|
TJAPlayer3.ConfigIni.n演奏速度 = (nSongSpeed + 5) * 2;
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region [ Balancing functions ]
|
||||||
|
|
||||||
|
public float tGetScrollSpeedFactor(EBalancingType ebt = EBalancingType.SCORE, bool isMenu = false, int actual = 0)
|
||||||
|
{
|
||||||
|
var _compare = (isMenu) ? nSpeedCount != 1 : TJAPlayer3.ConfigIni.nScrollSpeed[actual] != 9;
|
||||||
|
|
||||||
|
if (ebt == EBalancingType.SCORE)
|
||||||
|
return (_compare) ? 0.9f : 1f;
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float tGetSongSpeedFactor(EBalancingType ebt = EBalancingType.SCORE, bool isMenu = false, int actual = 0)
|
||||||
|
{
|
||||||
|
var _compare = ((isMenu) ? (nSongSpeed + 5) * 2 : TJAPlayer3.ConfigIni.n演奏速度) / 20f;
|
||||||
|
|
||||||
|
if (ebt == EBalancingType.SCORE || _compare <= 1f)
|
||||||
|
return Math.Min(1f, (float)Math.Pow(_compare, 1.3));
|
||||||
|
return Math.Max(1f, (float)Math.Pow(_compare, 0.7));
|
||||||
|
}
|
||||||
|
|
||||||
|
public float tGetJustFactor(EBalancingType ebt = EBalancingType.SCORE, bool isMenu = false, int actual = 0)
|
||||||
|
{
|
||||||
|
var _compare = (isMenu) ? nJust : TJAPlayer3.ConfigIni.bJust[actual];
|
||||||
|
|
||||||
|
if (ebt == EBalancingType.SCORE)
|
||||||
|
return (_compare == 2) ? 0.6f : 1f;
|
||||||
|
|
||||||
|
return (_compare > 0) ? ((_compare > 1) ? 0.5f : 1.3f) : 1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float tGetTimingFactor(EBalancingType ebt = EBalancingType.SCORE, bool isMenu = false, int actual = 0)
|
||||||
|
{
|
||||||
|
var _compare = (isMenu) ? nTiming - 2 : TJAPlayer3.ConfigIni.nTimingZones[actual] - 2;
|
||||||
|
|
||||||
|
if (ebt == EBalancingType.SCORE)
|
||||||
|
return (_compare < 0) ? (1f + 0.2f * _compare) : 1f;
|
||||||
|
|
||||||
|
return 1f + 0.2f * _compare;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float tGetDoronFactor(EBalancingType ebt = EBalancingType.SCORE, bool isMenu = false, int actual = 0)
|
||||||
|
{
|
||||||
|
var _compare = (isMenu) ? nStealth : (int)TJAPlayer3.ConfigIni.eSTEALTH;
|
||||||
|
|
||||||
|
if (ebt == EBalancingType.SCORE || _compare == 0)
|
||||||
|
return 1f;
|
||||||
|
|
||||||
|
// Doron : x1.1 coins, Stealth : x1.4 coins
|
||||||
|
return 1f + 0.1f * (float)Math.Pow(_compare, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float tGetModMultiplier(EBalancingType ebt = EBalancingType.SCORE, bool isMenu = false, int player = 0)
|
||||||
|
{
|
||||||
|
float factor = 1f;
|
||||||
|
int actual = TJAPlayer3.GetActualPlayer(player);
|
||||||
|
|
||||||
|
factor *= tGetScrollSpeedFactor(ebt, isMenu, actual);
|
||||||
|
factor *= tGetSongSpeedFactor(ebt, isMenu, actual);
|
||||||
|
factor *= tGetJustFactor(ebt, isMenu, actual);
|
||||||
|
factor *= tGetTimingFactor(ebt, isMenu, actual);
|
||||||
|
factor *= tGetDoronFactor(ebt, isMenu, actual);
|
||||||
|
|
||||||
|
return ebt == EBalancingType.SCORE ? Math.Min(factor, 1f) : factor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum EBalancingType
|
||||||
|
{
|
||||||
|
SCORE,
|
||||||
|
COINS
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -220,6 +220,9 @@ namespace TJAPlayer3
|
|||||||
public void Add( E楽器パート part, STAUTOPLAY bAutoPlay, long delta, int player )
|
public void Add( E楽器パート part, STAUTOPLAY bAutoPlay, long delta, int player )
|
||||||
{
|
{
|
||||||
double rev = 1.0;
|
double rev = 1.0;
|
||||||
|
|
||||||
|
delta = (long)(delta * TJAPlayer3.stage選曲.actPlayOption.tGetModMultiplier(CActPlayOption.EBalancingType.SCORE, false, player));
|
||||||
|
|
||||||
switch ( part )
|
switch ( part )
|
||||||
{
|
{
|
||||||
#region [ Unknown ]
|
#region [ Unknown ]
|
||||||
@ -227,6 +230,7 @@ namespace TJAPlayer3
|
|||||||
throw new ArgumentException();
|
throw new ArgumentException();
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
this.ctTimer = new CCounter( 0, 400, 1, TJAPlayer3.Timer );
|
this.ctTimer = new CCounter( 0, 400, 1, TJAPlayer3.Timer );
|
||||||
|
|
||||||
for( int sc = 0; sc < 1; sc++ )
|
for( int sc = 0; sc < 1; sc++ )
|
||||||
|
@ -341,7 +341,6 @@ namespace TJAPlayer3
|
|||||||
// other controller, etc. and the sounds of the input calibration audio file.
|
// other controller, etc. and the sounds of the input calibration audio file.
|
||||||
if (!TJAPlayer3.IsPerformingCalibration)
|
if (!TJAPlayer3.IsPerformingCalibration)
|
||||||
{
|
{
|
||||||
// Oto iro here
|
|
||||||
int actual1 = TJAPlayer3.GetActualPlayer(0);
|
int actual1 = TJAPlayer3.GetActualPlayer(0);
|
||||||
int actual2 = TJAPlayer3.GetActualPlayer(1);
|
int actual2 = TJAPlayer3.GetActualPlayer(1);
|
||||||
|
|
||||||
|
@ -495,6 +495,12 @@ namespace TJAPlayer3
|
|||||||
float starRate;
|
float starRate;
|
||||||
float redStarRate;
|
float redStarRate;
|
||||||
|
|
||||||
|
float[] modMultipliers =
|
||||||
|
{
|
||||||
|
TJAPlayer3.stage選曲.actPlayOption.tGetModMultiplier(CActPlayOption.EBalancingType.COINS, false, 0),
|
||||||
|
TJAPlayer3.stage選曲.actPlayOption.tGetModMultiplier(CActPlayOption.EBalancingType.COINS, false, 1)
|
||||||
|
};
|
||||||
|
|
||||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
|
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
|
||||||
{
|
{
|
||||||
diffModifier = 3;
|
diffModifier = 3;
|
||||||
@ -524,6 +530,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
// this.nEarnedMedalsCount[0] = stars;
|
// this.nEarnedMedalsCount[0] = stars;
|
||||||
this.nEarnedMedalsCount[0] = 5 + (int)((diffModifier * (starRate + redStarRate)) * (floorRate * lengthBonus)) + clearModifier;
|
this.nEarnedMedalsCount[0] = 5 + (int)((diffModifier * (starRate + redStarRate)) * (floorRate * lengthBonus)) + clearModifier;
|
||||||
|
this.nEarnedMedalsCount[0] = Math.Max(5, (int)(this.nEarnedMedalsCount[0] * modMultipliers[0]));
|
||||||
}
|
}
|
||||||
else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
||||||
{
|
{
|
||||||
@ -576,7 +583,10 @@ namespace TJAPlayer3
|
|||||||
if (clearModifier < 0)
|
if (clearModifier < 0)
|
||||||
this.nEarnedMedalsCount[0] = 10;
|
this.nEarnedMedalsCount[0] = 10;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
this.nEarnedMedalsCount[0] = 10 + goukakuModifier + clearModifier + (int)(partialScore * dAccuracyRate);
|
this.nEarnedMedalsCount[0] = 10 + goukakuModifier + clearModifier + (int)(partialScore * dAccuracyRate);
|
||||||
|
this.nEarnedMedalsCount[0] = Math.Max(10, (int)(this.nEarnedMedalsCount[0] * modMultipliers[0]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -636,7 +646,10 @@ namespace TJAPlayer3
|
|||||||
if (clearModifier < 0)
|
if (clearModifier < 0)
|
||||||
this.nEarnedMedalsCount[i] = 5;
|
this.nEarnedMedalsCount[i] = 5;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
this.nEarnedMedalsCount[i] = 5 + (int)((diffModifier * (starRate + redStarRate)) * dAccuracyRate) + clearModifier + scoreRankModifier;
|
this.nEarnedMedalsCount[i] = 5 + (int)((diffModifier * (starRate + redStarRate)) * dAccuracyRate) + clearModifier + scoreRankModifier;
|
||||||
|
this.nEarnedMedalsCount[i] = Math.Max(5, (int)(this.nEarnedMedalsCount[i] * modMultipliers[i]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user