@@ -335,7 +335,7 @@ private static void CountGen4ShinUchiScoreNotes(List<CChip> listChip, out int nN
335335 nBalloonHits += Math . Min ( _chip . nBalloon , expectedHits ) ;
336336 }
337337
338- if ( NotesManager . IsRoll ( _chip ) || NotesManager . IsFuzeRoll ( _chip ) )
338+ if ( NotesManager . IsRoll ( _chip ) )
339339 msRollTime += ( _chip . end . n発声時刻ms - _chip . n発声時刻ms ) ;
340340 }
341341 }
@@ -525,29 +525,14 @@ public int GetJPOSCROLLX(int player) {
525525 double screen_ratio = OpenTaiko . Skin . Resolution [ 0 ] / 1280.0 ;
526526 return ( int ) ( JPOSCROLLX [ player ] * screen_ratio ) ;
527527 }
528- public int [ ] NoteOriginX {
529- get {
530- if ( OpenTaiko . ConfigIni . nPlayerCount == 5 ) {
531- return new int [ ] {
532- OpenTaiko . Skin . nScrollField_5P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 0 ] * 0 ) + GetJPOSCROLLX ( 0 ) ,
533- OpenTaiko . Skin . nScrollField_5P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 0 ] * 1 ) + GetJPOSCROLLX ( 1 ) ,
534- OpenTaiko . Skin . nScrollField_5P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 0 ] * 2 ) + GetJPOSCROLLX ( 2 ) ,
535- OpenTaiko . Skin . nScrollField_5P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 0 ] * 3 ) + GetJPOSCROLLX ( 3 ) ,
536- OpenTaiko . Skin . nScrollField_5P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 0 ] * 4 ) + GetJPOSCROLLX ( 4 )
537- } ;
538- } else if ( OpenTaiko . ConfigIni . nPlayerCount == 4 || OpenTaiko . ConfigIni . nPlayerCount == 3 ) {
539- return new int [ ] {
540- OpenTaiko . Skin . nScrollField_4P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 0 ] * 0 ) + GetJPOSCROLLX ( 0 ) ,
541- OpenTaiko . Skin . nScrollField_4P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 0 ] * 1 ) + GetJPOSCROLLX ( 1 ) ,
542- OpenTaiko . Skin . nScrollField_4P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 0 ] * 2 ) + GetJPOSCROLLX ( 2 ) ,
543- OpenTaiko . Skin . nScrollField_4P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 0 ] * 3 ) + GetJPOSCROLLX ( 3 )
544- } ;
545- } else {
546- return new int [ ] {
547- OpenTaiko . Skin . nScrollFieldX [ 0 ] + GetJPOSCROLLX ( 0 ) ,
548- OpenTaiko . Skin . nScrollFieldX [ 1 ] + GetJPOSCROLLX ( 1 )
549- } ;
550- }
528+
529+ public int GetNoteOriginX ( int iPlayer ) {
530+ if ( OpenTaiko . ConfigIni . nPlayerCount == 5 ) {
531+ return OpenTaiko . Skin . nScrollField_5P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 0 ] * iPlayer ) + GetJPOSCROLLX ( iPlayer ) ;
532+ } else if ( OpenTaiko . ConfigIni . nPlayerCount == 4 || OpenTaiko . ConfigIni . nPlayerCount == 3 ) {
533+ return OpenTaiko . Skin . nScrollField_4P [ 0 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 0 ] * iPlayer ) + GetJPOSCROLLX ( iPlayer ) ;
534+ } else {
535+ return OpenTaiko . Skin . nScrollFieldX [ iPlayer ] + GetJPOSCROLLX ( iPlayer ) ;
551536 }
552537 }
553538
@@ -556,29 +541,14 @@ public int GetJPOSCROLLY(int player) {
556541 double screen_ratio = OpenTaiko . Skin . Resolution [ 1 ] / 720.0 ;
557542 return ( int ) ( JPOSCROLLY [ player ] * screen_ratio ) ;
558543 }
559- public int [ ] NoteOriginY {
560- get {
561- if ( OpenTaiko . ConfigIni . nPlayerCount == 5 ) {
562- return new int [ ] {
563- OpenTaiko . Skin . nScrollField_5P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 1 ] * 0 ) + GetJPOSCROLLY ( 0 ) ,
564- OpenTaiko . Skin . nScrollField_5P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 1 ] * 1 ) + GetJPOSCROLLY ( 1 ) ,
565- OpenTaiko . Skin . nScrollField_5P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 1 ] * 2 ) + GetJPOSCROLLY ( 2 ) ,
566- OpenTaiko . Skin . nScrollField_5P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 1 ] * 3 ) + GetJPOSCROLLY ( 3 ) ,
567- OpenTaiko . Skin . nScrollField_5P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 1 ] * 4 ) + GetJPOSCROLLY ( 4 )
568- } ;
569- } else if ( OpenTaiko . ConfigIni . nPlayerCount == 4 || OpenTaiko . ConfigIni . nPlayerCount == 3 ) {
570- return new int [ ] {
571- OpenTaiko . Skin . nScrollField_4P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 1 ] * 0 ) + GetJPOSCROLLY ( 0 ) ,
572- OpenTaiko . Skin . nScrollField_4P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 1 ] * 1 ) + GetJPOSCROLLY ( 1 ) ,
573- OpenTaiko . Skin . nScrollField_4P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 1 ] * 2 ) + GetJPOSCROLLY ( 2 ) ,
574- OpenTaiko . Skin . nScrollField_4P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 1 ] * 3 ) + GetJPOSCROLLY ( 3 )
575- } ;
576- } else {
577- return new int [ ] {
578- OpenTaiko . Skin . nScrollFieldY [ 0 ] + GetJPOSCROLLY ( 0 ) ,
579- OpenTaiko . Skin . nScrollFieldY [ 1 ] + GetJPOSCROLLY ( 1 )
580- } ;
581- }
544+
545+ public int GetNoteOriginY ( int iPlayer ) {
546+ if ( OpenTaiko . ConfigIni . nPlayerCount == 5 ) {
547+ return OpenTaiko . Skin . nScrollField_5P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_5P [ 1 ] * iPlayer ) + GetJPOSCROLLY ( iPlayer ) ;
548+ } else if ( OpenTaiko . ConfigIni . nPlayerCount == 4 || OpenTaiko . ConfigIni . nPlayerCount == 3 ) {
549+ return OpenTaiko . Skin . nScrollField_4P [ 1 ] + ( OpenTaiko . Skin . Game_UIMove_4P [ 1 ] * iPlayer ) + GetJPOSCROLLY ( iPlayer ) ;
550+ } else {
551+ return OpenTaiko . Skin . nScrollFieldY [ iPlayer ] + GetJPOSCROLLY ( iPlayer ) ;
582552 }
583553 }
584554
@@ -797,10 +767,7 @@ private void AIRegisterInput(int nPlayer, float move) {
797767 }
798768
799769 private void UpdateCharaCounter ( int nPlayer ) {
800- for ( int i = 0 ; i < 5 ; i ++ ) {
801- ctChipAnime [ i ] = new CCounter ( 0 , 3 , CTja . TjaDurationToGameDuration ( 60.0 / OpenTaiko . stageGameScreen . actPlayInfo . dbBPM [ i ] * 1 / 4 ) , SoundManager . PlayTimer ) ;
802- }
803-
770+ ctChipAnime [ nPlayer ] = new CCounter ( 0 , 3 , CTja . TjaDurationToGameDuration ( 60.0 / OpenTaiko . stageGameScreen . actPlayInfo . dbBPM [ nPlayer ] * 1 / 4 ) , SoundManager . PlayTimer ) ;
804771 OpenTaiko . stageGameScreen . PuchiChara . ChangeBPM ( CTja . TjaDurationToGameDuration ( 60.0 / OpenTaiko . stageGameScreen . actPlayInfo . dbBPM [ nPlayer ] ) ) ;
805772 }
806773
@@ -904,7 +871,7 @@ private ENoteJudge e指定時刻からChipのJUDGEを返すImpl(long nTime, CChi
904871 pChip . nLag = ( int ) ( nTime - pChip . n発声時刻ms ) ;
905872 int nDeltaTime = Math . Abs ( pChip . nLag ) ;
906873 //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime - pChip.n発声時刻ms));
907- if ( NotesManager . IsRoll ( pChip ) || NotesManager . IsFuzeRoll ( pChip ) ) {
874+ if ( NotesManager . IsRoll ( pChip ) ) {
908875 if ( tja . GameTimeToTjaTime ( SoundManager . PlayTimer . NowTimeMs ) >= pChip . n発声時刻ms && tja . GameTimeToTjaTime ( SoundManager . PlayTimer . NowTimeMs ) < pChip . end . n発声時刻ms ) {
909876 return ENoteJudge . Perfect ;
910877 }
@@ -1099,7 +1066,10 @@ protected bool tBalloonProcess(CChip pChip, double dbProcess_time, int player) {
10991066 return false ;
11001067 }
11011068
1069+ this . bCurrentlyDrumRoll [ player ] = true ;
1070+ this . actChara . b風船連打中 [ player ] = true ;
11021071 if ( IsKusudama ) {
1072+ this . actChara . IsInKusudama = true ;
11031073 rollCount = pChip . nRollCount = ++ nCurrentKusudamaRollCount ;
11041074 balloon = nCurrentKusudamaCount ;
11051075 if ( nCurrentKusudamaCount > 0 ) {
@@ -1114,8 +1084,6 @@ protected bool tBalloonProcess(CChip pChip, double dbProcess_time, int player) {
11141084 }
11151085 }
11161086 } else {
1117- this . bCurrentlyDrumRoll [ player ] = true ;
1118- this . actChara . b風船連打中 [ player ] = true ;
11191087 actChara . ChangeAnime ( player , CActImplCharacter . Anime . Balloon_Breaking , true ) ;
11201088
11211089
@@ -1392,8 +1360,6 @@ protected unsafe ENoteJudge tチップのヒット処理(long nHitTime, CChip pC
13921360 bool cleared = HGaugeMethods . UNSAFE_FastNormaCheck ( nPlayer ) ;
13931361
13941362 if ( eJudgeResult != ENoteJudge . Poor && eJudgeResult != ENoteJudge . Miss ) {
1395- double dbUnit = ( ( ( 60.0 / ( OpenTaiko . stageGameScreen . actPlayInfo . dbBPM [ nPlayer ] ) ) ) ) ;
1396-
13971363 // ランナー(たたけたやつ)
13981364 this . actRunner . Start ( nPlayer , false , pChip ) ;
13991365
@@ -1471,10 +1437,6 @@ protected unsafe ENoteJudge tチップのヒット処理(long nHitTime, CChip pC
14711437
14721438 void returnChara ( ) {
14731439 int Character = this . actChara . iCurrentCharacter [ nPlayer ] ;
1474-
1475- double dbUnit = ( ( ( 60.0 / ( OpenTaiko . stageGameScreen . actPlayInfo . dbBPM [ nPlayer ] ) ) ) ) ;
1476- dbUnit = ( ( ( 60.0 / pChip . dbBPM ) ) ) ;
1477-
14781440 if ( OpenTaiko . Skin . Characters_Return_Ptn [ Character ] != 0 && ! bIsGOGOTIME [ nPlayer ] && actChara . CharaAction_Balloon_Delay [ nPlayer ] . IsEnded ) {
14791441 {
14801442 // 魂ゲージMAXではない
@@ -1602,17 +1564,14 @@ void returnChara() {
16021564
16031565 #region[ Combo voice ]
16041566
1605- if ( ! NotesManager . IsGenericRoll ( pChip ) ) {
1567+ if ( NotesManager . IsMissableNote ( pChip ) ) {
16061568 if ( ( this . actCombo . nCurrentCombo [ nPlayer ] % 100 == 0 || this . actCombo . nCurrentCombo [ nPlayer ] == 50 ) && this . actCombo . nCurrentCombo [ nPlayer ] > 0 ) {
16071569 this . actComboBalloon . Start ( this . actCombo . nCurrentCombo [ nPlayer ] , nPlayer ) ;
16081570 }
16091571
16101572 // Combo voice here
16111573 this . actComboVoice . tPlay ( this . actCombo . nCurrentCombo [ nPlayer ] , nPlayer ) ;
16121574
1613- double dbUnit = ( ( ( 60.0 / ( OpenTaiko . stageGameScreen . actPlayInfo . dbBPM [ nPlayer ] ) ) ) ) ;
1614- dbUnit = ( ( ( 60.0 / pChip . dbBPM ) ) ) ;
1615-
16161575 //CDTXMania.act文字コンソール.tPrint(620, 80, C文字コンソール.Eフォント種別.白, "BPM: " + dbUnit.ToString());
16171576
16181577 for ( int i = 0 ; i < 5 ; i ++ ) {
@@ -3649,6 +3608,7 @@ public void ProcessRollHeadEffects(int iPlayer, CChip chip) {
36493608 this . nowProcessingKusudama = chip ;
36503609 actBalloon . KusuIn ( ) ;
36513610 actChara . KusuIn ( ) ;
3611+ this . actChara . IsInKusudama = true ;
36523612 for ( int i = 0 ; i < OpenTaiko . ConfigIni . nPlayerCount ; i ++ ) {
36533613 this . bCurrentlyDrumRoll [ i ] = true ;
36543614 this . actChara . b風船連打中 [ i ] = true ;
@@ -3674,11 +3634,6 @@ public void ProcessRollEnd(int iPlayer, CChip chip, bool resetStates) {
36743634 OpenTaiko . Skin . soundKusudamaMiss . tPlay ( ) ;
36753635 for ( int p = 0 ; p < OpenTaiko . ConfigIni . nPlayerCount ; p ++ ) {
36763636 this . actChara . ChangeAnime ( p , CActImplCharacter . Anime . Kusudama_Miss , true ) ;
3677-
3678- if ( actChara . CharaAction_Balloon_Delay [ p ] != null ) actChara . CharaAction_Balloon_Delay [ p ] = new CCounter ( 0 ,
3679- OpenTaiko . Skin . Characters_Balloon_Delay [ actChara . iCurrentCharacter [ p ] ] - 1 ,
3680- 1 ,
3681- OpenTaiko . Timer ) ;
36823637 }
36833638 }
36843639 nCurrentKusudamaRollCount = 0 ;
@@ -3689,11 +3644,6 @@ public void ProcessRollEnd(int iPlayer, CChip chip, bool resetStates) {
36893644 if ( ! this . bPAUSE && ! this . isRewinding ) {
36903645 if ( chip . nRollCount > 0 ) {
36913646 this . actChara . ChangeAnime ( iPlayer , CActImplCharacter . Anime . Balloon_Miss , true ) ;
3692-
3693- if ( actChara . CharaAction_Balloon_Delay [ iPlayer ] != null ) actChara . CharaAction_Balloon_Delay [ iPlayer ] = new CCounter ( 0 ,
3694- OpenTaiko . Skin . Characters_Balloon_Delay [ actChara . iCurrentCharacter [ iPlayer ] ] - 1 ,
3695- 1 ,
3696- OpenTaiko . Timer ) ;
36973647 }
36983648 }
36993649 }
@@ -3741,8 +3691,6 @@ public void ProcessBalloonBroke(int iPlayer, CChip chip) {
37413691 actBalloon . KusuBroke ( ) ;
37423692 for ( int i = 0 ; i < OpenTaiko . ConfigIni . nPlayerCount ; i ++ ) {
37433693 actChara . ChangeAnime ( i , CActImplCharacter . Anime . Kusudama_Broke , true ) ;
3744- if ( actChara . CharaAction_Balloon_Delay [ i ] != null )
3745- actChara . CharaAction_Balloon_Delay [ i ] = new CCounter ( 0 , OpenTaiko . Skin . Characters_Balloon_Delay [ actChara . iCurrentCharacter [ i ] ] - 1 , 1 , OpenTaiko . Timer ) ;
37463694 }
37473695 } else {
37483696 //パァーン
@@ -3756,11 +3704,7 @@ public void ProcessBalloonBroke(int iPlayer, CChip chip) {
37563704 //this.b連打中 = false;
37573705 //this.actChara.b風船連打中 = false;
37583706 chip . bVisible = false ;
3759- {
3760- actChara . ChangeAnime ( iPlayer , CActImplCharacter . Anime . Balloon_Broke , true ) ;
3761- if ( actChara . CharaAction_Balloon_Delay [ iPlayer ] != null )
3762- actChara . CharaAction_Balloon_Delay [ iPlayer ] = new CCounter ( 0 , OpenTaiko . Skin . Characters_Balloon_Delay [ actChara . iCurrentCharacter [ iPlayer ] ] - 1 , 1 , OpenTaiko . Timer ) ;
3763- }
3707+ actChara . ChangeAnime ( iPlayer , CActImplCharacter . Anime . Balloon_Broke , true ) ;
37643708 if ( NotesManager . IsFuzeRoll ( chip ) ) {
37653709 this . CChartScore [ iPlayer ] . nMineAvoid ++ ;
37663710 this . CSectionScore [ iPlayer ] . nMineAvoid ++ ;
@@ -3807,9 +3751,14 @@ private void RemoveNowProcessingRollChip(int iPlayer, CChip chip, bool resetStat
38073751 this . chip現在処理中の連打チップ [ iPlayer ] . Remove ( chip ) ;
38083752 if ( this . chip現在処理中の連打チップ [ iPlayer ] . Count == 0 ) {
38093753 this . bCurrentlyDrumRoll [ iPlayer ] = false ;
3754+ this . actChara . b風船連打中 [ iPlayer ] = false ;
3755+ this . actChara . IsInKusudama = false ;
38103756 this . eRollState = ERollState . None ;
38113757 } else if ( ! this . chip現在処理中の連打チップ [ iPlayer ] . Any ( x => NotesManager . IsGenericBalloon ( x ) ) ) {
38123758 this . actChara . b風船連打中 [ iPlayer ] = false ;
3759+ this . actChara . IsInKusudama = false ;
3760+ } else if ( ! this . chip現在処理中の連打チップ [ iPlayer ] . Any ( x => NotesManager . IsKusudama ( x ) ) ) {
3761+ this . actChara . IsInKusudama = false ;
38133762 }
38143763 if ( resetStates || ( ! this . bPAUSE && ! this . isRewinding ) ) {
38153764 chip . bProcessed = ! resetStates ;
@@ -4145,11 +4094,12 @@ public virtual void t数値の初期化(bool b演奏記録, bool b演奏状態)
41454094 switch ( chara . effect . tGetGaugeType ( ) ) {
41464095 default :
41474096 case "Normal" :
4148- bIsAlreadyCleared [ i ] = false ;
4097+ bIsAlreadyMaxed [ i ] = bIsAlreadyCleared [ i ] = false ;
41494098 break ;
41504099 case "Hard" :
41514100 case "Extreme" :
41524101 bIsAlreadyCleared [ i ] = true ;
4102+ bIsAlreadyMaxed [ i ] = false ;
41534103 break ;
41544104 }
41554105
0 commit comments