1
0
mirror of synced 2025-03-03 16:53:55 +01:00

pure tedium under copium

This commit is contained in:
0auBSQ 2023-08-21 05:54:10 +09:00
parent 8b72d09384
commit 7ec5d6aa2b
137 changed files with 1178 additions and 478 deletions

View File

@ -9009,6 +9009,8 @@ namespace TJAPlayer3
public int Gauge_Soul_Fire_X_Tower = 886;
public int Gauge_Soul_Fire_Y_Tower = 22;
public int Game_Gauge_Rainbow_Ptn;
public int Game_Gauge_Rainbow_2PGauge_Ptn;
public int Game_Gauge_Rainbow_Flat_Ptn;
public int Game_Gauge_Dan_Rainbow_Ptn;
public int Game_Gauge_Rainbow_Timer = 50;

View File

@ -0,0 +1,790 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using FDK;
namespace TJAPlayer3
{
class HGaugeMethods
{
public enum EGaugeType
{
NORMAL = 0,
HARD,
EXTREME
}
public static float BombDamage = 4f;
public static float FuserollDamage = 4f;
public static float HardGaugeFillRatio = 1f;
public static float ExtremeGaugeFillRatio = 1f;
private static Dictionary<Difficulty, float> DifficultyToHardGaugeDamage = new Dictionary<Difficulty, float>
{
[Difficulty.Easy] = 4.5f,
[Difficulty.Normal] = 5f,
[Difficulty.Hard] = 6f,
[Difficulty.Oni] = 6.5f,
[Difficulty.Edit] = 6.5f
};
private static Dictionary<Difficulty, float> DifficultyToExtremeGaugeDamage = new Dictionary<Difficulty, float>
{
[Difficulty.Easy] = 4.5f,
[Difficulty.Normal] = 5f,
[Difficulty.Hard] = 6f,
[Difficulty.Oni] = 6.5f,
[Difficulty.Edit] = 6.5f
};
private static Dictionary<int, float> LevelExtraToHardGaugeDamage = new Dictionary<int, float>
{
[11] = 7.5f,
[12] = 8f,
[13] = 8.5f
};
private static Dictionary<int, float> LevelExtraToExtremeGaugeDamage = new Dictionary<int, float>
{
[11] = 7.5f,
[12] = 8f,
[13] = 8.5f
};
private static Dictionary<string, EGaugeType> GaugeTypeStringToEnum = new Dictionary<string, EGaugeType>
{
["Normal"] = EGaugeType.NORMAL,
["Hard"] = EGaugeType.HARD,
["Extreme"] = EGaugeType.EXTREME
};
private static Dictionary<Difficulty, float> DifficultyToNorma = new Dictionary<Difficulty, float>
{
[Difficulty.Easy] = 60f,
[Difficulty.Normal] = 70f,
[Difficulty.Hard] = 70f,
[Difficulty.Oni] = 80f,
[Difficulty.Edit] = 80f
};
private static Dictionary<int, float> LevelExtraToNorma = new Dictionary<int, float>
{
[11] = 88f,
[12] = 92f,
[13] = 96f
};
#region [General calculation]
public static float tHardGaugeGetDamage(Difficulty diff, int level)
{
float damage = 6.5f;
if (DifficultyToHardGaugeDamage.ContainsKey(diff))
damage = DifficultyToHardGaugeDamage[diff];
int levelCaped = Math.Min(13, level);
if (LevelExtraToHardGaugeDamage.ContainsKey(levelCaped))
damage = LevelExtraToHardGaugeDamage[levelCaped];
return damage;
}
public static float tExtremeGaugeGetDamage(Difficulty diff, int level)
{
float damage = 6.5f;
if (DifficultyToExtremeGaugeDamage.ContainsKey(diff))
damage = DifficultyToExtremeGaugeDamage[diff];
int levelCaped = Math.Min(13, level);
if (LevelExtraToExtremeGaugeDamage.ContainsKey(levelCaped))
damage = LevelExtraToExtremeGaugeDamage[levelCaped];
return damage;
}
public static float tHardGaugeGetKillscreenRatio(Difficulty diff, int level, EGaugeType gaugeType, int perfectHits, int totalNotes)
{
if (gaugeType != EGaugeType.EXTREME) return 0f;
float norma = tGetCurrentGaugeNorma(diff, level);
float ratio = Math.Min(1f, Math.Max(0f, perfectHits / (float)totalNotes));
return ratio * norma;
}
public static bool tIsDangerHardGauge(Difficulty diff, int level, EGaugeType gaugeType, float percentObtained, int perfectHits, int totalNotes)
{
if (gaugeType == EGaugeType.NORMAL || diff > Difficulty.Edit) return false;
float percent = Math.Min(100f, Math.Max(0f, percentObtained));
return percent < 100f - ((100f - tHardGaugeGetKillscreenRatio(diff, level, gaugeType, perfectHits, totalNotes)) * 0.7f);
}
public static float tGetCurrentGaugeNorma(Difficulty diff, int level)
{
float norma = 80f;
if (DifficultyToNorma.ContainsKey(diff))
norma = DifficultyToNorma[diff];
int levelCaped = Math.Min(13, level);
if (LevelExtraToNorma.ContainsKey(levelCaped))
norma = LevelExtraToNorma[levelCaped];
return norma;
}
public static EGaugeType tGetGaugeTypeEnum(string gaugeType)
{
EGaugeType gt = EGaugeType.NORMAL;
if (GaugeTypeStringToEnum.ContainsKey(gaugeType))
gt = GaugeTypeStringToEnum[gaugeType];
return gt;
}
public static bool tNormaCheck(Difficulty diff, int level, EGaugeType gaugeType, float percentObtained, float killZonePercent)
{
float percent = Math.Min(100f, Math.Max(0f, percentObtained));
float norma = tGetCurrentGaugeNorma(diff, level);
if ((gaugeType == EGaugeType.HARD || gaugeType == EGaugeType.EXTREME) && percent > killZonePercent) return true;
if (gaugeType == EGaugeType.NORMAL && percent >= norma) return true;
return false;
}
#endregion
#region [Displayables]
public static void tDrawGaugeBase(CTexture baseTexture, int x, int y, float scale_x, float scale_y)
{
if (baseTexture != null)
{
baseTexture.vc拡大縮小倍率.X = scale_x;
baseTexture.vc拡大縮小倍率.Y = scale_y;
baseTexture.t2D描画(TJAPlayer3.app.Device, x, y,
new Rectangle(
GaugeBox[0],
GaugeBox[1],
GaugeBox[2],
GaugeBox[3])
);
}
}
public static void tDrawGaugeBaseClear(CTexture baseTexture, int x, int y, Difficulty diff, int level, EGaugeType gaugeType, float scale_x, float scale_y)
{
if (gaugeType != EGaugeType.NORMAL || diff > Difficulty.Edit) return;
float norma = tGetCurrentGaugeNorma(diff, level) - 2f; // A segment flashes earlier
float revnorma = 100f - norma;
if (baseTexture != null)
{
baseTexture.vc拡大縮小倍率.X = scale_x;
baseTexture.vc拡大縮小倍率.Y = scale_y;
int gaugeTexLength = GaugeBox[2];
int clearPartLength = (int)(gaugeTexLength * (revnorma / 100f));
int texStartPoint = (int)(gaugeTexLength * (norma / 100f));
int xOff = (int)(scale_x * texStartPoint);
baseTexture.t2D描画(TJAPlayer3.app.Device, x + xOff, y,
new Rectangle(
GaugeBox[0] + texStartPoint,
GaugeBox[1],
clearPartLength,
GaugeBox[3])
);
}
}
public static void tDrawGaugeFill(
CTexture fillTexture,
CTexture yellowTexture,
CTexture rainbowTexture,
int x,
int y,
Difficulty diff,
int level,
float currentPercent,
EGaugeType gaugeType,
float scale_x,
float scale_y,
int flashOpacity,
int perfectHits,
int totalNotes
)
{
if (diff > Difficulty.Edit) return;
float norma = tGetCurrentGaugeNorma(diff, level) - 2f; // A segment flashes earlier
float percent = Math.Min(100f, Math.Max(0f, currentPercent));
int gaugeTexLength = GaugeBox[2];
float nWidth = (gaugeTexLength / 50f);
int closestTwo = (int)((int)(percent / 2) * nWidth);
int closestNorma = (gaugeType != EGaugeType.NORMAL) ? gaugeTexLength : (int)(gaugeTexLength * (norma / 100f));
bool normaCheck = tNormaCheck(diff, level, gaugeType, percent, 0);
bool isRainbow = (rainbowTexture != null && percent >= 100f && gaugeType == EGaugeType.NORMAL);
// Fill
if (fillTexture != null && !isRainbow)
{
fillTexture.vc拡大縮小倍率.X = scale_x;
fillTexture.vc拡大縮小倍率.Y = scale_y;
fillTexture.Opacity = 255;
if (gaugeType != EGaugeType.NORMAL && tIsDangerHardGauge(diff, level, gaugeType, percent, perfectHits, totalNotes)) fillTexture.Opacity = 255 - flashOpacity;
fillTexture.t2D描画(TJAPlayer3.app.Device, x, y,
new Rectangle(
GaugeBox[0],
GaugeBox[1],
Math.Min(closestTwo, closestNorma),
GaugeBox[3])
);
}
if (gaugeType != EGaugeType.NORMAL) return;
if (!normaCheck) return;
// Yellow
if (yellowTexture != null && !isRainbow)
{
int texStartPoint = (int)(gaugeTexLength * (norma / 100f));
int differencial = closestTwo - closestNorma;
int xOff = (int)(scale_x * texStartPoint);
yellowTexture.vc拡大縮小倍率.X = scale_x;
yellowTexture.vc拡大縮小倍率.Y = scale_y;
yellowTexture.Opacity = 255;
yellowTexture.t2D描画(TJAPlayer3.app.Device, x + xOff, y,
new Rectangle(
GaugeBox[0] + texStartPoint,
GaugeBox[1],
differencial,
GaugeBox[3])
);
}
// Rainbow
if (rainbowTexture != null && percent >= 100f)
{
rainbowTexture.vc拡大縮小倍率.X = scale_x;
rainbowTexture.vc拡大縮小倍率.Y = scale_y;
rainbowTexture.t2D描画(TJAPlayer3.app.Device, x, y,
new Rectangle(
GaugeBox[0],
GaugeBox[1],
GaugeBox[2],
GaugeBox[3])
);
}
}
public static void tDrawGaugeFlash(CTexture flashTexture, int x, int y, int Opacity, Difficulty diff, int level, float currentPercent, EGaugeType gaugeType, float scale_x, float scale_y)
{
if (gaugeType != EGaugeType.NORMAL || diff > Difficulty.Edit) return ;
float norma = tGetCurrentGaugeNorma(diff, level) - 2f; // A segment flashes earlier
float percent = Math.Min(100f, Math.Max(0f, currentPercent));
if (tNormaCheck(diff, level, gaugeType, percent, 0) && percent < 100.0)
{
if (flashTexture != null)
{
flashTexture.vc拡大縮小倍率.X = scale_x;
flashTexture.vc拡大縮小倍率.Y = scale_y;
flashTexture.Opacity = Opacity;
flashTexture.t2D描画(TJAPlayer3.app.Device, x, y,
new Rectangle(
GaugeBox[0],
GaugeBox[1],
(int)(GaugeBox[2] * (norma / 100f)),
GaugeBox[3])
);
}
}
}
public static void tDrawKillZone(CTexture killzoneTexture, int x, int y, Difficulty diff, int level, EGaugeType gaugeType, float scale_x, float scale_y, int perfectHits, int totalNotes)
{
if (gaugeType != EGaugeType.EXTREME || diff > Difficulty.Edit) return;
float currentFill = tHardGaugeGetKillscreenRatio(diff, level, gaugeType, perfectHits, totalNotes);
if (killzoneTexture != null)
{
killzoneTexture.vc拡大縮小倍率.X = scale_x;
killzoneTexture.vc拡大縮小倍率.Y = scale_y;
killzoneTexture.t2D描画(TJAPlayer3.app.Device, x, y,
new Rectangle(
GaugeBox[0],
GaugeBox[1],
(int)(GaugeBox[2] * (currentFill / 100f)),
GaugeBox[3])
);
}
}
public static void tDrawClearIcon(CTexture clearIcon, Difficulty diff, int level, float currentPercent, int text_x, int text_y, EGaugeType gaugeType, int perfectHits, int totalNotes)
{
if (clearIcon == null) return;
if (diff > Difficulty.Edit) return;
float percent = Math.Min(100f, Math.Max(0f, currentPercent));
bool highlight = (gaugeType != EGaugeType.NORMAL)
? tIsDangerHardGauge(diff, level, gaugeType, currentPercent, perfectHits, totalNotes)
: tNormaCheck(diff, level, gaugeType, percent, 0);
clearIcon.Opacity = 255;
if (highlight)
{
clearIcon.t2D描画(TJAPlayer3.app.Device, text_x, text_y,
new Rectangle(
TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[0],
TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[1],
TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[2],
TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[3]
));
}
else
{
clearIcon.t2D描画(TJAPlayer3.app.Device, text_x, text_y,
new Rectangle(
TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[0],
TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[1],
TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[2],
TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[3]
));
}
}
public static void tDrawSoulFire(CTexture soulFire, Difficulty diff, int level, float currentPercent, EGaugeType gaugeType, float scale_x, float scale_y, int fire_x, int fire_y, int fireFrame)
{
if (soulFire == null) return;
if (gaugeType != EGaugeType.NORMAL || diff > Difficulty.Edit) return;
float percent = Math.Min(100f, Math.Max(0f, currentPercent));
int soulfire_width = soulFire.szテクスチャサイズ.Width / 8;
int soulfire_height = soulFire.szテクスチャサイズ.Height;
if (percent >= 100.0)
{
soulFire.vc拡大縮小倍率.X = scale_x;
soulFire.vc拡大縮小倍率.Y = scale_y;
soulFire.t2D描画(TJAPlayer3.app.Device, fire_x, fire_y, new Rectangle(soulfire_width * fireFrame, 0, soulfire_width, soulfire_height));
}
}
public static void tDrawSoulLetter(CTexture soulLetter, Difficulty diff, int level, float currentPercent, EGaugeType gaugeType, float scale_x, float scale_y, int soul_x, int soul_y)
{
if (soulLetter == null) return;
if (gaugeType != EGaugeType.NORMAL || diff > Difficulty.Edit) return;
float norma = tGetCurrentGaugeNorma(diff, level);
float percent = Math.Min(100f, Math.Max(0f, currentPercent));
soulLetter.vc拡大縮小倍率.X = scale_x;
soulLetter.vc拡大縮小倍率.Y = scale_y;
int soul_height = soulLetter.szテクスチャサイズ.Height / 2;
if (tNormaCheck(diff, level, gaugeType, percent, 0))
{
soulLetter.t2D描画(TJAPlayer3.app.Device, soul_x, soul_y, new Rectangle(0, 0, soulLetter.szテクスチャサイズ.Width, soul_height));
}
else
{
soulLetter.t2D描画(TJAPlayer3.app.Device, soul_x, soul_y, new Rectangle(0, soul_height, soulLetter.szテクスチャサイズ.Width, soul_height));
}
}
public static void tDrawCompleteGauge(
CTexture baseTexture,
CTexture baseNormaTexture,
CTexture flashTexture,
CTexture fillTexture,
CTexture yellowTexture,
CTexture[] rainbowTextureArr,
CTexture killzoneTexture,
CTexture clearIcon,
CTexture soulLetter,
CTexture soulFire,
int x,
int y,
int Opacity,
int RainbowTextureIndex,
int SoulFireIndex,
Difficulty diff,
int level,
float currentPercent,
EGaugeType gaugeType,
float scale_x,
float scale_y,
int text_x,
int text_y,
int perfectHits,
int totalNotes,
int soul_x,
int soul_y,
int fire_x,
int fire_y
)
{
// Layers : Base - Base clear - Fill - Flash - Killzone - Clear logo - Soul fire - Soul text
tDrawGaugeBase(baseTexture, x, y, scale_x, scale_y);
tDrawGaugeBaseClear(baseNormaTexture, x, y, diff, level, gaugeType, scale_x, scale_y);
tDrawGaugeFill(fillTexture, yellowTexture, (rainbowTextureArr != null && RainbowTextureIndex < rainbowTextureArr.Length) ? rainbowTextureArr[RainbowTextureIndex] : null, x, y, diff, level, currentPercent, gaugeType, scale_x, scale_y, Opacity, perfectHits, totalNotes);
tDrawGaugeFlash(flashTexture, x, y, Opacity, diff, level, currentPercent, gaugeType, scale_x, scale_y);
tDrawKillZone(killzoneTexture, x, y, diff, level, gaugeType, scale_x, scale_y, perfectHits, totalNotes);
tDrawClearIcon(clearIcon, diff, level, currentPercent, text_x, text_y, gaugeType, perfectHits, totalNotes);
tDrawSoulFire(soulFire, diff, level, currentPercent, gaugeType, scale_x, scale_y, fire_x, fire_y, SoulFireIndex);
tDrawSoulLetter(soulLetter, diff, level, currentPercent, gaugeType, scale_x, scale_y, soul_x, soul_y);
}
#endregion
// Use with caution
#region [Unsafe methods]
public static bool UNSAFE_FastNormaCheck(int player)
{
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character];
var _dif = TJAPlayer3.stage選曲.n確定された曲の難易度[player];
return tNormaCheck(
(Difficulty)_dif,
TJAPlayer3.stage選曲.r確定された曲.arスコア[_dif]..nレベル[_dif],
tGetGaugeTypeEnum(chara.effect.Gauge),
(float)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[player],
UNSAFE_KillZonePercent(player)
);
}
public static bool UNSAFE_IsRainbow(int player)
{
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character];
if (tGetGaugeTypeEnum(chara.effect.Gauge) != EGaugeType.NORMAL) return false;
return (float)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[player] >= 100f;
}
public static float UNSAFE_KillZonePercent(int player)
{
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character];
CDTX[] dtxs =
{
TJAPlayer3.DTX,
TJAPlayer3.DTX_2P,
TJAPlayer3.DTX_3P,
TJAPlayer3.DTX_4P,
TJAPlayer3.DTX_5P
};
// Total hits and perfect hits
int perfectHits = TJAPlayer3.stage演奏ドラム画面.CChartScore[player].nGreat;
int totalHits = dtxs[player].nーツ数[3];
// Difficulty
int _dif = TJAPlayer3.stage選曲.n確定された曲の難易度[player];
Difficulty difficulty = (Difficulty)_dif;
int level = TJAPlayer3.stage選曲.r確定された曲.arスコア[_dif]..nレベル[_dif];
return tHardGaugeGetKillscreenRatio(
difficulty,
level,
tGetGaugeTypeEnum(chara.effect.Gauge),
perfectHits,
totalHits);
}
public static void UNSAFE_DrawGaugeFast(int player, int opacity, int rainbowTextureIndex, int soulFlameIndex)
{
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character];
CDTX[] dtxs =
{
TJAPlayer3.DTX,
TJAPlayer3.DTX_2P,
TJAPlayer3.DTX_3P,
TJAPlayer3.DTX_4P,
TJAPlayer3.DTX_5P
};
// Set box
GaugeBox = new int[]{ TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3] };
// Gauge pos
int gauge_x = 0;
int gauge_y = 0;
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
gauge_x = TJAPlayer3.Skin.Game_Gauge_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
gauge_y = TJAPlayer3.Skin.Game_Gauge_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
gauge_x = TJAPlayer3.Skin.Game_Gauge_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
gauge_y = TJAPlayer3.Skin.Game_Gauge_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
}
else
{
gauge_x = TJAPlayer3.Skin.Game_Gauge_X[player];
gauge_y = TJAPlayer3.Skin.Game_Gauge_Y[player];
}
// Text pos
int text_x = 0;
int text_y = 0;
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
{
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
text_x = TJAPlayer3.Skin.Game_Gauge_ClearText_X_AI;
text_y = TJAPlayer3.Skin.Game_Gauge_ClearText_Y_AI;
}
else
{
text_x = TJAPlayer3.Skin.Game_Gauge_ClearText_X[player];
text_y = TJAPlayer3.Skin.Game_Gauge_ClearText_Y[player];
}
}
// Soul pos
int soul_x = 0;
int soul_y = 0;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
soul_x = TJAPlayer3.Skin.Gauge_Soul_X_AI;
soul_y = TJAPlayer3.Skin.Gauge_Soul_Y_AI;
}
else
{
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
soul_x = TJAPlayer3.Skin.Gauge_Soul_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
soul_y = TJAPlayer3.Skin.Gauge_Soul_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
soul_x = TJAPlayer3.Skin.Gauge_Soul_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
soul_y = TJAPlayer3.Skin.Gauge_Soul_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
}
else
{
soul_x = TJAPlayer3.Skin.Gauge_Soul_X[player];
soul_y = TJAPlayer3.Skin.Gauge_Soul_Y[player];
}
}
// Fire pos
int fire_x = 0;
int fire_y = 0;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
fire_x = TJAPlayer3.Skin.Gauge_Soul_Fire_X_AI;
fire_y = TJAPlayer3.Skin.Gauge_Soul_Fire_Y_AI;
}
else
{
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
fire_x = TJAPlayer3.Skin.Gauge_Soul_Fire_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
fire_y = TJAPlayer3.Skin.Gauge_Soul_Fire_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
fire_x = TJAPlayer3.Skin.Gauge_Soul_Fire_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
fire_y = TJAPlayer3.Skin.Gauge_Soul_Fire_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
}
else
{
fire_x = TJAPlayer3.Skin.Gauge_Soul_Fire_X[player];
fire_y = TJAPlayer3.Skin.Gauge_Soul_Fire_Y[player];
}
}
// Total hits and perfect hits
int perfectHits = TJAPlayer3.stage演奏ドラム画面.CChartScore[player].nGreat;
int totalHits = dtxs[player].nーツ数[3];
// Scale
float scale = 1.0f;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
scale = 0.8f;
}
// Difficulty
int _dif = TJAPlayer3.stage選曲.n確定された曲の難易度[player];
Difficulty difficulty = (Difficulty)_dif;
int level = TJAPlayer3.stage選曲.r確定された曲.arスコア[_dif]..nレベル[_dif];
// Current percent
float currentPercent = (float)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[player];
// Gauge type
EGaugeType gaugeType = tGetGaugeTypeEnum(chara.effect.Gauge);
// Textures
int _4pGaugeIDX = (TJAPlayer3.ConfigIni.nPlayerCount >= 3) ? 1 : 0;
int _usedGauge = player + 3 * _4pGaugeIDX;
if (TJAPlayer3.P1IsBlue()) _usedGauge = 2;
_4pGaugeIDX = (TJAPlayer3.ConfigIni.nPlayerCount >= 3) ? 2
: (player == 1) ? 1
: 0;
CTexture baseTexture = TJAPlayer3.Tx.Gauge_Base[_usedGauge];
CTexture fillTexture = TJAPlayer3.Tx.Gauge[_usedGauge];
CTexture[] rainbowTextureArr = (new CTexture[][]{ TJAPlayer3.Tx.Gauge_Rainbow , TJAPlayer3.Tx.Gauge_Rainbow_2PGauge, TJAPlayer3.Tx.Gauge_Rainbow_Flat })[_4pGaugeIDX];
CTexture yellowTexture = TJAPlayer3.Tx.Gauge_Clear[_4pGaugeIDX];
CTexture baseNormaTexture = TJAPlayer3.Tx.Gauge_Base_Norma[_4pGaugeIDX];
CTexture killzoneTexture = TJAPlayer3.Tx.Gauge_Killzone[_4pGaugeIDX];
CTexture flashTexture = yellowTexture;
CTexture clearIcon = (_4pGaugeIDX == 2)
? null
: (gaugeType != EGaugeType.NORMAL)
? TJAPlayer3.Tx.Gauge_Killzone[0]
: TJAPlayer3.Tx.Gauge[0];
CTexture soulLetter = TJAPlayer3.Tx.Gauge_Soul;
CTexture soulFlame = TJAPlayer3.Tx.Gauge_Soul_Fire;
tDrawCompleteGauge(baseTexture, baseNormaTexture, flashTexture, fillTexture, yellowTexture, rainbowTextureArr, killzoneTexture, clearIcon, soulLetter, soulFlame, gauge_x, gauge_y, opacity, rainbowTextureIndex, soulFlameIndex, difficulty, level, currentPercent, gaugeType, scale, scale, text_x, text_y, perfectHits, totalHits, soul_x, soul_y, fire_x, fire_y);
}
public static void UNSAFE_DrawResultGaugeFast(int player, int shiftPos, int pos, int segmentsDisplayed, int rainbowTextureIndex, int soulFlameIndex)
{
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character];
CDTX[] dtxs =
{
TJAPlayer3.DTX,
TJAPlayer3.DTX_2P,
TJAPlayer3.DTX_3P,
TJAPlayer3.DTX_4P,
TJAPlayer3.DTX_5P
};
// Set box
GaugeBox = new int[] { TJAPlayer3.Skin.Result_Gauge_Rect[0], TJAPlayer3.Skin.Result_Gauge_Rect[1], TJAPlayer3.Skin.Result_Gauge_Rect[2], TJAPlayer3.Skin.Result_Gauge_Rect[3] };
// Total hits and perfect hits
int perfectHits = TJAPlayer3.stage演奏ドラム画面.CChartScore[player].nGreat;
int totalHits = dtxs[player].nーツ数[3];
// Gauge type
EGaugeType gaugeType = tGetGaugeTypeEnum(chara.effect.Gauge);
// Current percent
float currentPercent = segmentsDisplayed * 2f;
// Scale x
float scale_x = 1.0f;
if (TJAPlayer3.ConfigIni.nPlayerCount >= 3)
{
scale_x = 0.5f;
}
// Difficulty
int _dif = TJAPlayer3.stage選曲.n確定された曲の難易度[player];
Difficulty difficulty = (Difficulty)_dif;
int level = TJAPlayer3.stage選曲.r確定された曲.arスコア[_dif]..nレベル[_dif];
int gauge_x;
int gauge_y;
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
gauge_x = TJAPlayer3.Skin.Result_Gauge_5P[0] + TJAPlayer3.Skin.Result_UIMove_5P_X[pos];
gauge_y = TJAPlayer3.Skin.Result_Gauge_5P[1] + TJAPlayer3.Skin.Result_UIMove_5P_Y[pos];
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
gauge_x = TJAPlayer3.Skin.Result_Gauge_4P[0] + TJAPlayer3.Skin.Result_UIMove_4P_X[pos];
gauge_y = TJAPlayer3.Skin.Result_Gauge_4P[1] + TJAPlayer3.Skin.Result_UIMove_4P_Y[pos];
}
else
{
gauge_x = TJAPlayer3.Skin.Result_Gauge_X[pos];
gauge_y = TJAPlayer3.Skin.Result_Gauge_Y[pos];
}
// Flame and soul
int soulText_x;
int soulText_y;
int soulFire_x;
int soulFire_y;
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
soulText_x = TJAPlayer3.Skin.Result_Soul_Text_5P[0] + TJAPlayer3.Skin.Result_UIMove_5P_X[pos];
soulText_y = TJAPlayer3.Skin.Result_Soul_Text_5P[1] + TJAPlayer3.Skin.Result_UIMove_5P_Y[pos];
soulFire_x = TJAPlayer3.Skin.Result_Soul_Fire_5P[0] + TJAPlayer3.Skin.Result_UIMove_5P_X[pos];
soulFire_y = TJAPlayer3.Skin.Result_Soul_Fire_5P[1] + TJAPlayer3.Skin.Result_UIMove_5P_Y[pos];
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
soulText_x = TJAPlayer3.Skin.Result_Soul_Text_4P[0] + TJAPlayer3.Skin.Result_UIMove_4P_X[0];
soulText_y = TJAPlayer3.Skin.Result_Soul_Text_4P[1] + TJAPlayer3.Skin.Result_UIMove_4P_Y[1];
soulFire_x = TJAPlayer3.Skin.Result_Soul_Fire_4P[0] + TJAPlayer3.Skin.Result_UIMove_4P_X[0];
soulFire_y = TJAPlayer3.Skin.Result_Soul_Fire_4P[1] + TJAPlayer3.Skin.Result_UIMove_4P_Y[1];
}
else
{
soulText_x = TJAPlayer3.Skin.Result_Soul_Text_X[pos];
soulText_y = TJAPlayer3.Skin.Result_Soul_Text_Y[pos];
soulFire_x = TJAPlayer3.Skin.Result_Soul_Fire_X[pos];
soulFire_y = TJAPlayer3.Skin.Result_Soul_Fire_Y[pos];
}
// Clear text
int clearText_x;
int clearText_y;
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
clearText_x = TJAPlayer3.Skin.Result_Gauge_ClearText_5P[0] + TJAPlayer3.Skin.Result_UIMove_5P_X[0];
clearText_y = TJAPlayer3.Skin.Result_Gauge_ClearText_5P[1] + TJAPlayer3.Skin.Result_UIMove_5P_Y[1];
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
clearText_x = TJAPlayer3.Skin.Result_Gauge_ClearText_4P[0] + TJAPlayer3.Skin.Result_UIMove_4P_X[0];
clearText_y = TJAPlayer3.Skin.Result_Gauge_ClearText_4P[1] + TJAPlayer3.Skin.Result_UIMove_4P_Y[1];
}
else
{
clearText_x = TJAPlayer3.Skin.Result_Gauge_ClearText_X[pos];
clearText_y = TJAPlayer3.Skin.Result_Gauge_ClearText_Y[pos];
}
// Textures
int _usedGauge = shiftPos;
CTexture baseTexture = TJAPlayer3.Tx.Result_Gauge_Base[_usedGauge];
CTexture fillTexture = TJAPlayer3.Tx.Result_Gauge[_usedGauge];
CTexture[] rainbowTextureArr = TJAPlayer3.Tx.Result_Rainbow;
CTexture yellowTexture = TJAPlayer3.Tx.Result_Gauge_Clear;
CTexture baseNormaTexture = TJAPlayer3.Tx.Result_Gauge_Clear_Base;
CTexture killzoneTexture = TJAPlayer3.Tx.Result_Gauge_Killzone;
CTexture flashTexture = null;
CTexture clearIcon = TJAPlayer3.Tx.Result_Gauge[0];
CTexture soulLetter = TJAPlayer3.Tx.Result_Soul_Text;
CTexture soulFlame = TJAPlayer3.Tx.Result_Soul_Fire;
tDrawCompleteGauge(baseTexture, baseNormaTexture, flashTexture, fillTexture, yellowTexture, rainbowTextureArr, killzoneTexture, clearIcon, soulLetter, soulFlame, gauge_x, gauge_y, 0, rainbowTextureIndex, soulFlameIndex, difficulty, level, currentPercent, gaugeType, scale_x, 1f, clearText_x, clearText_y, perfectHits, totalHits, soulText_x, soulText_y, soulFire_x, soulFire_y);
}
#endregion
private static int[] GaugeBox = { TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3] };
}
}

View File

@ -575,6 +575,21 @@ namespace TJAPlayer3
Gauge_Line[0] = TxC(GAME + GAUGE + @"1P_Line.png");
Gauge_Line[1] = TxC(GAME + GAUGE + @"2P_Line.png");
Gauge_Clear = new CTexture[3];
Gauge_Clear[0] = TxC(GAME + GAUGE + @"Clear.png");
Gauge_Clear[1] = TxC(GAME + GAUGE + @"Clear_2PGauge.png");
Gauge_Clear[2] = TxC(GAME + GAUGE + @"Clear_4PGauge.png");
Gauge_Base_Norma = new CTexture[3];
Gauge_Base_Norma[0] = TxC(GAME + GAUGE + @"Norma_Base.png");
Gauge_Base_Norma[1] = TxC(GAME + GAUGE + @"Norma_Base_2PGauge.png");
Gauge_Base_Norma[2] = TxC(GAME + GAUGE + @"Norma_Base_4PGauge.png");
Gauge_Killzone = new CTexture[3];
Gauge_Killzone[0] = TxC(GAME + GAUGE + @"Killzone.png");
Gauge_Killzone[1] = TxC(GAME + GAUGE + @"Killzone_2PGauge.png");
Gauge_Killzone[2] = TxC(GAME + GAUGE + @"Killzone_4PGauge.png");
TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + GAUGE + @"Rainbow\"));
if (TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn != 0)
{
@ -585,6 +600,28 @@ namespace TJAPlayer3
}
}
TJAPlayer3.Skin.Game_Gauge_Rainbow_Flat_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + GAUGE + @"Rainbow_Flat\"));
if (TJAPlayer3.Skin.Game_Gauge_Rainbow_Flat_Ptn != 0)
{
Gauge_Rainbow_Flat = new CTexture[TJAPlayer3.Skin.Game_Gauge_Rainbow_Flat_Ptn];
for (int i = 0; i < TJAPlayer3.Skin.Game_Gauge_Rainbow_Flat_Ptn; i++)
{
Gauge_Rainbow_Flat[i] = TxC(GAME + GAUGE + @"Rainbow_Flat\" + i.ToString() + ".png");
}
}
TJAPlayer3.Skin.Game_Gauge_Rainbow_2PGauge_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + GAUGE + @"Rainbow_2PGauge\"));
if (TJAPlayer3.Skin.Game_Gauge_Rainbow_2PGauge_Ptn != 0)
{
Gauge_Rainbow_2PGauge = new CTexture[TJAPlayer3.Skin.Game_Gauge_Rainbow_2PGauge_Ptn];
for (int i = 0; i < TJAPlayer3.Skin.Game_Gauge_Rainbow_2PGauge_Ptn; i++)
{
Gauge_Rainbow_2PGauge[i] = TxC(GAME + GAUGE + @"Rainbow_2PGauge\" + i.ToString() + ".png");
}
}
// Dan
TJAPlayer3.Skin.Game_Gauge_Dan_Rainbow_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + DANC + @"Rainbow\"));
if (TJAPlayer3.Skin.Game_Gauge_Dan_Rainbow_Ptn != 0)
{
@ -1007,6 +1044,11 @@ namespace TJAPlayer3
Result_Gauge[4] = TxC(RESULT + @"Gauge_5.png");
Result_Gauge_Base[4] = TxC(RESULT + @"Gauge_Base_5.png");
Result_Gauge_Frame = TxC(RESULT + @"Gauge_Frame.png");
Result_Gauge_Clear = TxC(RESULT + @"Gauge_Clear.png");
Result_Gauge_Clear_Base = TxC(RESULT + @"Gauge_Clear_Base.png");
Result_Gauge_Killzone = TxC(RESULT + @"Gauge_Killzone.png");
Result_Header = TxC(RESULT + @"Header.png");
Result_Number = TxC(RESULT + @"Number.png");
Result_Panel = TxC(RESULT + @"Panel.png");
@ -2278,8 +2320,13 @@ namespace TJAPlayer3
#region
public CTexture[] Gauge,
Gauge_Base,
Gauge_Base_Norma,
Gauge_Line,
Gauge_Rainbow,
Gauge_Rainbow_2PGauge,
Gauge_Rainbow_Flat,
Gauge_Clear,
Gauge_Killzone,
Gauge_Soul_Explosion;
public CTexture Gauge_Soul,
Gauge_Flash,
@ -2467,10 +2514,14 @@ namespace TJAPlayer3
Result_CrownEffect,
Result_ScoreRankEffect,
//Result_Cloud,
Result_Flower,
Result_Shine,
Result_Gauge_Frame,
Result_Gauge_Clear,
Result_Gauge_Clear_Base,
Result_Gauge_Killzone,
Result_Dan;

View File

@ -110,23 +110,21 @@ namespace TJAPlayer3
{
//ダメージ値の計算は太鼓の達人譜面Wikiのものを参考にしました。
for (int i = 0; i < 5; i++)
{
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character];
switch(chara.effect.Gauge)
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character];
switch (chara.effect.Gauge)
{
default:
case "Normal":
this.db現在のゲージ値[i] = 0;
this.db現在のゲージ値[nPlayer] = 0;
break;
case "Hard":
this.db現在のゲージ値[i] = 100;
break;
case "Extreme":
this.db現在のゲージ値[i] = 100;
this.db現在のゲージ値[nPlayer] = 100;
break;
}
}
}
//ゲージのMAXまでの最低コンボ数を計算
float dbGaugeMaxComboValue = 0;
float[] dbGaugeMaxComboValue_branch = new float[3];
@ -165,26 +163,11 @@ namespace TJAPlayer3
break;
case 9:
case 10:
case 10:
default:
gaugeRate = this.fGaugeMaxRate[2];
dbDamageRate = 2.0f;
break;
case 11:
gaugeRate = this.fGaugeMaxRate[3];
dbDamageRate = 2.2f;
break;
case 12:
gaugeRate = this.fGaugeMaxRate[4];
dbDamageRate = 2.4f;
break;
default:
gaugeRate = this.fGaugeMaxRate[5];
dbDamageRate = 2.6f;
break;
}
#region [(Unbloated) Gauge max combo values]
@ -204,27 +187,9 @@ namespace TJAPlayer3
#endregion
#region [Change the weights depending on the choosen difficulty (More lenient for easier diffs, set to 0 for Tower charts)]
float multiplicationFactor = 1f;
if (nanidou <= (int)Difficulty.Edit)
{
float[] factors =
{
1.6f,
1.33f,
1.14f,
1f,
1f,
};
multiplicationFactor = factors[nanidou];
}
else if (nanidou == (int)Difficulty.Tower)
multiplicationFactor = 0f;
#endregion
if (nanidou == (int)Difficulty.Tower)
multiplicationFactor = 0f;
double nGaugeRankValue = 0D;
double[] nGaugeRankValue_branch = new double[] { 0D, 0D, 0D };
@ -346,14 +311,15 @@ namespace TJAPlayer3
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character];
switch (chara.effect.Gauge)
{
default:
case "Normal":
dbゲージ増加量[i][nPlayer] = increase[i];
break;
case "Hard":
dbゲージ増加量[i][nPlayer] = increase[i] / 2.0f;
dbゲージ増加量[i][nPlayer] = increase[i] * HGaugeMethods.HardGaugeFillRatio;
break;
case "Extreme":
dbゲージ増加量[i][nPlayer] = increase[i] / 4.0f;
dbゲージ増加量[i][nPlayer] = increase[i] * HGaugeMethods.ExtremeGaugeFillRatio;
break;
}
}
@ -362,20 +328,21 @@ namespace TJAPlayer3
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character];
switch (chara.effect.Gauge)
{
default:
case "Normal":
dbゲージ増加量_Branch[i, 0][nPlayer] = increaseBranch[i, 0];
dbゲージ増加量_Branch[i, 1][nPlayer] = increaseBranch[i, 1];
dbゲージ増加量_Branch[i, 2][nPlayer] = increaseBranch[i, 2];
break;
case "Hard":
dbゲージ増加量_Branch[i, 0][nPlayer] = increaseBranch[i, 0] / 2.0f;
dbゲージ増加量_Branch[i, 1][nPlayer] = increaseBranch[i, 1] / 2.0f;
dbゲージ増加量_Branch[i, 2][nPlayer] = increaseBranch[i, 2] / 2.0f;
dbゲージ増加量_Branch[i, 0][nPlayer] = increaseBranch[i, 0] * HGaugeMethods.HardGaugeFillRatio;
dbゲージ増加量_Branch[i, 1][nPlayer] = increaseBranch[i, 1] * HGaugeMethods.HardGaugeFillRatio;
dbゲージ増加量_Branch[i, 2][nPlayer] = increaseBranch[i, 2] * HGaugeMethods.HardGaugeFillRatio;
break;
case "Extreme":
dbゲージ増加量_Branch[i, 0][nPlayer] = increaseBranch[i, 0] / 4.0f;
dbゲージ増加量_Branch[i, 1][nPlayer] = increaseBranch[i, 1] / 4.0f;
dbゲージ増加量_Branch[i, 2][nPlayer] = increaseBranch[i, 2] / 4.0f;
dbゲージ増加量_Branch[i, 0][nPlayer] = increaseBranch[i, 0] * HGaugeMethods.ExtremeGaugeFillRatio;
dbゲージ増加量_Branch[i, 1][nPlayer] = increaseBranch[i, 1] * HGaugeMethods.ExtremeGaugeFillRatio;
dbゲージ増加量_Branch[i, 2][nPlayer] = increaseBranch[i, 2] * HGaugeMethods.ExtremeGaugeFillRatio;
break;
}
}
@ -422,7 +389,12 @@ namespace TJAPlayer3
public void MineDamage(int nPlayer)
{
this.db現在のゲージ値[nPlayer] = Math.Max(0, this.db現在のゲージ値[nPlayer] - 4);
this.db現在のゲージ値[nPlayer] = Math.Max(0, this.db現在のゲージ値[nPlayer] - HGaugeMethods.BombDamage);
}
public void FuseDamage(int nPlayer)
{
this.db現在のゲージ値[nPlayer] = Math.Max(0, this.db現在のゲージ値[nPlayer] - HGaugeMethods.FuserollDamage);
}
public void Damage(E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int nPlayer)
@ -471,13 +443,17 @@ namespace TJAPlayer3
}
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character];
int nanidou = TJAPlayer3.stage選曲.n確定された曲の難易度[nPlayer];
int level = this.DTX[nPlayer].LEVELtaiko[nanidou];
switch (chara.effect.Gauge)
{
case "Hard":
fDamage = -25;
fDamage = -HGaugeMethods.tHardGaugeGetDamage((Difficulty)nanidou, level);
break;
case "Extreme":
fDamage = -50;
fDamage = -HGaugeMethods.tExtremeGaugeGetDamage((Difficulty)nanidou, level);
break;
}

View File

@ -496,6 +496,7 @@ namespace TJAPlayer3
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character];
switch (chara.effect.Gauge)
{
default:
case "Normal":
bIsAlreadyCleared[player] = false;
break;
@ -905,6 +906,7 @@ namespace TJAPlayer3
public int[] Chara_MissCount;
protected E連打State eRollState;
protected bool[] ifp = { false, false, false, false, false };
protected bool[] isDeniedPlaying = { false, false, false, false, false };
protected int nタイマ番号;
protected int n現在の音符の顔番号;
@ -1920,17 +1922,7 @@ namespace TJAPlayer3
}
var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character];
bool cleared = false;
switch (chara.effect.Gauge)
{
case "Normal":
cleared = (int)actGauge.db現在のゲージ値[nPlayer] >= 80;
break;
case "Hard":
case "Extreme":
cleared = (int)actGauge.db現在のゲージ値[nPlayer] > 0;
break;
}
bool cleared = HGaugeMethods.UNSAFE_FastNormaCheck(nPlayer);
if (eJudgeResult != E判定.Poor && eJudgeResult != E判定.Miss)
{
@ -1941,7 +1933,7 @@ namespace TJAPlayer3
int Character = this.actChara.iCurrentCharacter[nPlayer];
if ((int)actGauge.db現在のゲージ値[nPlayer] >= 100 && this.bIsAlreadyMaxed[nPlayer] == false)
if (HGaugeMethods.UNSAFE_IsRainbow(nPlayer) && this.bIsAlreadyMaxed[nPlayer] == false)
{
if(TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].b終了値に達した)
{
@ -1964,7 +1956,7 @@ namespace TJAPlayer3
{
// ランナー(みすったやつ)
this.actRunner.Start(nPlayer, true, pChip);
if ((int)actGauge.db現在のゲージ値[nPlayer] < 100 && this.bIsAlreadyMaxed[nPlayer] == true)
if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer) && this.bIsAlreadyMaxed[nPlayer] == true)
{
this.bIsAlreadyMaxed[nPlayer] = false;
}
@ -1978,9 +1970,22 @@ namespace TJAPlayer3
case "Hard":
case "Extreme":
{
CSound管理.rc演奏用タイマ.t一時停止();
TJAPlayer3.DTX.t全チップの再生停止();
ifp[nPlayer] = true;
isDeniedPlaying[nPlayer] = true; // Prevents the player to ever be able to hit the drum, without freezing the whole game
bool allDeniedPlaying = true;
for (int p = 0; p < TJAPlayer3.ConfigIni.nPlayerCount; p++)
{
if (!isDeniedPlaying[p])
{
allDeniedPlaying = false;
break;
}
}
if (allDeniedPlaying) TJAPlayer3.DTX.t全チップの再生停止(); // Stop playing song
// Stop timer : Pauses the whole game (to remove once is denied playing will work)
//CSound管理.rc演奏用タイマ.t一時停止();
}
break;
}
@ -2304,7 +2309,7 @@ namespace TJAPlayer3
{
if (TJAPlayer3.Skin.Characters_10Combo_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CAct演奏Drumsキャラクター.Anime.Combo10 && actChara.CharaAction_Balloon_Delay[nPlayer].b終了値に達した)
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[nPlayer] < 100)
if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer))
{
// 魂ゲージMAXではない
// ジャンプ_ーマル
@ -2313,7 +2318,7 @@ namespace TJAPlayer3
}
if (TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CAct演奏Drumsキャラクター.Anime.Combo10_Max && actChara.CharaAction_Balloon_Delay[nPlayer].b終了値に達した)
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[nPlayer] >= 100)
if (HGaugeMethods.UNSAFE_IsRainbow(nPlayer))
{
// 魂ゲージMAX
// ジャンプ_MAX
@ -3904,7 +3909,7 @@ namespace TJAPlayer3
{
if (TJAPlayer3.Skin.Characters_GoGoStart_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].b終了値に達した)
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[nPlayer] < 100)
if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer))
{
// 魂ゲージMAXではない
// ゴーゴースタート_ーマル
@ -3914,7 +3919,7 @@ namespace TJAPlayer3
}
if (TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].b終了値に達した)
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[nPlayer] >= 100)
if (HGaugeMethods.UNSAFE_IsRainbow(nPlayer))
{
// 魂ゲージMAX
// ゴーゴースタート_MAX
@ -5055,6 +5060,7 @@ namespace TJAPlayer3
JPOSCROLLX[i] = 0;
JPOSCROLLY[i] = 0;
ifp[i] = false;
isDeniedPlaying[i] = false;
TJAPlayer3.ConfigIni.nGameType[i] = eFirstGameType[i];
bSplitLane[i] = false;

View File

@ -55,7 +55,7 @@ namespace TJAPlayer3
TJAPlayer3.act文字コンソール.tPrint(0, 10, C文字コンソール.Eフォント種別., Math.Sin((float)this.ctMob.n現在の値 * (Math.PI / 180)).ToString());
*/
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[0] >= 100)
if (HGaugeMethods.UNSAFE_IsRainbow(0))
{
if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) nNowMobCounter += (Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] / 60.0f) * (float)TJAPlayer3.FPS.DeltaTime) * 180 / nMobBeat;

View File

@ -170,84 +170,101 @@ namespace TJAPlayer3
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower || TJAPlayer3.ConfigIni.bTokkunMode)
return 0;
float scale = 1.0f;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan)
{
scale = 0.8f;
#region [Regular gauges]
// Flash opacity
int Opacity = 0;
if (this.ctGaugeFlash.n現在の値 <= 365) Opacity = 0;
else if (this.ctGaugeFlash.n現在の値 <= 448) Opacity = (int)((this.ctGaugeFlash.n現在の値 - 365) / 83f * 255f);
else if (this.ctGaugeFlash.n現在の値 <= 531) Opacity = 255 - (int)((this.ctGaugeFlash.n現在の値 - 448) / 83f * 255f);
// Rainbow gauge
this.ct虹アニメ.t進行Loop();
this.ct虹透明度.t進行Loop();
int rainbowFrame = this.ct虹アニメ.n現在の値;
// Soul fire frame
this.ct炎.t進行Loop();
int soulFireFrame = this.ct炎.n現在の値;
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) continue;
HGaugeMethods.UNSAFE_DrawGaugeFast(i, Opacity, rainbowFrame, soulFireFrame);
}
#endregion
}
int[] gauge_x = new int[5];
int[] gauge_y = new int[5];
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
else
{
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
float scale = 1.0f;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
gauge_x[i] = TJAPlayer3.Skin.Game_Gauge_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
gauge_y[i] = TJAPlayer3.Skin.Game_Gauge_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
gauge_x[i] = TJAPlayer3.Skin.Game_Gauge_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
gauge_y[i] = TJAPlayer3.Skin.Game_Gauge_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
}
else
{
gauge_x[i] = TJAPlayer3.Skin.Game_Gauge_X[i];
gauge_y[i] = TJAPlayer3.Skin.Game_Gauge_Y[i];
}
}
#region [Gauge base]
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
if (TJAPlayer3.P1IsBlue())
{
TJAPlayer3.Tx.Gauge_Dan[4]?.t2D描画(TJAPlayer3.app.Device, gauge_x[0], gauge_y[0],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
else
{
TJAPlayer3.Tx.Gauge_Dan[0]?.t2D描画(TJAPlayer3.app.Device, gauge_x[0], gauge_y[0],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
scale = 0.8f;
}
if (TJAPlayer3.Tx.Gauge_Dan[2] != null)
int[] gauge_x = new int[5];
int[] gauge_y = new int[5];
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
for (int i = 0; i < TJAPlayer3.DTX.Dan_C.Length; i++)
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
if (TJAPlayer3.DTX.Dan_C[i] != null)
gauge_x[i] = TJAPlayer3.Skin.Game_Gauge_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
gauge_y[i] = TJAPlayer3.Skin.Game_Gauge_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
gauge_x[i] = TJAPlayer3.Skin.Game_Gauge_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
gauge_y[i] = TJAPlayer3.Skin.Game_Gauge_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
}
else
{
gauge_x[i] = TJAPlayer3.Skin.Game_Gauge_X[i];
gauge_y[i] = TJAPlayer3.Skin.Game_Gauge_Y[i];
}
}
#region [Gauge base]
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
if (TJAPlayer3.P1IsBlue())
{
TJAPlayer3.Tx.Gauge_Dan[4]?.t2D描画(TJAPlayer3.app.Device, gauge_x[0], gauge_y[0],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
else
{
TJAPlayer3.Tx.Gauge_Dan[0]?.t2D描画(TJAPlayer3.app.Device, gauge_x[0], gauge_y[0],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
if (TJAPlayer3.Tx.Gauge_Dan[2] != null)
{
for (int i = 0; i < TJAPlayer3.DTX.Dan_C.Length; i++)
{
if (TJAPlayer3.DTX.Dan_C[i].GetExamType() == Exam.Type.Gauge)
if (TJAPlayer3.DTX.Dan_C[i] != null)
{
TJAPlayer3.Tx.Gauge_Dan[2].t2D描画(TJAPlayer3.app.Device, gauge_x[0] + (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), gauge_y[0],
new Rectangle((TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), 0, TJAPlayer3.Skin.Game_Gauge_Rect[2] - (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), TJAPlayer3.Skin.Game_Gauge_Rect[3]));
if (TJAPlayer3.DTX.Dan_C[i].GetExamType() == Exam.Type.Gauge)
{
TJAPlayer3.Tx.Gauge_Dan[2].t2D描画(TJAPlayer3.app.Device, gauge_x[0] + (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), gauge_y[0],
new Rectangle((TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), 0, TJAPlayer3.Skin.Game_Gauge_Rect[2] - (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
}
}
}
}
}
else
{
if (TJAPlayer3.stage演奏ドラム画面.bDoublePlay && !TJAPlayer3.ConfigIni.bAIBattleMode)
{
for (int i = 1; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
int index = TJAPlayer3.ConfigIni.nPlayerCount <= 2 ? 1 : 3 + i;
TJAPlayer3.Tx.Gauge_Base[index]?.t2D描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
}
if (TJAPlayer3.P1IsBlue())
{
TJAPlayer3.Tx.Gauge_Base[2]?.t2D描画(TJAPlayer3.app.Device, gauge_x[0], gauge_y[0],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
else
{
int index = TJAPlayer3.ConfigIni.nPlayerCount <= 2 ? 0 : 3;
#endregion
#region [ Gauge 1P ]
if (TJAPlayer3.Tx.Gauge[0] != null)
{
int x;
int y;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
@ -261,354 +278,183 @@ namespace TJAPlayer3
y = gauge_y[0];
}
if (TJAPlayer3.Tx.Gauge_Base[index] != null)
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
TJAPlayer3.Tx.Gauge_Base[index].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Base[index].vc拡大縮小倍率.Y = scale;
if (TJAPlayer3.P1IsBlue())
TJAPlayer3.Tx.Gauge_Dan[5]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, nRectX[0], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
else
TJAPlayer3.Tx.Gauge_Dan[1]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, nRectX[0], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
TJAPlayer3.Tx.Gauge_Base[index].t2D描画(TJAPlayer3.app.Device, x, y,
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
}
}
#endregion
#region [ Gauge 1P ]
if( TJAPlayer3.Tx.Gauge[0] != null )
{
int x;
int y;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
x = TJAPlayer3.Skin.Game_Gauge_X_AI;
y = TJAPlayer3.Skin.Game_Gauge_Y_AI;
}
else
{
x = gauge_x[0];
y = gauge_y[0];
}
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
if (TJAPlayer3.P1IsBlue())
TJAPlayer3.Tx.Gauge_Dan[5]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, nRectX[0], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
else
TJAPlayer3.Tx.Gauge_Dan[1]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, nRectX[0], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
for (int i = 0; i < TJAPlayer3.DTX.Dan_C.Length; i++)
{
if (TJAPlayer3.DTX.Dan_C[i] != null && TJAPlayer3.DTX.Dan_C[i].GetExamType() == Exam.Type.Gauge && db現在のゲージ値[0] >= TJAPlayer3.DTX.Dan_C[i].GetValue(false))
for (int i = 0; i < TJAPlayer3.DTX.Dan_C.Length; i++)
{
TJAPlayer3.Tx.Gauge_Dan[3].Opacity = 255;
TJAPlayer3.Tx.Gauge_Dan[3]?.t2D描画(TJAPlayer3.app.Device, x + (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), y, new Rectangle(0, 0, nRectX[0] - (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), TJAPlayer3.Skin.Game_Gauge_Rect[3]));
if (TJAPlayer3.DTX.Dan_C[i] != null && TJAPlayer3.DTX.Dan_C[i].GetExamType() == Exam.Type.Gauge && db現在のゲージ値[0] >= TJAPlayer3.DTX.Dan_C[i].GetValue(false))
{
TJAPlayer3.Tx.Gauge_Dan[3].Opacity = 255;
TJAPlayer3.Tx.Gauge_Dan[3]?.t2D描画(TJAPlayer3.app.Device, x + (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), y, new Rectangle(0, 0, nRectX[0] - (TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth), TJAPlayer3.Skin.Game_Gauge_Rect[3]));
int Opacity = 0;
if (this.ctGaugeFlash.n現在の値 <= 365) Opacity = 0;
else if (this.ctGaugeFlash.n現在の値 <= 448) Opacity = (int)((this.ctGaugeFlash.n現在の値 - 365) / 83f * 255f);
else if (this.ctGaugeFlash.n現在の値 <= 531) Opacity = 255 - (int)((this.ctGaugeFlash.n現在の値 - 448) / 83f * 255f);
TJAPlayer3.Tx.Gauge_Dan[3].Opacity = Opacity;
TJAPlayer3.Tx.Gauge_Dan[3]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth, TJAPlayer3.Skin.Game_Gauge_Rect[3]));
int Opacity = 0;
if (this.ctGaugeFlash.n現在の値 <= 365) Opacity = 0;
else if (this.ctGaugeFlash.n現在の値 <= 448) Opacity = (int)((this.ctGaugeFlash.n現在の値 - 365) / 83f * 255f);
else if (this.ctGaugeFlash.n現在の値 <= 531) Opacity = 255 - (int)((this.ctGaugeFlash.n現在の値 - 448) / 83f * 255f);
TJAPlayer3.Tx.Gauge_Dan[3].Opacity = Opacity;
TJAPlayer3.Tx.Gauge_Dan[3]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, TJAPlayer3.DTX.Dan_C[i].GetValue(false) / 2 * nWidth, TJAPlayer3.Skin.Game_Gauge_Rect[3]));
break;
break;
}
}
}
}
else
{
if (TJAPlayer3.P1IsBlue())
TJAPlayer3.Tx.Gauge[2]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, nRectX[0], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
else
{
int index = TJAPlayer3.ConfigIni.nPlayerCount <= 2 ? 0 : 3;
if (TJAPlayer3.Tx.Gauge[index] != null)
{
TJAPlayer3.Tx.Gauge[index].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge[index].vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Gauge[index].t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, nRectX[0], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
}
}
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && db現在のゲージ値[0] >= 80.0 && db現在のゲージ値[0] < 100.0)
{
int Opacity = 0;
if (this.ctGaugeFlash.n現在の値 <= 365) Opacity = 0;
else if (this.ctGaugeFlash.n現在の値 <= 448) Opacity = (int)((this.ctGaugeFlash.n現在の値 - 365) / 83f * 255f);
else if (this.ctGaugeFlash.n現在の値 <= 531) Opacity = 255 - (int)((this.ctGaugeFlash.n現在の値 - 448) / 83f * 255f);
if (TJAPlayer3.Tx.Gauge_Flash != null)
{
TJAPlayer3.Tx.Gauge_Flash.vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Flash.vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Gauge_Flash.Opacity = Opacity;
TJAPlayer3.Tx.Gauge_Flash.t2D描画(TJAPlayer3.app.Device, x, y,
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
}
if (TJAPlayer3.Tx.Gauge_Line[0] != null )
{
#region [Rainbow]
if ( this.db現在のゲージ値[ 0 ] >= 100.0 )
if (TJAPlayer3.Tx.Gauge_Line[0] != null)
{
this.ct虹アニメ.t進行Loop();
this.ct虹透明度.t進行Loop();
if(TJAPlayer3.Tx.Gauge_Rainbow[ this.ct虹アニメ.n現在の値 ] != null )
{
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].vc拡大縮小倍率.Y = scale;
#region [Rainbow]
TJAPlayer3.Tx.Gauge_Rainbow[].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Rainbow[].vc拡大縮小倍率.Y = scale;
bool smart = TJAPlayer3.ConfigIni.nPlayerCount > 2 || TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan;
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].Opacity = 255;
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].t2D描画(TJAPlayer3.app.Device, x, y + (smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0),
new RectangleF(0,
smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0,
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].szテクスチャサイズ.Width,
smart ? TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].szテクスチャサイズ.Height - (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].szテクスチャサイズ.Height));
TJAPlayer3.Tx.Gauge_Rainbow[].Opacity = (ct虹透明度.n現在の値 * 255 / (int)ct虹透明度.n終了値)/1;
TJAPlayer3.Tx.Gauge_Rainbow[].t2D描画(TJAPlayer3.app.Device, x, y + (smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0),
new RectangleF(0,
smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0,
TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Width,
smart ? TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Height - (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Height));
}
}
#endregion
TJAPlayer3.Tx.Gauge_Line[0].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Line[0].vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Gauge_Line[0].t2D描画( TJAPlayer3.app.Device, x, y);
}
#region[ Clearicon ]
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && TJAPlayer3.ConfigIni.nPlayerCount <= 2)
{
int text_x;
int text_y;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
text_x = TJAPlayer3.Skin.Game_Gauge_ClearText_X_AI;
text_y = TJAPlayer3.Skin.Game_Gauge_ClearText_Y_AI;
}
else
{
text_x = TJAPlayer3.Skin.Game_Gauge_ClearText_X[0];
text_y = TJAPlayer3.Skin.Game_Gauge_ClearText_Y[0];
}
if (this.db現在のゲージ値[0] >= 80.0)
{
TJAPlayer3.Tx.Gauge[0].t2D描画(TJAPlayer3.app.Device, text_x, text_y,
new Rectangle(TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[0], TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[1], TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[2], TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[3]));
}
else
{
TJAPlayer3.Tx.Gauge[0].t2D描画(TJAPlayer3.app.Device, text_x, text_y,
new Rectangle(TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[0], TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[1], TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[2], TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[3]));
}
}
#endregion
}
#endregion
#region [ Gauge 2P ]
for (int i = 1; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
int index = TJAPlayer3.ConfigIni.nPlayerCount <= 2 ? 1 : i + 3;
if (TJAPlayer3.stage演奏ドラム画面.bDoublePlay && !TJAPlayer3.ConfigIni.bAIBattleMode && TJAPlayer3.Tx.Gauge[index] != null)
{
TJAPlayer3.Tx.Gauge[index].t2D描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i], new Rectangle(0, 0, nRectX[i], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
if (db現在のゲージ値[i] >= 80.0 && db現在のゲージ値[i] < 100.0)
{
int Opacity = 0;
if (this.ctGaugeFlash.n現在の値 <= 365) Opacity = 0;
else if (this.ctGaugeFlash.n現在の値 <= 448) Opacity = (int)((this.ctGaugeFlash.n現在の値 - 365) / 83f * 255f);
else if (this.ctGaugeFlash.n現在の値 <= 531) Opacity = 255 - (int)((this.ctGaugeFlash.n現在の値 - 448) / 83f * 255f);
TJAPlayer3.Tx.Gauge_Flash.Opacity = Opacity;
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
{
TJAPlayer3.Tx.Gauge_Flash.t2D上下反転描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
else
{
TJAPlayer3.Tx.Gauge_Flash.t2D描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_Rect[0], TJAPlayer3.Skin.Game_Gauge_Rect[1], TJAPlayer3.Skin.Game_Gauge_Rect[2], TJAPlayer3.Skin.Game_Gauge_Rect[3]));
}
}
if (TJAPlayer3.Tx.Gauge[index] != null)
{
if (this.db現在のゲージ値[i] >= 100.0)
if (this.db現在のゲージ値[0] >= 100.0)
{
this.ct虹アニメ.t進行Loop();
this.ct虹透明度.t進行Loop();
if (TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値] != null)
{
TJAPlayer3.Tx.Gauge_Rainbow[ct虹アニメ.n現在の値].Opacity = 255;
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
{
TJAPlayer3.Tx.Gauge_Rainbow[ct虹アニメ.n現在の値].t2D上下反転描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i]);
}
else
{
TJAPlayer3.Tx.Gauge_Rainbow[ct虹アニメ.n現在の値].t2D描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i] + (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2),
new RectangleF(0, (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2),
TJAPlayer3.Tx.Gauge_Rainbow[ct虹アニメ.n現在の値].szテクスチャサイズ.Width,
TJAPlayer3.Tx.Gauge_Rainbow[ct虹アニメ.n現在の値].szテクスチャサイズ.Height - (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2)));
}
TJAPlayer3.Tx.Gauge_Rainbow[].Opacity = (int)(ct虹透明度.n現在の値 * 255 / ct虹透明度.n終了値) / 1;
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].vc拡大縮小倍率.Y = scale;
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
{
TJAPlayer3.Tx.Gauge_Rainbow[].t2D上下反転描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i]);
}
else
{
TJAPlayer3.Tx.Gauge_Rainbow[].t2D描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i] + (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2),
new RectangleF(0, (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2),
TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Width,
TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Height - (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2)));
}
TJAPlayer3.Tx.Gauge_Rainbow[].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Rainbow[].vc拡大縮小倍率.Y = scale;
bool smart = TJAPlayer3.ConfigIni.nPlayerCount > 2 || TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan;
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].Opacity = 255;
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].t2D描画(TJAPlayer3.app.Device, x, y + (smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0),
new RectangleF(0,
smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0,
TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].szテクスチャサイズ.Width,
smart ? TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].szテクスチャサイズ.Height - (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : TJAPlayer3.Tx.Gauge_Rainbow[this.ct虹アニメ.n現在の値].szテクスチャサイズ.Height));
TJAPlayer3.Tx.Gauge_Rainbow[].Opacity = (ct虹透明度.n現在の値 * 255 / (int)ct虹透明度.n終了値) / 1;
TJAPlayer3.Tx.Gauge_Rainbow[].t2D描画(TJAPlayer3.app.Device, x, y + (smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0),
new RectangleF(0,
smart ? (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : 0,
TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Width,
smart ? TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Height - (TJAPlayer3.Skin.Game_Gauge_Rect[3] / 2) : TJAPlayer3.Tx.Gauge_Rainbow[].szテクスチャサイズ.Height));
}
}
TJAPlayer3.Tx.Gauge_Line[1]?.t2D描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i]);
#endregion
TJAPlayer3.Tx.Gauge_Line[0].vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Line[0].vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Gauge_Line[0].t2D描画(TJAPlayer3.app.Device, x, y);
}
#region[ ]
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
}
#endregion
// Soul fire here
if (TJAPlayer3.Tx.Gauge_Soul_Fire != null)
{
//仮置き
int soulfire_width = TJAPlayer3.Tx.Gauge_Soul_Fire.szテクスチャサイズ.Width / 8;
int soulfire_height = TJAPlayer3.Tx.Gauge_Soul_Fire.szテクスチャサイズ.Height;
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break;
int x;
int y;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_X_AI;
y = TJAPlayer3.Skin.Gauge_Soul_Fire_Y_AI;
}
else
{
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_Fire_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_Fire_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
}
else
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_X[i];
y = TJAPlayer3.Skin.Gauge_Soul_Fire_Y[i];
}
}
if (this.db現在のゲージ値[i] >= 100.0)
{
this.ct炎.t進行Loop();
TJAPlayer3.Tx.Gauge_Soul_Fire.vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Soul_Fire.vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Gauge_Soul_Fire.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(soulfire_width * (this.ct炎.n現在の値), 0, soulfire_width, soulfire_height));
}
}
}
if (TJAPlayer3.Tx.Gauge_Soul != null)
{
//仮置き
int soul_height = TJAPlayer3.Tx.Gauge_Soul.szテクスチャサイズ.Height / 2;
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break;
int x;
int y;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
x = TJAPlayer3.Skin.Gauge_Soul_X_AI;
y = TJAPlayer3.Skin.Gauge_Soul_Y_AI;
}
else
{
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
x = TJAPlayer3.Skin.Gauge_Soul_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
x = TJAPlayer3.Skin.Gauge_Soul_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
}
else
{
x = TJAPlayer3.Skin.Gauge_Soul_X[i];
y = TJAPlayer3.Skin.Gauge_Soul_Y[i];
}
}
TJAPlayer3.Tx.Gauge_Soul.vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Soul.vc拡大縮小倍率.Y = scale;
if (this.db現在のゲージ値[i] >= 80.0)
{
TJAPlayer3.Tx.Gauge[1].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Game_Gauge_ClearText_X[1], TJAPlayer3.Skin.Game_Gauge_ClearText_Y[1],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[0], TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[1], TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[2], TJAPlayer3.Skin.Game_Gauge_ClearText_Rect[3]));
TJAPlayer3.Tx.Gauge_Soul.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, TJAPlayer3.Tx.Gauge_Soul.szテクスチャサイズ.Width, soul_height));
}
else
{
TJAPlayer3.Tx.Gauge[1].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Game_Gauge_ClearText_X[1], TJAPlayer3.Skin.Game_Gauge_ClearText_Y[1],
new Rectangle(TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[0], TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[1], TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[2], TJAPlayer3.Skin.Game_Gauge_ClearText_Clear_Rect[3]));
TJAPlayer3.Tx.Gauge_Soul.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, soul_height, TJAPlayer3.Tx.Gauge_Soul.szテクスチャサイズ.Width, soul_height));
}
}
#endregion
}
}
#endregion
// Soul fire here
if(TJAPlayer3.Tx.Gauge_Soul_Fire != null )
{
//仮置き
int soulfire_width = TJAPlayer3.Tx.Gauge_Soul_Fire.szテクスチャサイズ.Width / 8;
int soulfire_height = TJAPlayer3.Tx.Gauge_Soul_Fire.szテクスチャサイズ.Height;
for ( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
{
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break;
int x;
int y;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_X_AI;
y = TJAPlayer3.Skin.Gauge_Soul_Fire_Y_AI;
}
else
{
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_Fire_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_Fire_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
}
else
{
x = TJAPlayer3.Skin.Gauge_Soul_Fire_X[i];
y = TJAPlayer3.Skin.Gauge_Soul_Fire_Y[i];
}
}
if ( this.db現在のゲージ値[ i ] >= 100.0)
{
this.ct炎.t進行Loop();
TJAPlayer3.Tx.Gauge_Soul_Fire.vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Soul_Fire.vc拡大縮小倍率.Y = scale;
TJAPlayer3.Tx.Gauge_Soul_Fire.t2D描画( TJAPlayer3.app.Device, x, y, new Rectangle(soulfire_width * ( this.ct炎.n現在の値 ), 0, soulfire_width, soulfire_height) );
}
}
}
if(TJAPlayer3.Tx.Gauge_Soul != null )
{
//仮置き
int soul_height = TJAPlayer3.Tx.Gauge_Soul.szテクスチャサイズ.Height / 2;
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
{
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break;
int x;
int y;
if (TJAPlayer3.ConfigIni.bAIBattleMode)
{
x = TJAPlayer3.Skin.Gauge_Soul_X_AI;
y = TJAPlayer3.Skin.Gauge_Soul_Y_AI;
}
else
{
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
x = TJAPlayer3.Skin.Gauge_Soul_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
x = TJAPlayer3.Skin.Gauge_Soul_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
y = TJAPlayer3.Skin.Gauge_Soul_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
}
else
{
x = TJAPlayer3.Skin.Gauge_Soul_X[i];
y = TJAPlayer3.Skin.Gauge_Soul_Y[i];
}
}
TJAPlayer3.Tx.Gauge_Soul.vc拡大縮小倍率.X = scale;
TJAPlayer3.Tx.Gauge_Soul.vc拡大縮小倍率.Y = scale;
if ( this.db現在のゲージ値[ i ] >= 80.0)
{
TJAPlayer3.Tx.Gauge_Soul.t2D描画( TJAPlayer3.app.Device, x, y, new Rectangle( 0, 0, TJAPlayer3.Tx.Gauge_Soul.szテクスチャサイズ.Width, soul_height) );
}
else
{
TJAPlayer3.Tx.Gauge_Soul.t2D描画( TJAPlayer3.app.Device, x, y, new Rectangle( 0, soul_height, TJAPlayer3.Tx.Gauge_Soul.szテクスチャサイズ.Width, soul_height) );
}
}
}
//仮置き
int[] nSoulExplosion = new int[] { 73, 468, 0, 0 };

View File

@ -112,7 +112,7 @@ namespace TJAPlayer3
// 今の段階では魂ゲージ80%以上でチェック。
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[i] >= 80)
if (HGaugeMethods.UNSAFE_FastNormaCheck(i))
{
if (TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMine == 0)
//if (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss == 0)
@ -819,6 +819,8 @@ namespace TJAPlayer3
private EndAnimeScript Dan_Gold_FullComboScript;
private EndAnimeScript Dan_Gold_PerfectScript;
bool b再生済み;
bool bリザルトボイス再生済み;
bool bSongsPlayed = false;
@ -837,6 +839,7 @@ namespace TJAPlayer3
CSound[] soundFailed = new CSound[5];
CSound[] soundFullCombo = new CSound[5];
CSound[] soundDondaFullCombo = new CSound[5];
CSound soundDanFailed;
CSound soundDanRedClear;
CSound soundDanRedFC;

View File

@ -210,12 +210,11 @@ namespace TJAPlayer3
base.On活性化();
base.eフェーズID = CStage.Eフェーズ._通常状態;//初期化すれば、リザルト変遷は止まる。
ifp[0] = false;
ifp[1] = false;
ifp[2] = false;
ifp[3] = false;
ifp[4] = false;
for (int i = 0; i < 5; i++) {
ifp[i] = false;
isDeniedPlaying[i] = false;
}
this.nStoredHit = new int[TJAPlayer3.ConfigIni.nPlayerCount];
// MODIFY_BEGIN #25398 2011.06.07 FROM
@ -603,7 +602,7 @@ namespace TJAPlayer3
int Character = this.actChara.iCurrentCharacter[i];
if (TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0)
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[i] >= 100)
if (HGaugeMethods.UNSAFE_IsRainbow(i))
{
double dbUnit = (((60.0 / (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[i]))));
this.actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Combo10_Max, true);
@ -970,6 +969,8 @@ namespace TJAPlayer3
break;
}
if (TJAPlayer3.stage演奏ドラム画面.isDeniedPlaying[nUsePlayer]) break;
if (!TJAPlayer3.ConfigIni.bTokkunMode && TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] && isPad1P)//2020.05.18 Mr-Ojii オート時の入力キャンセル
break;
else if ((TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[1] || TJAPlayer3.ConfigIni.bAIBattleMode) && isPad2P)

View File

@ -381,14 +381,17 @@ namespace TJAPlayer3
}
//if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
{
var _frame = TJAPlayer3.Tx.Result_Gauge_Frame;
if (_frame != null) {
int bar_x;
int bar_y;
int gauge_base_x;
int gauge_base_y;
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
TJAPlayer3.Tx.Result_Gauge_Base[shiftPos].vc拡大縮小倍率.X = 0.5f;
_frame.vc拡大縮小倍率.X = 0.5f;
bar_x = TJAPlayer3.Skin.Result_DifficultyBar_5P[0] + TJAPlayer3.Skin.Result_UIMove_5P_X[pos];
bar_y = TJAPlayer3.Skin.Result_DifficultyBar_5P[1] + TJAPlayer3.Skin.Result_UIMove_5P_Y[pos];
gauge_base_x = TJAPlayer3.Skin.Result_Gauge_Base_5P[0] + TJAPlayer3.Skin.Result_UIMove_5P_X[pos];
@ -396,7 +399,7 @@ namespace TJAPlayer3
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
TJAPlayer3.Tx.Result_Gauge_Base[shiftPos].vc拡大縮小倍率.X = 0.5f;
_frame.vc拡大縮小倍率.X = 0.5f;
bar_x = TJAPlayer3.Skin.Result_DifficultyBar_4P[0] + TJAPlayer3.Skin.Result_UIMove_4P_X[pos];
bar_y = TJAPlayer3.Skin.Result_DifficultyBar_4P[1] + TJAPlayer3.Skin.Result_UIMove_4P_Y[pos];
gauge_base_x = TJAPlayer3.Skin.Result_Gauge_Base_4P[0] + TJAPlayer3.Skin.Result_UIMove_4P_X[pos];
@ -404,7 +407,7 @@ namespace TJAPlayer3
}
else
{
TJAPlayer3.Tx.Result_Gauge_Base[shiftPos].vc拡大縮小倍率.X = 1.0f;
_frame.vc拡大縮小倍率.X = 1.0f;
bar_x = TJAPlayer3.Skin.Result_DifficultyBar_X[pos];
bar_y = TJAPlayer3.Skin.Result_DifficultyBar_Y[pos];
gauge_base_x = TJAPlayer3.Skin.Result_Gauge_Base_X[pos];
@ -414,8 +417,8 @@ namespace TJAPlayer3
TJAPlayer3.Tx.Result_Diff_Bar.t2D描画(TJAPlayer3.app.Device, bar_x, bar_y,
new RectangleF(0, TJAPlayer3.stage選曲.n確定された曲の難易度[i] * TJAPlayer3.Skin.Result_DifficultyBar_Size[1], TJAPlayer3.Skin.Result_DifficultyBar_Size[0], TJAPlayer3.Skin.Result_DifficultyBar_Size[1]));
TJAPlayer3.Tx.Result_Gauge_Base[shiftPos].t2D描画(TJAPlayer3.app.Device, gauge_base_x, gauge_base_y);
TJAPlayer3.Tx.Result_Gauge_Base[shiftPos].vc拡大縮小倍率.X = 1.0f;
_frame.t2D描画(TJAPlayer3.app.Device, gauge_base_x, gauge_base_y);
_frame.vc拡大縮小倍率.X = 1.0f;
}
if (ct全体進行.n現在の値 >= 2000)
@ -436,6 +439,9 @@ namespace TJAPlayer3
ctゲージアニメ[i].n現在の値 = (int)ctゲージアニメ[i].n終了値;
}
/*
{
int gauge_x;
int gauge_y;
@ -462,9 +468,10 @@ namespace TJAPlayer3
new RectangleF(TJAPlayer3.Skin.Result_Gauge_Rect[0], TJAPlayer3.Skin.Result_Gauge_Rect[1], (TJAPlayer3.Skin.Result_Gauge_Rect[2] / 50.0f) * ctゲージアニメ[i].n現在の値, TJAPlayer3.Skin.Result_Gauge_Rect[3]));
TJAPlayer3.Tx.Result_Gauge[shiftPos].vc拡大縮小倍率.X = 1.0f;
}
*/
// Modify to array for each players using i
/*
int soultext_width = TJAPlayer3.Tx.Result_Soul_Text.szテクスチャサイズ.Width / 3;
int soultext_height = TJAPlayer3.Tx.Result_Soul_Text.szテクスチャサイズ.Height;
@ -496,6 +503,7 @@ namespace TJAPlayer3
soulFire_y = TJAPlayer3.Skin.Result_Soul_Fire_Y[pos];
TJAPlayer3.Tx.Result_Rainbow[ct虹ゲージアニメ.n現在の値].vc拡大縮小倍率.X = 1.0f;
}
*/
if (ctゲージアニメ[i].b終了値に達した)
{
@ -523,6 +531,7 @@ namespace TJAPlayer3
ct虹ゲージアニメ.t進行Loop();
ctSoul.t進行Loop();
/*
int rainbow_x;
int rainbow_y;
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
@ -556,8 +565,13 @@ namespace TJAPlayer3
if (ctSoul.n現在の値 % 2 == 0)
TJAPlayer3.Tx.Result_Soul_Text.t2D中心基準描画(TJAPlayer3.app.Device, soulText_x, soulText_y, new Rectangle(soultext_width * 2, 0, soultext_width, soultext_height));
}
*/
}
}
HGaugeMethods.UNSAFE_DrawResultGaugeFast(i, shiftPos, pos, ctゲージアニメ[i].n現在の値, ct虹ゲージアニメ.n現在の値, ctSoul.n現在の値);
/*
if (ctゲージアニメ[i].n現在の値 != 50)
{
{
@ -596,6 +610,7 @@ namespace TJAPlayer3
new Rectangle(soultext_width * (ctゲージアニメ[i].n現在の値 <= 30 ? 0 : 1), 0, soultext_width, soultext_height));
}
}
*/
#endregion
}

View File

@ -177,12 +177,16 @@ namespace TJAPlayer3
{
var ccf = TJAPlayer3.stage演奏ドラム画面.CChartScore[p];
this.nクリア[p] = (ccf.nMiss == 0 && ccf.nMine == 0 && TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[p] == 100)
? ccf.nGood == 0
? 3 : 2
: TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[p] >= 80
? 1
: 0;
this.nクリア[p] = 0;
if (HGaugeMethods.UNSAFE_FastNormaCheck(p))
{
this.nクリア[p] = 1;
if (ccf.nMiss == 0 && ccf.nMine == 0)
{
this.nクリア[p] = 2;
if (ccf.nGood == 0) this.nクリア[p] = 3;
}
}
if ((int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, p) < 500000)
{
@ -591,7 +595,7 @@ namespace TJAPlayer3
int clearModifier = modifiers[0];
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[i] >= 80)
if (HGaugeMethods.UNSAFE_FastNormaCheck(i))
{
clearModifier = modifiers[1] * diffModifier;
if (TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMiss == 0)
@ -652,7 +656,7 @@ namespace TJAPlayer3
&& !(TJAPlayer3.ConfigIni.bAIBattleMode && i == 1))
{
int _cs = -1;
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[i] >= 80)
if (HGaugeMethods.UNSAFE_FastNormaCheck(i))
{
_cs = 0;
if (TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMiss == 0)

View File

@ -150,6 +150,7 @@
<Compile Include="Databases\Databases.cs" />
<Compile Include="Databases\DBCharacter.cs" />
<Compile Include="Helpers\HEasingMethods.cs" />
<Compile Include="Helpers\HGaugeMethods.cs" />
<Compile Include="Helpers\HPrivateFastFont.cs" />
<Compile Include="Helpers\HRarity.cs" />
<Compile Include="I18N\CLang_es.cs" />

View File

@ -0,0 +1,5 @@
{
"gauge":"Hard",
"bombFactor":15,
"fuseRollFactor":5
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 995 B

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1000 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 993 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 995 B

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1000 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 920 B

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Some files were not shown because too many files have changed in this diff Show More