pure tedium under copium
@ -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;
|
||||
|
||||
|
790
TJAPlayer3/Helpers/HGaugeMethods.cs
Normal 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] };
|
||||
|
||||
}
|
||||
}
|
@ -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,
|
||||
@ -2471,6 +2518,10 @@ namespace TJAPlayer3
|
||||
//Result_Cloud,
|
||||
Result_Flower,
|
||||
Result_Shine,
|
||||
Result_Gauge_Frame,
|
||||
Result_Gauge_Clear,
|
||||
Result_Gauge_Clear_Base,
|
||||
Result_Gauge_Killzone,
|
||||
|
||||
Result_Dan;
|
||||
|
||||
|
@ -110,19 +110,17 @@ 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)
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -166,25 +164,10 @@ namespace TJAPlayer3
|
||||
|
||||
case 9:
|
||||
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,28 +187,10 @@ 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)
|
||||
if (nanidou == (int)Difficulty.Tower)
|
||||
multiplicationFactor = 0f;
|
||||
|
||||
#endregion
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -170,6 +170,36 @@ namespace TJAPlayer3
|
||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower || TJAPlayer3.ConfigIni.bTokkunMode)
|
||||
return 0;
|
||||
|
||||
|
||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan)
|
||||
{
|
||||
#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
|
||||
}
|
||||
else
|
||||
{
|
||||
float scale = 1.0f;
|
||||
if (TJAPlayer3.ConfigIni.bAIBattleMode)
|
||||
{
|
||||
@ -228,55 +258,12 @@ namespace TJAPlayer3
|
||||
}
|
||||
}
|
||||
}
|
||||
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;
|
||||
|
||||
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.Tx.Gauge_Base[index] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Gauge_Base[index].vc拡大縮小倍率.X = scale;
|
||||
TJAPlayer3.Tx.Gauge_Base[index].vc拡大縮小倍率.Y = scale;
|
||||
|
||||
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 )
|
||||
if (TJAPlayer3.Tx.Gauge[0] != null)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
@ -317,53 +304,17 @@ namespace TJAPlayer3
|
||||
}
|
||||
|
||||
}
|
||||
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 )
|
||||
if (TJAPlayer3.Tx.Gauge_Line[0] != null)
|
||||
{
|
||||
#region [Rainbow]
|
||||
|
||||
if ( this.db現在のゲージ値[ 0 ] >= 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 )
|
||||
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;
|
||||
@ -382,7 +333,7 @@ namespace TJAPlayer3
|
||||
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[虹ベース].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,
|
||||
@ -397,131 +348,20 @@ namespace TJAPlayer3
|
||||
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);
|
||||
TJAPlayer3.Tx.Gauge_Line[0].t2D描画(TJAPlayer3.app.Device, x, y);
|
||||
}
|
||||
|
||||
#region[ 「Clear」icon ]
|
||||
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)
|
||||
{
|
||||
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;
|
||||
|
||||
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_Line[1]?.t2D描画(TJAPlayer3.app.Device, gauge_x[i], gauge_y[i]);
|
||||
}
|
||||
#region[ 「クリア」文字 ]
|
||||
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
|
||||
{
|
||||
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]));
|
||||
}
|
||||
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]));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Soul fire here
|
||||
if(TJAPlayer3.Tx.Gauge_Soul_Fire != null )
|
||||
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++ )
|
||||
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break;
|
||||
|
||||
@ -551,22 +391,22 @@ namespace TJAPlayer3
|
||||
}
|
||||
}
|
||||
|
||||
if ( this.db現在のゲージ値[ i ] >= 100.0)
|
||||
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) );
|
||||
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 )
|
||||
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++ )
|
||||
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break;
|
||||
|
||||
@ -599,16 +439,22 @@ namespace TJAPlayer3
|
||||
TJAPlayer3.Tx.Gauge_Soul.vc拡大縮小倍率.X = scale;
|
||||
TJAPlayer3.Tx.Gauge_Soul.vc拡大縮小倍率.Y = scale;
|
||||
|
||||
if ( this.db現在のゲージ値[ i ] >= 80.0)
|
||||
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) );
|
||||
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) );
|
||||
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 };
|
||||
|
@ -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;
|
||||
|
@ -210,11 +210,10 @@ 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];
|
||||
|
||||
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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" />
|
||||
|
5
Test/Global/Characters/NewTemplate/Effects.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"gauge":"Hard",
|
||||
"bombFactor":15,
|
||||
"fuseRollFactor":5
|
||||
}
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 995 B After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1000 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 993 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 995 B After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 1000 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 920 B After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 13 KiB |