@ -61,6 +61,12 @@ Game_Chara_Balloon_4P=0,-264
|
||||
;3人プレイ以上のふうせん連打時のキャラ画像Y座標。
|
||||
Game_Chara_Balloon_5P=0,-252
|
||||
|
||||
;ふうせん連打時のキャラ画像X座標。(X,Y)
|
||||
Game_Chara_Kusudama_X=435,1035,135,1335,735
|
||||
|
||||
;ふうせん連打時のキャラ画像Y座標。(X,Y)
|
||||
Game_Chara_Kusudama_Y=630,630,630,630,630
|
||||
|
||||
;ふうせん連打アクション時に使用するタイマーの更新間隔。(ms)
|
||||
Game_Chara_Balloon_Timer=16
|
||||
|
||||
|
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Breaking/0.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Breaking/1.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Breaking/2.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Breaking/3.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Breaking/4.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Broke/0.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Idle/0.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Idle/1.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Idle/2.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Idle/3.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Idle/4.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Idle/5.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Miss/0.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Miss/1.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Miss/2.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Miss/3.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Miss/4.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Miss/5.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
OpenTaiko/Global/Characters/NewTemplate/Kusudama_Miss/6.png
Normal file
After Width: | Height: | Size: 17 KiB |
@ -61,6 +61,12 @@ Game_Chara_Balloon_4P=0,-176
|
||||
;3人プレイ以上のふうせん連打時のキャラ画像Y座標。
|
||||
Game_Chara_Balloon_5P=0,-168
|
||||
|
||||
;ふうせん連打時のキャラ画像X座標。(X,Y)
|
||||
Game_Chara_Kusudama_X=290,690,90,890,490
|
||||
|
||||
;ふうせん連打時のキャラ画像Y座標。(X,Y)
|
||||
Game_Chara_Kusudama_Y=420,420,420,420,420
|
||||
|
||||
;ふうせん連打アクション時に使用するタイマーの更新間隔。(ms)
|
||||
Game_Chara_Balloon_Timer=16
|
||||
|
||||
|
@ -308,6 +308,11 @@ Game_Balloon_Roll_Number_Y=183,950
|
||||
Game_Balloon_Number_Size=95,113
|
||||
|
||||
Game_Balloon_Number_Interval=83,0
|
||||
|
||||
|
||||
Game_Kusudama_Number_X=960
|
||||
|
||||
Game_Kusudama_Number_Y=530
|
||||
|
||||
|
||||
;ダンサーの座標(登場順)
|
||||
@ -424,6 +429,10 @@ Game_Lane_Sub_X=499,499
|
||||
Game_Lane_Sub_Y=489,753
|
||||
|
||||
|
||||
Game_PuchiChara_KusudamaX=515,1325,215,1625,815
|
||||
|
||||
Game_PuchiChara_KusudamaY=930,930,930,930,930
|
||||
|
||||
|
||||
Game_DanC_Size=1509,138
|
||||
|
||||
|
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 105 KiB |
@ -0,0 +1,156 @@
|
||||
|
||||
local kusuState = 0
|
||||
|
||||
local origin_x = 960
|
||||
local origin_y = 322
|
||||
|
||||
local text_x = 785
|
||||
local text_y = 67
|
||||
|
||||
local text_move = 34
|
||||
local text_move_counter = 0
|
||||
|
||||
local animeValue = 0
|
||||
local openFrame = 0
|
||||
local effectFrame = 0
|
||||
local effectOpacity = 255
|
||||
local brokeOpacity = 255
|
||||
local bgInOpacity = 0
|
||||
local kusuInY = 0
|
||||
local kusuInOverY = 100
|
||||
local kusuMissY = 0
|
||||
local kusuIdleScale = 1
|
||||
|
||||
function kusuIn()
|
||||
kusuState = 1
|
||||
animeValue = 0
|
||||
text_move_counter = 0
|
||||
end
|
||||
|
||||
function kusuBroke()
|
||||
kusuState = 3
|
||||
animeValue = 0
|
||||
brokeOpacity = 255
|
||||
end
|
||||
|
||||
function kusuMiss()
|
||||
kusuState = 4
|
||||
animeValue = 0
|
||||
end
|
||||
|
||||
function init()
|
||||
func:AddGraph("Kusudama_Back.png")
|
||||
|
||||
func:AddGraph("Kusudama_Idle.png")
|
||||
|
||||
func:AddGraph("Kusudama_Open_0.png")
|
||||
func:AddGraph("Kusudama_Open_1.png")
|
||||
func:AddGraph("Kusudama_Open_2.png")
|
||||
func:AddGraph("Kusudama_Open_3.png")
|
||||
|
||||
func:AddGraph("Kusudama_Miss.png")
|
||||
|
||||
func:AddGraph("Text.png")
|
||||
|
||||
func:AddGraph("Effect_0.png")
|
||||
func:SetBlendMode("Add", "Effect_0.png")
|
||||
func:AddGraph("Effect_1.png")
|
||||
func:SetBlendMode("Add", "Effect_1.png")
|
||||
func:AddGraph("Effect_2.png")
|
||||
func:SetBlendMode("Add", "Effect_2.png")
|
||||
|
||||
kusuState = 0
|
||||
openFrame = 0
|
||||
end
|
||||
|
||||
function update()
|
||||
animeValue = animeValue + (1 * deltaTime)
|
||||
--animeValue = animeValue + (0.25 * deltaTime)
|
||||
|
||||
if animeValue > 10 then
|
||||
animeValue = 10
|
||||
end
|
||||
|
||||
effectFrame = effectFrame + (15 * deltaTime)
|
||||
if effectFrame >= 2 then
|
||||
effectFrame = 0
|
||||
end
|
||||
|
||||
if kusuState == 0 then
|
||||
elseif kusuState == 1 then
|
||||
|
||||
bgInOpacity = math.sin(math.min(animeValue, 1) * 2 * math.pi) * 255
|
||||
effectOpacity = math.min(animeValue * 500, 255 / 2)
|
||||
in1 = -700 + (math.sin(math.min(animeValue * 1.8, 0.5) * math.pi) * (700 + kusuInOverY))
|
||||
in2 = ((1 - (math.cos(math.max(math.min((animeValue * 5) - 1.2, 0.5), 0.0) * math.pi))) * kusuInOverY)
|
||||
kusuInY = in1 - in2
|
||||
|
||||
if animeValue > 0.35 then
|
||||
kusuState = 2
|
||||
animeValue = 0
|
||||
end
|
||||
elseif kusuState == 2 then
|
||||
effectOpacity = 255 / 2
|
||||
|
||||
kusuIdleScale = 1.0 + (math.sin(animeValue * 4 * math.pi) / 40.0)
|
||||
if animeValue > 0.25 then
|
||||
animeValue = 0
|
||||
end
|
||||
|
||||
text_move_counter = text_move_counter + (0.5 * deltaTime)
|
||||
if text_move_counter > 1 then
|
||||
text_move_counter = 0
|
||||
end
|
||||
|
||||
|
||||
elseif kusuState == 3 then
|
||||
openFrame = math.min(math.ceil((animeValue * 10) - 1), 3)
|
||||
brokeOpacity = 255 - (math.max(animeValue - 0.9, 0) * 1000)
|
||||
effectOpacity = brokeOpacity / 2
|
||||
|
||||
if brokeOpacity == 0 then
|
||||
kusuState = 0
|
||||
end
|
||||
|
||||
|
||||
elseif kusuState == 4 then
|
||||
effectOpacity = 0
|
||||
kusuMissY = (1.0 - math.cos(math.max(animeValue - 0.15, 0) * math.pi)) * 6000
|
||||
|
||||
if animeValue > 0.5 then
|
||||
kusuState = 0
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function draw()
|
||||
effectFile = "Effect_"..tostring(math.ceil(effectFrame))..".png"
|
||||
|
||||
if kusuState == 0 then
|
||||
func:SetOpacity(0, effectFile)
|
||||
elseif kusuState == 1 then
|
||||
func:SetOpacity(bgInOpacity, "Kusudama_Back.png")
|
||||
func:DrawGraph(0, 0, "Kusudama_Back.png")
|
||||
func:DrawGraphCenter(origin_x, origin_y + kusuInY, "Kusudama_Idle.png")
|
||||
elseif kusuState == 2 then
|
||||
func:SetScale(kusuIdleScale, kusuIdleScale, "Kusudama_Idle.png")
|
||||
func:DrawGraphCenter(origin_x, origin_y, "Kusudama_Idle.png")
|
||||
|
||||
if text_move_counter < 0.5 then
|
||||
func:DrawGraph(text_x, text_y - (text_move * text_move_counter * 2), "Text.png")
|
||||
else
|
||||
func:DrawGraph(text_x, text_y - (text_move * (1 - text_move_counter) * 2), "Text.png")
|
||||
end
|
||||
elseif kusuState == 3 then
|
||||
func:SetOpacity(brokeOpacity, "Kusudama_Open_3.png")
|
||||
func:DrawGraphCenter(origin_x, origin_y, "Kusudama_Open_"..tostring(openFrame)..".png")
|
||||
elseif kusuState == 4 then
|
||||
func:DrawGraphCenter(origin_x, origin_y + kusuMissY, "Kusudama_Miss.png")
|
||||
end
|
||||
|
||||
if not(kusuState == 0) then
|
||||
func:SetOpacity(effectOpacity, effectFile)
|
||||
func:DrawGraph(0, 0, "Effect_"..tostring(math.ceil(effectFrame))..".png")
|
||||
end
|
||||
end
|
After Width: | Height: | Size: 11 KiB |
@ -302,6 +302,11 @@ Game_Balloon_Roll_Number_Y=122,633
|
||||
Game_Balloon_Number_Size=63,75
|
||||
|
||||
Game_Balloon_Number_Interval=55,0
|
||||
|
||||
|
||||
Game_Kusudama_Number_X=640
|
||||
|
||||
Game_Kusudama_Number_Y=353
|
||||
|
||||
|
||||
;ダンサーの座標(登場順)
|
||||
@ -418,6 +423,10 @@ Game_Lane_Sub_X=333,333
|
||||
Game_Lane_Sub_Y=326,502
|
||||
|
||||
|
||||
Game_PuchiChara_KusudamaX=290,883,90,1083,543
|
||||
|
||||
Game_PuchiChara_KusudamaY=420,420,420,420,420
|
||||
|
||||
|
||||
Game_DanC_Size=1006,92
|
||||
|
||||
|
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 167 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 88 KiB |
@ -0,0 +1,156 @@
|
||||
|
||||
local kusuState = 0
|
||||
|
||||
local origin_x = 640
|
||||
local origin_y = 214
|
||||
|
||||
local text_x = 523
|
||||
local text_y = 45
|
||||
|
||||
local text_move = 23
|
||||
local text_move_counter = 0
|
||||
|
||||
local animeValue = 0
|
||||
local openFrame = 0
|
||||
local effectFrame = 0
|
||||
local effectOpacity = 255
|
||||
local brokeOpacity = 255
|
||||
local bgInOpacity = 0
|
||||
local kusuInY = 0
|
||||
local kusuInOverY = 67
|
||||
local kusuMissY = 0
|
||||
local kusuIdleScale = 1
|
||||
|
||||
function kusuIn()
|
||||
kusuState = 1
|
||||
animeValue = 0
|
||||
text_move_counter = 0
|
||||
end
|
||||
|
||||
function kusuBroke()
|
||||
kusuState = 3
|
||||
animeValue = 0
|
||||
brokeOpacity = 255
|
||||
end
|
||||
|
||||
function kusuMiss()
|
||||
kusuState = 4
|
||||
animeValue = 0
|
||||
end
|
||||
|
||||
function init()
|
||||
func:AddGraph("Kusudama_Back.png")
|
||||
|
||||
func:AddGraph("Kusudama_Idle.png")
|
||||
|
||||
func:AddGraph("Kusudama_Open_0.png")
|
||||
func:AddGraph("Kusudama_Open_1.png")
|
||||
func:AddGraph("Kusudama_Open_2.png")
|
||||
func:AddGraph("Kusudama_Open_3.png")
|
||||
|
||||
func:AddGraph("Kusudama_Miss.png")
|
||||
|
||||
func:AddGraph("Text.png")
|
||||
|
||||
func:AddGraph("Effect_0.png")
|
||||
func:SetBlendMode("Add", "Effect_0.png")
|
||||
func:AddGraph("Effect_1.png")
|
||||
func:SetBlendMode("Add", "Effect_1.png")
|
||||
func:AddGraph("Effect_2.png")
|
||||
func:SetBlendMode("Add", "Effect_2.png")
|
||||
|
||||
kusuState = 0
|
||||
openFrame = 0
|
||||
end
|
||||
|
||||
function update()
|
||||
animeValue = animeValue + (1 * deltaTime)
|
||||
--animeValue = animeValue + (0.25 * deltaTime)
|
||||
|
||||
if animeValue > 10 then
|
||||
animeValue = 10
|
||||
end
|
||||
|
||||
effectFrame = effectFrame + (15 * deltaTime)
|
||||
if effectFrame >= 2 then
|
||||
effectFrame = 0
|
||||
end
|
||||
|
||||
if kusuState == 0 then
|
||||
elseif kusuState == 1 then
|
||||
|
||||
bgInOpacity = math.sin(math.min(animeValue, 1) * 2 * math.pi) * 255
|
||||
effectOpacity = math.min(animeValue * 500, 255 / 2)
|
||||
in1 = -467 + (math.sin(math.min(animeValue * 1.8, 0.5) * math.pi) * (467 + kusuInOverY))
|
||||
in2 = ((1 - (math.cos(math.max(math.min((animeValue * 5) - 1.2, 0.5), 0.0) * math.pi))) * kusuInOverY)
|
||||
kusuInY = in1 - in2
|
||||
|
||||
if animeValue > 0.35 then
|
||||
kusuState = 2
|
||||
animeValue = 0
|
||||
end
|
||||
elseif kusuState == 2 then
|
||||
effectOpacity = 255 / 2
|
||||
|
||||
kusuIdleScale = 1.0 + (math.sin(animeValue * 4 * math.pi) / 40.0)
|
||||
if animeValue > 0.25 then
|
||||
animeValue = 0
|
||||
end
|
||||
|
||||
text_move_counter = text_move_counter + (0.5 * deltaTime)
|
||||
if text_move_counter > 1 then
|
||||
text_move_counter = 0
|
||||
end
|
||||
|
||||
|
||||
elseif kusuState == 3 then
|
||||
openFrame = math.min(math.ceil((animeValue * 10) - 1), 3)
|
||||
brokeOpacity = 255 - (math.max(animeValue - 0.9, 0) * 1000)
|
||||
effectOpacity = brokeOpacity / 2
|
||||
|
||||
if brokeOpacity == 0 then
|
||||
kusuState = 0
|
||||
end
|
||||
|
||||
|
||||
elseif kusuState == 4 then
|
||||
effectOpacity = 0
|
||||
kusuMissY = (1.0 - math.cos(math.max(animeValue - 0.15, 0) * math.pi)) * 4000
|
||||
|
||||
if animeValue > 0.5 then
|
||||
kusuState = 0
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function draw()
|
||||
effectFile = "Effect_"..tostring(math.ceil(effectFrame))..".png"
|
||||
|
||||
if kusuState == 0 then
|
||||
func:SetOpacity(0, effectFile)
|
||||
elseif kusuState == 1 then
|
||||
func:SetOpacity(bgInOpacity, "Kusudama_Back.png")
|
||||
func:DrawGraph(0, 0, "Kusudama_Back.png")
|
||||
func:DrawGraphCenter(origin_x, origin_y + kusuInY, "Kusudama_Idle.png")
|
||||
elseif kusuState == 2 then
|
||||
func:SetScale(kusuIdleScale, kusuIdleScale, "Kusudama_Idle.png")
|
||||
func:DrawGraphCenter(origin_x, origin_y, "Kusudama_Idle.png")
|
||||
|
||||
if text_move_counter < 0.5 then
|
||||
func:DrawGraph(text_x, text_y - (text_move * text_move_counter * 2), "Text.png")
|
||||
else
|
||||
func:DrawGraph(text_x, text_y - (text_move * (1 - text_move_counter) * 2), "Text.png")
|
||||
end
|
||||
elseif kusuState == 3 then
|
||||
func:SetOpacity(brokeOpacity, "Kusudama_Open_3.png")
|
||||
func:DrawGraphCenter(origin_x, origin_y, "Kusudama_Open_"..tostring(openFrame)..".png")
|
||||
elseif kusuState == 4 then
|
||||
func:DrawGraphCenter(origin_x, origin_y + kusuMissY, "Kusudama_Miss.png")
|
||||
end
|
||||
|
||||
if not(kusuState == 0) then
|
||||
func:SetOpacity(effectOpacity, effectFile)
|
||||
func:DrawGraph(0, 0, "Effect_"..tostring(math.ceil(effectFrame))..".png")
|
||||
end
|
||||
end
|
After Width: | Height: | Size: 10 KiB |
@ -435,6 +435,8 @@ namespace TJAPlayer3
|
||||
//public Cシステムサウンド soundRed = null;
|
||||
//public Cシステムサウンド soundBlue = null;
|
||||
public Cシステムサウンド soundBalloon = null;
|
||||
public Cシステムサウンド soundKusudama = null;
|
||||
public Cシステムサウンド soundKusudamaMiss = null;
|
||||
|
||||
|
||||
public readonly int nシステムサウンド数 = (int)Eシステムサウンド.Count;
|
||||
@ -759,6 +761,8 @@ namespace TJAPlayer3
|
||||
//this.soundRed = new Cシステムサウンド( @$"Sounds{System.IO.Path.DirectorySeparatorChar}dong.ogg", false, false, true, ESoundType.SoundEffect );
|
||||
//this.soundBlue = new Cシステムサウンド( @$"Sounds{System.IO.Path.DirectorySeparatorChar}ka.ogg", false, false, true, ESoundType.SoundEffect );
|
||||
this.soundBalloon = new Cシステムサウンド(@$"Sounds{System.IO.Path.DirectorySeparatorChar}balloon.ogg", false, false, true, ESoundGroup.SoundEffect);
|
||||
this.soundKusudama = new Cシステムサウンド(@$"Sounds{System.IO.Path.DirectorySeparatorChar}Kusudama.ogg", false, false, true, ESoundGroup.SoundEffect);
|
||||
this.soundKusudamaMiss = new Cシステムサウンド(@$"Sounds{System.IO.Path.DirectorySeparatorChar}KusudamaMiss.ogg", false, false, true, ESoundGroup.SoundEffect);
|
||||
this.sound曲決定音 = new Cシステムサウンド(@$"Sounds{System.IO.Path.DirectorySeparatorChar}SongDecide.ogg", false, false, true, ESoundGroup.Voice);
|
||||
this.soundSongDecide_AI = new Cシステムサウンド(@$"Sounds{System.IO.Path.DirectorySeparatorChar}SongDecide_AI.ogg", false, false, true, ESoundGroup.Voice);
|
||||
|
||||
@ -5771,6 +5775,14 @@ namespace TJAPlayer3
|
||||
{
|
||||
Game_PuchiChara_BalloonY = strParam.Split(',').Select(int.Parse).ToArray();
|
||||
}
|
||||
else if (strCommand == nameof(Game_PuchiChara_KusudamaX))
|
||||
{
|
||||
Game_PuchiChara_KusudamaX = strParam.Split(',').Select(int.Parse).ToArray();
|
||||
}
|
||||
else if (strCommand == nameof(Game_PuchiChara_KusudamaY))
|
||||
{
|
||||
Game_PuchiChara_KusudamaY = strParam.Split(',').Select(int.Parse).ToArray();
|
||||
}
|
||||
else if (strCommand == nameof(Game_PuchiChara_Scale))
|
||||
{
|
||||
Game_PuchiChara_Scale = strParam.Split(',').Select(float.Parse).ToArray();
|
||||
@ -8454,6 +8466,10 @@ namespace TJAPlayer3
|
||||
Characters_Balloon_Breaking_Ptn,
|
||||
Characters_Balloon_Broke_Ptn,
|
||||
Characters_Balloon_Miss_Ptn,
|
||||
Characters_Kusudama_Idle_Ptn,
|
||||
Characters_Kusudama_Breaking_Ptn,
|
||||
Characters_Kusudama_Broke_Ptn,
|
||||
Characters_Kusudama_Miss_Ptn,
|
||||
Characters_Title_Entry_Ptn,
|
||||
Characters_Title_Normal_Ptn,
|
||||
Characters_Menu_Loop_Ptn,
|
||||
@ -8488,6 +8504,8 @@ namespace TJAPlayer3
|
||||
public int[][] Characters_Balloon_Y;
|
||||
public int[][] Characters_Balloon_4P;
|
||||
public int[][] Characters_Balloon_5P;
|
||||
public int[][] Characters_Kusudama_X;
|
||||
public int[][] Characters_Kusudama_Y;
|
||||
public int[][] Characters_Motion_Normal,
|
||||
Characters_Motion_10Combo,
|
||||
Characters_Motion_10Combo_Clear,
|
||||
@ -9431,8 +9449,10 @@ namespace TJAPlayer3
|
||||
public int[] Game_PuchiChara_Y = new int[] { 140, 675 };
|
||||
public int[] Game_PuchiChara_4P = new int[] { 230, 162 };
|
||||
public int[] Game_PuchiChara_5P = new int[] { 230, 150 };
|
||||
public int[] Game_PuchiChara_BalloonX = new int[] { 300, 300 };
|
||||
public int[] Game_PuchiChara_BalloonX = new int[] { 300, 300 };
|
||||
public int[] Game_PuchiChara_BalloonY = new int[] { 240, 500 };
|
||||
public int[] Game_PuchiChara_KusudamaX = new int[] { 290, 690, 90, 890, 490 };
|
||||
public int[] Game_PuchiChara_KusudamaY = new int[] { 420, 420, 420, 420, 420 };
|
||||
public float[] Game_PuchiChara_Scale = new float[] { 0.6f, 0.8f }; // 通常時、 ふうせん連打時
|
||||
public int[] Game_PuchiChara = new int[] { 256, 256, 2 }; // Width, Height, Ptn
|
||||
public int Game_PuchiChara_Sine = 20;
|
||||
|
@ -682,11 +682,7 @@ namespace TJAPlayer3
|
||||
Balloon_Breaking[i] = TxC(GAME + BALLOON + @$"Breaking_" + i.ToString() + ".png");
|
||||
}
|
||||
|
||||
Kusudama = TxC(GAME + BALLOON + KUSUDAMA + @$"Kusudama.png");
|
||||
Kusudama_Clear = TxC(GAME + BALLOON + KUSUDAMA + @$"Kusudama_Clear.png");
|
||||
Kusudama_Fail = TxC(GAME + BALLOON + KUSUDAMA + @$"Kusudama_Fail.png");
|
||||
Kusudama_Number = TxC(GAME + BALLOON + KUSUDAMA + @$"Kusudama_Number.png");
|
||||
Kusudama_Back = TxC(GAME + BALLOON + KUSUDAMA + @$"Kusudama_Back.png");
|
||||
|
||||
Fuse_Number = TxC(GAME + BALLOON + FUSE + @$"Number_Fuse.png");
|
||||
Fuse_Balloon = TxC(GAME + BALLOON + FUSE + @$"Fuse.png");
|
||||
@ -1218,6 +1214,10 @@ namespace TJAPlayer3
|
||||
Characters_Balloon_Breaking = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Balloon_Broke = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Balloon_Miss = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Kusudama_Idle = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Kusudama_Breaking = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Kusudama_Broke = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Kusudama_Miss = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Title_Entry = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Title_Normal = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
Characters_Result_Clear = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
@ -1260,6 +1260,10 @@ namespace TJAPlayer3
|
||||
TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Title_Entry_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Title_Normal_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
TJAPlayer3.Skin.Characters_Result_Clear_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
|
||||
@ -1295,6 +1299,8 @@ namespace TJAPlayer3
|
||||
TJAPlayer3.Skin.Characters_Balloon_Y = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
TJAPlayer3.Skin.Characters_Balloon_4P = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
TJAPlayer3.Skin.Characters_Balloon_5P = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
TJAPlayer3.Skin.Characters_Kusudama_X = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Y = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
TJAPlayer3.Skin.Characters_Motion_Normal = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
TJAPlayer3.Skin.Characters_Motion_10Combo = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
TJAPlayer3.Skin.Characters_Motion_10Combo_Clear = new int[TJAPlayer3.Skin.Characters_Ptn][];
|
||||
@ -1607,6 +1613,18 @@ namespace TJAPlayer3
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[i]; j++)
|
||||
Characters_Balloon_Miss[i][j]?.Dispose();
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[i]; j++)
|
||||
Characters_Kusudama_Idle[i][j]?.Dispose();
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[i]; j++)
|
||||
Characters_Kusudama_Breaking[i][j]?.Dispose();
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[i]; j++)
|
||||
Characters_Kusudama_Broke[i][j]?.Dispose();
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[i]; j++)
|
||||
Characters_Kusudama_Miss[i][j]?.Dispose();
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[i]; j++)
|
||||
Characters_Tower_Standing[i][j]?.Dispose();
|
||||
|
||||
@ -1673,6 +1691,10 @@ namespace TJAPlayer3
|
||||
TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Balloon_Breaking{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Balloon_Broke{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Balloon_Miss{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Kusudama_Idle{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Kusudama_Breaking{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Kusudama_Broke{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Kusudama_Miss{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Title_Entry_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Title_Entry{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Title_Normal_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Title_Normal{Path.DirectorySeparatorChar}");
|
||||
TJAPlayer3.Skin.Characters_Menu_Loop_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @$"{Path.DirectorySeparatorChar}Menu_Loop{Path.DirectorySeparatorChar}");
|
||||
@ -1714,6 +1736,10 @@ namespace TJAPlayer3
|
||||
Characters_Balloon_Breaking[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i]];
|
||||
Characters_Balloon_Broke[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[i]];
|
||||
Characters_Balloon_Miss[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[i]];
|
||||
Characters_Kusudama_Idle[i] = new CTexture[TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[i]];
|
||||
Characters_Kusudama_Breaking[i] = new CTexture[TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[i]];
|
||||
Characters_Kusudama_Broke[i] = new CTexture[TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[i]];
|
||||
Characters_Kusudama_Miss[i] = new CTexture[TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[i]];
|
||||
Characters_Title_Entry[i] = new CTexture[TJAPlayer3.Skin.Characters_Title_Entry_Ptn[i]];
|
||||
Characters_Title_Normal[i] = new CTexture[TJAPlayer3.Skin.Characters_Title_Normal_Ptn[i]];
|
||||
Characters_Result_Clear[i] = new CTexture[TJAPlayer3.Skin.Characters_Result_Clear_Ptn[i]];
|
||||
@ -1830,6 +1856,18 @@ namespace TJAPlayer3
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[i]; j++)
|
||||
Characters_Balloon_Miss[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Balloon_Miss{Path.DirectorySeparatorChar}" + j.ToString() + @$".png");
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[i]; j++)
|
||||
Characters_Kusudama_Idle[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Kusudama_Idle{Path.DirectorySeparatorChar}" + j.ToString() + @$".png");
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[i]; j++)
|
||||
Characters_Kusudama_Breaking[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Kusudama_Breaking{Path.DirectorySeparatorChar}" + j.ToString() + @$".png");
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[i]; j++)
|
||||
Characters_Kusudama_Broke[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Kusudama_Broke{Path.DirectorySeparatorChar}" + j.ToString() + @$".png");
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[i]; j++)
|
||||
Characters_Kusudama_Miss[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Kusudama_Miss{Path.DirectorySeparatorChar}" + j.ToString() + @$".png");
|
||||
|
||||
for (int j = 0; j < TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[i]; j++)
|
||||
Characters_Tower_Standing[i][j] = TxCGlobal(CHARACTERS + TJAPlayer3.Skin.Characters_DirName[i] + @$"{Path.DirectorySeparatorChar}Tower_Char{Path.DirectorySeparatorChar}Standing{Path.DirectorySeparatorChar}" + j.ToString() + @$".png");
|
||||
|
||||
@ -1873,6 +1911,8 @@ namespace TJAPlayer3
|
||||
TJAPlayer3.Skin.Characters_Balloon_Y[i] = new int[] { 0, 297, 0, 0 };
|
||||
TJAPlayer3.Skin.Characters_Balloon_4P[i] = new int[] { 0, -176 };
|
||||
TJAPlayer3.Skin.Characters_Balloon_5P[i] = new int[] { 0, -168 };
|
||||
TJAPlayer3.Skin.Characters_Kusudama_X[i] = new int[] { 290, 690, 90, 890, 490 };
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Y[i] = new int[] { 420, 420, 420, 420, 420 };
|
||||
TJAPlayer3.Skin.Characters_Motion_Normal[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_Normal_Ptn[i]);
|
||||
TJAPlayer3.Skin.Characters_Motion_10Combo[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_10Combo_Ptn[i]);
|
||||
TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[i] = CreateNumberedArrayFromInt(TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[i]);
|
||||
@ -2056,6 +2096,24 @@ namespace TJAPlayer3
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "Game_Chara_Kusudama_X":
|
||||
{
|
||||
string[] strSplit = strParam.Split(',');
|
||||
for (int k = 0; k < 5; k++)
|
||||
{
|
||||
TJAPlayer3.Skin.Characters_Kusudama_X[i][k] = int.Parse(strSplit[k]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "Game_Chara_Kusudama_Y":
|
||||
{
|
||||
string[] strSplit = strParam.Split(',');
|
||||
for (int k = 0; k < 5; k++)
|
||||
{
|
||||
TJAPlayer3.Skin.Characters_Kusudama_Y[i][k] = int.Parse(strSplit[k]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "Game_Chara_Balloon_Timer":
|
||||
{
|
||||
if (int.Parse(strParam) > 0)
|
||||
@ -2750,11 +2808,7 @@ namespace TJAPlayer3
|
||||
Balloon_Number_Roll,
|
||||
Balloon_Number_Combo/*,*/
|
||||
/*Balloon_Broken*/;
|
||||
public CTexture Kusudama,
|
||||
Kusudama_Clear,
|
||||
Kusudama_Fail,
|
||||
Kusudama_Number,
|
||||
Kusudama_Back;
|
||||
public CTexture Kusudama_Number;
|
||||
|
||||
public CTexture Fuse_Number,
|
||||
Fuse_Balloon;
|
||||
@ -3025,6 +3079,10 @@ Result_Mountain = new CTexture[4]*/;
|
||||
Characters_Balloon_Breaking,
|
||||
Characters_Balloon_Broke,
|
||||
Characters_Balloon_Miss,
|
||||
Characters_Kusudama_Idle,
|
||||
Characters_Kusudama_Breaking,
|
||||
Characters_Kusudama_Broke,
|
||||
Characters_Kusudama_Miss,
|
||||
Characters_Title_Entry,
|
||||
Characters_Title_Normal,
|
||||
Characters_Menu_Loop,
|
||||
|
@ -1621,10 +1621,10 @@ namespace TJAPlayer3
|
||||
{
|
||||
if (nCurrentKusudamaCount > 0)
|
||||
{
|
||||
actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Kusudama_Breaking, true);
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
this.b連打中[i] = true;
|
||||
actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Balloon_Breaking, true);
|
||||
|
||||
|
||||
if (this.actBalloon.ct風船アニメ[i].IsUnEnded)
|
||||
@ -1717,31 +1717,18 @@ namespace TJAPlayer3
|
||||
{
|
||||
if (IsKusudama)
|
||||
{
|
||||
//パァーン
|
||||
/*
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
TJAPlayer3.Skin.soundBalloon.t再生する();
|
||||
pChip.bHit = true;
|
||||
pChip.IsHitted = true;
|
||||
chip現在処理中の連打チップ[i].bHit = true;
|
||||
pChip.b可視 = false;
|
||||
nCurrentKusudamaCount = 0;
|
||||
{
|
||||
actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Balloon_Broke, true);
|
||||
if (actChara.CharaAction_Balloon_Delay[i] != null) actChara.CharaAction_Balloon_Delay[i] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[i]] - 1, 1, TJAPlayer3.Timer);
|
||||
}
|
||||
}*/
|
||||
|
||||
TJAPlayer3.Skin.soundBalloon.t再生する();
|
||||
TJAPlayer3.Skin.soundKusudama.t再生する();
|
||||
pChip.bHit = true;
|
||||
pChip.IsHitted = true;
|
||||
chip現在処理中の連打チップ[player].bHit = true;
|
||||
pChip.b可視 = false;
|
||||
nCurrentKusudamaCount = 0;
|
||||
|
||||
actBalloon.KusuBroke();
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Balloon_Broke, true);
|
||||
if (actChara.CharaAction_Balloon_Delay[player] != null) actChara.CharaAction_Balloon_Delay[player] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[player]] - 1, 1, TJAPlayer3.Timer);
|
||||
actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Kusudama_Broke, true);
|
||||
if (actChara.CharaAction_Balloon_Delay[i] != null) actChara.CharaAction_Balloon_Delay[i] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[i]] - 1, 1, TJAPlayer3.Timer);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1906,11 +1893,18 @@ namespace TJAPlayer3
|
||||
{
|
||||
if (nCurrentKusudamaCount > 0)
|
||||
{
|
||||
/*
|
||||
if (!this.b連打中[nPlayer] && nPlayer == 0)
|
||||
{
|
||||
actBalloon.KusuIn();
|
||||
actChara.KusuIn();
|
||||
}
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
this.b連打中[i] = true;
|
||||
this.actChara.b風船連打中[i] = true;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -3743,8 +3737,23 @@ namespace TJAPlayer3
|
||||
{
|
||||
if (NotesManager.IsKusudama(pChip))
|
||||
{
|
||||
if (!this.b連打中[nPlayer] && nPlayer == 0)
|
||||
{
|
||||
actBalloon.KusuIn();
|
||||
actChara.KusuIn();
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
this.b連打中[i] = true;
|
||||
this.actChara.b風船連打中[i] = true;
|
||||
}
|
||||
}
|
||||
|
||||
nCurrentKusudamaRollCount = 0;
|
||||
nCurrentKusudamaCount += pChip.nBalloon;
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
n風船残り[i] = nCurrentKusudamaCount;
|
||||
}
|
||||
pChip.bProcessed = true;
|
||||
}
|
||||
}
|
||||
@ -3763,22 +3772,47 @@ namespace TJAPlayer3
|
||||
pChip.bHit = true;
|
||||
if( chip現在処理中の連打チップ[ nPlayer ] != null )
|
||||
{
|
||||
nCurrentKusudamaRollCount = 0;
|
||||
nCurrentKusudamaCount = 0;
|
||||
chip現在処理中の連打チップ[ nPlayer ].bHit = true;
|
||||
if (chip現在処理中の連打チップ[nPlayer].nBalloon > chip現在処理中の連打チップ[nPlayer].nRollCount
|
||||
&& chip現在処理中の連打チップ[nPlayer].nRollCount > 0)
|
||||
if (NotesManager.IsKusudama(chip現在処理中の連打チップ[nPlayer]))
|
||||
{
|
||||
if (TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[actChara.iCurrentCharacter[nPlayer]] > 0)
|
||||
if (nCurrentKusudamaCount > nCurrentKusudamaRollCount)
|
||||
{
|
||||
this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Balloon_Miss, true);
|
||||
if ( nPlayer == 0)
|
||||
{
|
||||
actBalloon.KusuMiss();
|
||||
TJAPlayer3.Skin.soundKusudamaMiss.t再生する();
|
||||
for (int p = 0; p < TJAPlayer3.ConfigIni.nPlayerCount; p++)
|
||||
{
|
||||
{
|
||||
this.actChara.ChangeAnime(p, CAct演奏Drumsキャラクター.Anime.Kusudama_Miss, true);
|
||||
|
||||
if (actChara.CharaAction_Balloon_Delay[nPlayer] != null) actChara.CharaAction_Balloon_Delay[nPlayer] = new CCounter(0,
|
||||
TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[nPlayer]] - 1,
|
||||
1,
|
||||
TJAPlayer3.Timer);
|
||||
if (actChara.CharaAction_Balloon_Delay[p] != null) actChara.CharaAction_Balloon_Delay[p] = new CCounter(0,
|
||||
TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[p]] - 1,
|
||||
1,
|
||||
TJAPlayer3.Timer);
|
||||
}
|
||||
}
|
||||
nCurrentKusudamaRollCount = 0;
|
||||
nCurrentKusudamaCount = 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (chip現在処理中の連打チップ[nPlayer].nBalloon > chip現在処理中の連打チップ[nPlayer].nRollCount
|
||||
&& chip現在処理中の連打チップ[nPlayer].nRollCount > 0)
|
||||
{
|
||||
{
|
||||
this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Balloon_Miss, true);
|
||||
|
||||
if (actChara.CharaAction_Balloon_Delay[nPlayer] != null) actChara.CharaAction_Balloon_Delay[nPlayer] = new CCounter(0,
|
||||
TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[nPlayer]] - 1,
|
||||
1,
|
||||
TJAPlayer3.Timer);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (chip現在処理中の連打チップ[nPlayer].nBalloon > chip現在処理中の連打チップ[nPlayer].nRollCount)
|
||||
{
|
||||
if (pChip.n連打音符State == 13)
|
||||
@ -5300,6 +5334,7 @@ namespace TJAPlayer3
|
||||
TJAPlayer3.stage演奏ドラム画面.Activate();
|
||||
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
|
||||
{
|
||||
if (NotesManager.IsKusudama(this.chip現在処理中の連打チップ[ i ]) && this.actChara.b風船連打中[i]) actBalloon.KusuMiss();
|
||||
this.chip現在処理中の連打チップ[ i ] = null;
|
||||
this.actChara.b風船連打中[i] = false;
|
||||
this.actChara.ReturnDefaultAnime(i, true);
|
||||
|
@ -50,6 +50,7 @@ namespace TJAPlayer3
|
||||
//CharaAction_Balloon_Broke[i] = new CCounter();
|
||||
//CharaAction_Balloon_Miss[i] = new CCounter();
|
||||
CharaAction_Balloon_Delay[i] = new CCounter();
|
||||
ctKusuIn[i] = new();
|
||||
|
||||
// Currently used character
|
||||
int p = TJAPlayer3.GetActualPlayer(i);
|
||||
@ -160,7 +161,7 @@ namespace TJAPlayer3
|
||||
{
|
||||
if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
|
||||
{
|
||||
nNowCharaCounter[i] += ((Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[i]) / 60.0f) * (float)TJAPlayer3.FPS.DeltaTime) * (nCharaFrameCount[i] + 1) / nCharaBeat[i];
|
||||
nNowCharaCounter[i] += ((Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[i]) / 60.0f) * (float)TJAPlayer3.FPS.DeltaTime) / nCharaBeat[i];
|
||||
}
|
||||
}
|
||||
void updateBalloon()
|
||||
@ -170,8 +171,11 @@ namespace TJAPlayer3
|
||||
nNowCharaCounter[i] += (float)TJAPlayer3.FPS.DeltaTime / nCharaBeat[i];
|
||||
}
|
||||
}
|
||||
nNowCharaFrame[i] = (int)nNowCharaCounter[i];
|
||||
bool endAnime = nNowCharaFrame[i] > nCharaFrameCount[i];
|
||||
|
||||
ctKusuIn[i].Tick();
|
||||
|
||||
bool endAnime = nNowCharaCounter[i] >= 1;
|
||||
nNowCharaFrame[i] = (int)(nNowCharaCounter[i] * (nCharaFrameCount[i] + 1));
|
||||
nNowCharaFrame[i] = Math.Min(nNowCharaFrame[i], nCharaFrameCount[i]);
|
||||
|
||||
if (eNowAnime[i] != Anime.None)
|
||||
@ -426,10 +430,20 @@ namespace TJAPlayer3
|
||||
case Anime.Balloon_Breaking:
|
||||
case Anime.Balloon_Broke:
|
||||
case Anime.Balloon_Miss:
|
||||
case Anime.Kusudama_Idle:
|
||||
case Anime.Kusudama_Breaking:
|
||||
case Anime.Kusudama_Broke:
|
||||
{
|
||||
updateBalloon();
|
||||
}
|
||||
break;
|
||||
case Anime.Kusudama_Miss:
|
||||
{
|
||||
nNowCharaFrame[i] = (int)(nNowCharaCounter[i] * 2 * (nCharaFrameCount[i] + 1));
|
||||
nNowCharaFrame[i] = Math.Min(nNowCharaFrame[i], nCharaFrameCount[i]);
|
||||
updateBalloon();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -539,17 +553,19 @@ namespace TJAPlayer3
|
||||
//if (TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Broke[i]?.t進行();
|
||||
CharaAction_Balloon_Delay[i]?.Tick();
|
||||
//if (TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Miss[i]?.t進行();
|
||||
CharaAction_Balloon_FadeOut[i].Tick();
|
||||
//CharaAction_Balloon_FadeOut[i].Tick();
|
||||
|
||||
{
|
||||
bool endAnime = nNowCharaFrame[i] >= nCharaFrameCount[i];
|
||||
var nowOpacity = CharaAction_Balloon_FadeOut[i].Counter.IsTicked ? (int)CharaAction_Balloon_FadeOut[i].GetAnimation() : 255;
|
||||
bool endAnime = nNowCharaCounter[i] >= 1;
|
||||
var nowOpacity = 255;
|
||||
|
||||
float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[this.iCurrentCharacter[i]][0];
|
||||
float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[this.iCurrentCharacter[i]][1];
|
||||
|
||||
float chara_x = 0;
|
||||
float chara_y = 0;
|
||||
float kusu_chara_x = TJAPlayer3.Skin.Characters_Kusudama_X[this.iCurrentCharacter[i]][i] * resolutionScaleX;
|
||||
float kusu_chara_y = TJAPlayer3.Skin.Characters_Kusudama_Y[this.iCurrentCharacter[i]][i] * resolutionScaleY;
|
||||
|
||||
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
|
||||
{
|
||||
@ -576,14 +592,14 @@ namespace TJAPlayer3
|
||||
float charaScale = resolutionScaleY;
|
||||
|
||||
|
||||
if (eNowAnime[i] == Anime.Balloon_Broke && TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[this.iCurrentCharacter[i]] != 0)
|
||||
if (eNowAnime[i] == Anime.Balloon_Broke)
|
||||
{
|
||||
if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][0])
|
||||
{
|
||||
CharaAction_Balloon_FadeOut[i].Start();
|
||||
}
|
||||
|
||||
if (TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
if (TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
|
||||
TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
|
||||
@ -595,7 +611,7 @@ namespace TJAPlayer3
|
||||
|
||||
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0],
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
|
||||
|
||||
if (endAnime)
|
||||
@ -603,14 +619,14 @@ namespace TJAPlayer3
|
||||
ReturnDefaultAnime(i, true);
|
||||
}
|
||||
}
|
||||
else if (eNowAnime[i] == Anime.Balloon_Miss && TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[this.iCurrentCharacter[i]] != 0)
|
||||
else if (eNowAnime[i] == Anime.Balloon_Miss)
|
||||
{
|
||||
if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][1])
|
||||
{
|
||||
CharaAction_Balloon_FadeOut[i].Start();
|
||||
}
|
||||
|
||||
if (TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
if (TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
|
||||
TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
|
||||
@ -622,7 +638,7 @@ namespace TJAPlayer3
|
||||
|
||||
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0],
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
|
||||
|
||||
if (endAnime)
|
||||
@ -630,9 +646,9 @@ namespace TJAPlayer3
|
||||
ReturnDefaultAnime(i, true);
|
||||
}
|
||||
}
|
||||
else if (eNowAnime[i] == Anime.Balloon_Breaking && TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[this.iCurrentCharacter[i]] != 0)
|
||||
else if (eNowAnime[i] == Anime.Balloon_Breaking)
|
||||
{
|
||||
if (TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
if (TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
|
||||
TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
|
||||
@ -643,9 +659,160 @@ namespace TJAPlayer3
|
||||
|
||||
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0],
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
|
||||
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, 255, true, player : i);
|
||||
}
|
||||
else if (eNowAnime[i] == Anime.Kusudama_Broke)
|
||||
{
|
||||
if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][0])
|
||||
{
|
||||
CharaAction_Balloon_FadeOut[i].Start();
|
||||
}
|
||||
float kusuOutX = ((1.0f - MathF.Cos(nNowCharaCounter[i] * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
|
||||
float kusuOutY = (MathF.Sin(nNowCharaCounter[i] * MathF.PI / 2) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
|
||||
|
||||
if (TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuOutX, kusu_chara_y - kusuOutY);
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuOutX, kusu_chara_y - kusuOutY);
|
||||
}
|
||||
}
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuOutX,
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] - (int)kusuOutY, false, nowOpacity, true, player : i);
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuOutX,
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] - (int)kusuOutY, false, nowOpacity, true, player : i);
|
||||
}
|
||||
|
||||
if (endAnime)
|
||||
{
|
||||
ReturnDefaultAnime(i, true);
|
||||
}
|
||||
}
|
||||
else if (eNowAnime[i] == Anime.Kusudama_Miss)
|
||||
{
|
||||
if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][1])
|
||||
{
|
||||
CharaAction_Balloon_FadeOut[i].Start();
|
||||
}
|
||||
|
||||
float kusuOutY = (Math.Max(nNowCharaCounter[i] - 0.5f, 0) * TJAPlayer3.Skin.Resolution[1] * 2) * resolutionScaleY;
|
||||
|
||||
if (TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
|
||||
|
||||
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x, kusu_chara_y + kusuOutY);
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x, kusu_chara_y + kusuOutY);
|
||||
}
|
||||
}
|
||||
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i],
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuOutY, false, nowOpacity, true, player : i);
|
||||
|
||||
if (endAnime)
|
||||
{
|
||||
ReturnDefaultAnime(i, true);
|
||||
}
|
||||
}
|
||||
else if (eNowAnime[i] == Anime.Kusudama_Breaking)
|
||||
{
|
||||
float kusuInX = ((1.0f - MathF.Sin(ctKusuIn[i].CurrentValue / 2000.0f * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
|
||||
float kusuInY = -((MathF.Cos(ctKusuIn[i].CurrentValue / 1000.0f * MathF.PI / 2)) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
|
||||
|
||||
|
||||
if (TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuInX, kusu_chara_y + kusuInY);
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuInX, kusu_chara_y + kusuInY);
|
||||
}
|
||||
}
|
||||
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuInX,
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuInX,
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
|
||||
}
|
||||
|
||||
if (endAnime)
|
||||
{
|
||||
ChangeAnime(i, Anime.Kusudama_Idle, true);
|
||||
}
|
||||
}
|
||||
else if (eNowAnime[i] == Anime.Kusudama_Idle)
|
||||
{
|
||||
float kusuInX = ((1.0f - MathF.Sin(ctKusuIn[i].CurrentValue / 2000.0f * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
|
||||
float kusuInY = -((MathF.Cos(ctKusuIn[i].CurrentValue / 1000.0f * MathF.PI / 2)) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
|
||||
|
||||
if (TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuInX, kusu_chara_y + kusuInY);
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuInX, kusu_chara_y + kusuInY);
|
||||
}
|
||||
}
|
||||
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuInX,
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuInX,
|
||||
TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
|
||||
}
|
||||
|
||||
if (endAnime)
|
||||
{
|
||||
ChangeAnime(i, Anime.Kusudama_Idle, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -734,11 +901,27 @@ namespace TJAPlayer3
|
||||
Return,
|
||||
Balloon_Breaking,
|
||||
Balloon_Broke,
|
||||
Balloon_Miss
|
||||
Balloon_Miss,
|
||||
Kusudama_Idle,
|
||||
Kusudama_Breaking,
|
||||
Kusudama_Broke,
|
||||
Kusudama_Miss
|
||||
}
|
||||
|
||||
|
||||
public Anime[] eNowAnime = new Anime[5];
|
||||
|
||||
public CCounter[] ctKusuIn = new CCounter[5];
|
||||
|
||||
public void KusuIn()
|
||||
{
|
||||
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
ChangeAnime(i, Anime.Kusudama_Idle, true);
|
||||
ctKusuIn[i] = new CCounter(0, 1000, 0.4f, TJAPlayer3.Timer);
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeAnime(int player, Anime anime, bool resetCounter)
|
||||
{
|
||||
eNowAnime[player] = anime;
|
||||
@ -831,15 +1014,31 @@ namespace TJAPlayer3
|
||||
break;
|
||||
case Anime.Balloon_Breaking:
|
||||
nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[iCurrentCharacter[player]] - 1;
|
||||
nCharaBeat[player] = TJAPlayer3.Skin.Characters_Balloon_Timer[iCurrentCharacter[player]] / 1000.0f;
|
||||
nCharaBeat[player] = 0.4f;
|
||||
break;
|
||||
case Anime.Balloon_Broke:
|
||||
nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[iCurrentCharacter[player]] - 1;
|
||||
nCharaBeat[player] = TJAPlayer3.Skin.Characters_Balloon_Timer[iCurrentCharacter[player]] / 1000.0f;
|
||||
nCharaBeat[player] = 0.4f;
|
||||
break;
|
||||
case Anime.Balloon_Miss:
|
||||
nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[iCurrentCharacter[player]] - 1;
|
||||
nCharaBeat[player] = TJAPlayer3.Skin.Characters_Balloon_Timer[iCurrentCharacter[player]] / 1000.0f;
|
||||
nCharaBeat[player] = 0.4f;
|
||||
break;
|
||||
case Anime.Kusudama_Idle:
|
||||
nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[iCurrentCharacter[player]] - 1;
|
||||
nCharaBeat[player] = 0.4f;
|
||||
break;
|
||||
case Anime.Kusudama_Breaking:
|
||||
nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[iCurrentCharacter[player]] - 1;
|
||||
nCharaBeat[player] = 0.2f;
|
||||
break;
|
||||
case Anime.Kusudama_Broke:
|
||||
nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[iCurrentCharacter[player]] - 1;
|
||||
nCharaBeat[player] = 1f;
|
||||
break;
|
||||
case Anime.Kusudama_Miss:
|
||||
nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[iCurrentCharacter[player]] - 1;
|
||||
nCharaBeat[player] = 0.5f;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -74,13 +74,20 @@ namespace TJAPlayer3
|
||||
}
|
||||
|
||||
this.ct風船ふきだしアニメ = new CCounter(0, 1, 100, TJAPlayer3.Timer);
|
||||
|
||||
KusudamaScript = new (CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.BALLOON}{TextureLoader.KUSUDAMA}Script.lua"));
|
||||
KusudamaScript.Init();
|
||||
|
||||
base.Activate();
|
||||
}
|
||||
|
||||
public override void DeActivate()
|
||||
{
|
||||
KusudamaScript.Dispose();
|
||||
|
||||
this.ct風船終了 = null;
|
||||
this.ct風船ふきだしアニメ = null;
|
||||
|
||||
base.DeActivate();
|
||||
}
|
||||
|
||||
@ -99,6 +106,10 @@ namespace TJAPlayer3
|
||||
return base.Draw();
|
||||
}
|
||||
|
||||
public void KusuIn() => KusudamaScript.KusuIn();
|
||||
public void KusuBroke() => KusudamaScript.KusuBroke();
|
||||
public void KusuMiss() => KusudamaScript.KusuMiss();
|
||||
|
||||
public enum EBalloonType
|
||||
{
|
||||
BALLOON,
|
||||
@ -106,6 +117,15 @@ namespace TJAPlayer3
|
||||
FUSEROLL
|
||||
}
|
||||
|
||||
public void tDrawKusudama()
|
||||
{
|
||||
if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
|
||||
{
|
||||
KusudamaScript.Update();
|
||||
}
|
||||
KusudamaScript.Draw();
|
||||
}
|
||||
|
||||
public int On進行描画(int n連打ノルマ, int n連打数, int player, EBalloonType btype)
|
||||
{
|
||||
this.ct風船ふきだしアニメ.TickLoop();
|
||||
@ -194,40 +214,44 @@ namespace TJAPlayer3
|
||||
}
|
||||
else if (btype == EBalloonType.KUSUDAMA && player == 0)
|
||||
{
|
||||
/*
|
||||
if (TJAPlayer3.Tx.Kusudama_Back != null)
|
||||
TJAPlayer3.Tx.Kusudama_Back.t2D描画(0, 0);
|
||||
if (TJAPlayer3.Tx.Kusudama != null)
|
||||
TJAPlayer3.Tx.Kusudama.t2D描画(0, 0);
|
||||
*/
|
||||
this.tKusudamaNumber(n連打数);
|
||||
}
|
||||
|
||||
//CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, n連打数.ToString() );
|
||||
}
|
||||
if (n連打数 == 0 && TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player])
|
||||
if (btype == EBalloonType.KUSUDAMA)
|
||||
{
|
||||
if (btype == EBalloonType.KUSUDAMA)
|
||||
/*
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[i] = false;
|
||||
TJAPlayer3.stage演奏ドラム画面.b連打中[i] = false;
|
||||
}
|
||||
TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[i] = false;
|
||||
TJAPlayer3.stage演奏ドラム画面.b連打中[i] = false;
|
||||
}
|
||||
else
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
if (n連打数 == 0 && TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player])
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player] = false;
|
||||
TJAPlayer3.stage演奏ドラム画面.b連打中[player] = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return base.Draw();
|
||||
}
|
||||
|
||||
|
||||
private KusudamaScript KusudamaScript;
|
||||
|
||||
//private CTexture tx連打枠;
|
||||
//private CTexture tx連打数字;
|
||||
|
@ -2569,6 +2569,8 @@ namespace TJAPlayer3
|
||||
int t = (int)SoundManager.PlayTimer.NowTimeMs;
|
||||
//CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.白, t.ToString() );
|
||||
|
||||
this.actBalloon.tDrawKusudama();
|
||||
|
||||
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
var chkChip = this.chip現在処理中の連打チップ[i];
|
||||
@ -2576,8 +2578,7 @@ namespace TJAPlayer3
|
||||
{
|
||||
long nowTime = (long)(SoundManager.PlayTimer.NowTime * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
|
||||
//int n = this.chip現在処理中の連打チップ[i].nチャンネル番号;
|
||||
if (NotesManager.IsGenericBalloon(chkChip) && (this.b連打中[i] == true)
|
||||
|| NotesManager.IsKusudama(chkChip))
|
||||
if ((NotesManager.IsGenericBalloon(chkChip) || NotesManager.IsKusudama(chkChip)) && (this.b連打中[i] == true))
|
||||
{
|
||||
//if (this.chip現在処理中の連打チップ.n発声時刻ms <= (int)CSound管理.rc演奏用タイマ.n現在時刻ms && this.chip現在処理中の連打チップ.nノーツ終了時刻ms >= (int)CSound管理.rc演奏用タイマ.n現在時刻ms)
|
||||
if (chkChip.n発声時刻ms <= (int)nowTime
|
||||
|
70
OpenTaiko/src/Stages/07.Game/Taiko/KusudamaScript.cs
Normal file
@ -0,0 +1,70 @@
|
||||
using NLua;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TJAPlayer3
|
||||
{
|
||||
internal class KusudamaScript : ScriptBG
|
||||
{
|
||||
private LuaFunction LuaKusuIn;
|
||||
private LuaFunction LuaKusuBroke;
|
||||
private LuaFunction LuaKusuMiss;
|
||||
|
||||
public KusudamaScript(string filePath) : base(filePath)
|
||||
{
|
||||
if (LuaScript != null)
|
||||
{
|
||||
LuaKusuIn = LuaScript.GetFunction("kusuIn");
|
||||
LuaKusuBroke = LuaScript.GetFunction("kusuBroke");
|
||||
LuaKusuMiss = LuaScript.GetFunction("kusuMiss");
|
||||
}
|
||||
}
|
||||
|
||||
public new void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
LuaKusuIn?.Dispose();
|
||||
LuaKusuBroke?.Dispose();
|
||||
LuaKusuMiss?.Dispose();
|
||||
}
|
||||
|
||||
public void KusuIn()
|
||||
{
|
||||
if (LuaScript == null) return;
|
||||
try
|
||||
{
|
||||
LuaKusuIn.Call();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void KusuBroke()
|
||||
{
|
||||
if (LuaScript == null) return;
|
||||
try
|
||||
{
|
||||
LuaKusuBroke.Call();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void KusuMiss()
|
||||
{
|
||||
if (LuaScript == null) return;
|
||||
try
|
||||
{
|
||||
LuaKusuMiss.Call();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -76,6 +76,46 @@ namespace TJAPlayer3
|
||||
Textures[fileName].color4 = new Color4((float)r, (float)g, (float)b, 1f);
|
||||
}
|
||||
}
|
||||
public void SetBlendMode(string type, string fileName)
|
||||
{
|
||||
if (Textures[fileName] != null)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case "Normal":
|
||||
default:
|
||||
Textures[fileName].b加算合成 = false;
|
||||
Textures[fileName].b乗算合成 = false;
|
||||
Textures[fileName].b減算合成 = false;
|
||||
Textures[fileName].bスクリーン合成 = false;
|
||||
break;
|
||||
case "Add":
|
||||
Textures[fileName].b加算合成 = true;
|
||||
Textures[fileName].b乗算合成 = false;
|
||||
Textures[fileName].b減算合成 = false;
|
||||
Textures[fileName].bスクリーン合成 = false;
|
||||
break;
|
||||
case "Multi":
|
||||
Textures[fileName].b加算合成 = false;
|
||||
Textures[fileName].b乗算合成 = true;
|
||||
Textures[fileName].b減算合成 = false;
|
||||
Textures[fileName].bスクリーン合成 = false;
|
||||
break;
|
||||
case "Sub":
|
||||
Textures[fileName].b加算合成 = false;
|
||||
Textures[fileName].b乗算合成 = false;
|
||||
Textures[fileName].b減算合成 = true;
|
||||
Textures[fileName].bスクリーン合成 = false;
|
||||
break;
|
||||
case "Screen":
|
||||
Textures[fileName].b加算合成 = false;
|
||||
Textures[fileName].b乗算合成 = false;
|
||||
Textures[fileName].b減算合成 = false;
|
||||
Textures[fileName].bスクリーン合成 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
class ScriptBG : IDisposable
|
||||
{
|
||||
|