Skip to content

Commit

Permalink
Experimental added a "listen" mode
Browse files Browse the repository at this point in the history
Which can shuffles and plays all bms charts for listening only.
  • Loading branch information
JLChnToZ committed Feb 27, 2018
1 parent 59a557f commit d3cc449
Show file tree
Hide file tree
Showing 9 changed files with 2,963 additions and 107 deletions.
2,698 changes: 2,698 additions & 0 deletions Assets/Scenes/ListenScene.unity

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions Assets/Scenes/ListenScene.unity.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

66 changes: 50 additions & 16 deletions Assets/Scenes/MenuScene.unity
Expand Up @@ -414,7 +414,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 3}
m_SizeDelta: {x: -6, y: -70.00343}
m_SizeDelta: {x: -6, y: -70.28571}
m_Pivot: {x: 0.5, y: 1}
--- !u!114 &26683216
MonoBehaviour:
Expand Down Expand Up @@ -1323,7 +1323,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -0.000079105965, y: 0}
m_AnchoredPosition: {x: -0.00004143464, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &239431469
Expand Down Expand Up @@ -1469,7 +1469,7 @@ RectTransform:
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -5, y: -5}
m_SizeDelta: {x: 94.5591, y: 24.315197}
m_SizeDelta: {x: 98.68531, y: 24.83916}
m_Pivot: {x: 1, y: 0}
--- !u!114 &262673447
MonoBehaviour:
Expand Down Expand Up @@ -2269,7 +2269,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -6, y: 34.22139}
m_SizeDelta: {x: -6, y: 33.566433}
m_Pivot: {x: 0.5, y: 1}
--- !u!114 &338156894
MonoBehaviour:
Expand Down Expand Up @@ -4424,12 +4424,12 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1947081989}
m_Father: {fileID: 875424810}
m_RootOrder: 2
m_Father: {fileID: 1433395499}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0.000027483}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &766616017
Expand Down Expand Up @@ -5715,7 +5715,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &875424810
RectTransform:
m_ObjectHideFlags: 0
Expand All @@ -5728,7 +5728,6 @@ RectTransform:
m_Children:
- {fileID: 639227804}
- {fileID: 2008938208}
- {fileID: 766616016}
m_Father: {fileID: 1403384246}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
Expand Down Expand Up @@ -8890,13 +8889,14 @@ RectTransform:
- {fileID: 1037613589}
- {fileID: 1144264353}
- {fileID: 875424810}
- {fileID: 1433395499}
m_Father: {fileID: 163558402}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 300, y: 0}
m_SizeDelta: {x: 553.7336, y: 480.00003}
m_SizeDelta: {x: 553.2587, y: 480.00003}
m_Pivot: {x: 0, y: 1}
--- !u!114 &1403384247
MonoBehaviour:
Expand Down Expand Up @@ -9235,6 +9235,40 @@ CanvasRenderer:
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1416979192}
--- !u!1 &1433395498
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1433395499}
m_Layer: 5
m_Name: Start Game Button Container
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1433395499
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1433395498}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 766616016}
m_Father: {fileID: 1403384246}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1481258465
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -9701,7 +9735,7 @@ RectTransform:
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -5, y: -5}
m_SizeDelta: {x: 113.61922, y: 24.69983}
m_SizeDelta: {x: 113.37143, y: 24.685715}
m_Pivot: {x: 1, y: 0}
--- !u!114 &1524069851
MonoBehaviour:
Expand Down Expand Up @@ -10105,7 +10139,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.000012369515}
m_AnchoredPosition: {x: 0, y: -0.00004031153}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!1001 &1594114825
Expand Down Expand Up @@ -12611,7 +12645,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -0.000079105965, y: 0}
m_AnchoredPosition: {x: -0.00004143464, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1918618724
Expand Down Expand Up @@ -13189,7 +13223,7 @@ MonoBehaviour:
m_Inertia: 1
m_DecelerationRate: 0.135
m_ScrollSensitivity: 10
m_Viewport: {fileID: 0}
m_Viewport: {fileID: 161984585}
m_HorizontalScrollbar: {fileID: 0}
m_VerticalScrollbar: {fileID: 0}
m_HorizontalScrollbarVisibility: 0
Expand Down Expand Up @@ -13245,7 +13279,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: -0.00000005973336}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &2029048573
Expand Down Expand Up @@ -13497,7 +13531,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -0.000079105965, y: 0}
m_AnchoredPosition: {x: -0.00004143464, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2088645899
Expand Down
68 changes: 35 additions & 33 deletions Assets/Scripts/Handlers/InfoHandler.cs
Expand Up @@ -99,39 +99,41 @@ public class InfoHandler : MonoBehaviour {
}
if(gameEnded) {
gameEnded = false;
panel.gameObject.SetActive(true);
if(Loader.judgeMode != 2) {
resultText.text = "";
detailsPanel.gameObject.SetActive(true);
for(int i = 0; i < resultCountText.Length; i++)
resultCountText[i].text = bmsManager.GetNoteScoreCount(i).ToString("\\x0");
resultComboText.text = bmsManager.MaxCombos.ToString("\\x0");
resultScoreText.text = bmsManager.Score.ToString("0000000");
resultRankText.text = string.Format(
"<color=#{0}>{1}</color>",
ColorUtility.ToHtmlStringRGBA(bmsManager.RankColor),
bmsManager.RankString
);
}
bgTexture.rawImage.enabled = bgTexture.rawImage.texture != null;
if(graphDisplay) {
if(graphHandler)
graphDisplay.texture = graphHandler.Texture;
graphDisplay.enabled = graphDisplay.texture;
}
var recordsManager = RecordsManager.Instance;
if(Loader.judgeMode == 2) {
var hash = bmsManager.GetHash(SongInfoLoader.CurrentEncoding, recordsManager.HashAlgorithm);
int channelHash = RecordsManager.GetAdoptedChannelHash(bmsManager.GetAllAdoptedChannels());
var records = recordsManager.GetRecord(hash, channelHash);
bool pass = bmsManager.Score >= bmsManager.MaxScore / 2;
if(pass && records != null)
pass = bmsManager.Score >= records.Value.score;
resultText.text = LanguageLoader.GetText(pass ? 33 : 34);
detailsPanel.gameObject.SetActive(false);
}
if(!Loader.autoMode) {
recordsManager.CreateRecord(bmsManager);
if(!Loader.listenMode) {
panel.gameObject.SetActive(true);
if(Loader.judgeMode != 2) {
resultText.text = "";
detailsPanel.gameObject.SetActive(true);
for(int i = 0; i < resultCountText.Length; i++)
resultCountText[i].text = bmsManager.GetNoteScoreCount(i).ToString("\\x0");
resultComboText.text = bmsManager.MaxCombos.ToString("\\x0");
resultScoreText.text = bmsManager.Score.ToString("0000000");
resultRankText.text = string.Format(
"<color=#{0}>{1}</color>",
ColorUtility.ToHtmlStringRGBA(bmsManager.RankColor),
bmsManager.RankString
);
}
bgTexture.rawImage.enabled = bgTexture.rawImage.texture != null;
if(graphDisplay) {
if(graphHandler)
graphDisplay.texture = graphHandler.Texture;
graphDisplay.enabled = graphDisplay.texture;
}
var recordsManager = RecordsManager.Instance;
if(Loader.judgeMode == 2) {
var hash = bmsManager.GetHash(SongInfoLoader.CurrentEncoding, recordsManager.HashAlgorithm);
int channelHash = RecordsManager.GetAdoptedChannelHash(bmsManager.GetAllAdoptedChannels());
var records = recordsManager.GetRecord(hash, channelHash);
bool pass = bmsManager.Score >= bmsManager.MaxScore / 2;
if(pass && records != null)
pass = bmsManager.Score >= records.Value.score;
resultText.text = LanguageLoader.GetText(pass ? 33 : 34);
detailsPanel.gameObject.SetActive(false);
}
if(!Loader.autoMode) {
recordsManager.CreateRecord(bmsManager);
}
}
}
if(gameStarted) {
Expand Down
51 changes: 45 additions & 6 deletions Assets/Scripts/Loader.cs
Expand Up @@ -7,8 +7,12 @@
using BMS;
using BMS.Visualization;

using UnityRandom = UnityEngine.Random;

public class Loader : SingletonBehaviour<Loader> {
public static string songPath;
public static string[] songPaths;
public static bool listenMode = false;
public static bool autoMode = false;
public static bool enableBGA = true;
public static bool enableDetune = true;
Expand All @@ -25,21 +29,37 @@ public class Loader : SingletonBehaviour<Loader> {
public NoteDetector noteDetector;
public NoteSpawner[] noteSpaawners;

private bool isFirstRun = true;

public void LoadScene(string sceneName) {
SceneManager.LoadScene(sceneName);
}

void Start () {
void Start() {
switch(sceneIndex) {
case 0: // Menu Scene
listenMode = false;
break;
case 1: // Game Scene
StartCoroutine(LoadBMSCoroutine());
listenMode = false;
StartCoroutine(LoadBMSCoroutine(songPath));
break;
case 2: // Listen Scene
listenMode = true;
LoadRandomSong();
break;
}
}

IEnumerator LoadBMSCoroutine() {
protected override void OnDestroy() {
base.OnDestroy();
if(bmsManager != null) {
bmsManager.OnGameEnded -= LoadRandomSong;
}
}

IEnumerator LoadBMSCoroutine(string songPath) {
bmsManager.IsStarted = false;
FileInfo fileInfo = new FileInfo(songPath);
string bmsContent = SongInfoLoader.LoadFile(fileInfo);
bmsManager.NoteLimit = noteLimit >= 1 ? Mathf.FloorToInt(Mathf.Pow(2, 3 + noteLimit)) : 0;
Expand All @@ -56,12 +76,31 @@ public class Loader : SingletonBehaviour<Loader> {
while(bmsManager.IsLoadingResources) yield return null;
bmsManager.InitializeNoteScore();

noteDetector.autoMode = autoMode;
foreach(var spawner in noteSpaawners)
spawner.coloringMode = colorMode;
if(noteDetector != null)
noteDetector.autoMode = autoMode;
if(noteSpaawners != null)
foreach(var spawner in noteSpaawners)
spawner.coloringMode = colorMode;
bmsManager.TightMode = judgeMode == 1;
if(!enableBGA)
bmsManager.placeHolderTexture = Texture2D.whiteTexture;
bmsManager.IsStarted = true;
}

private void LoadRandomSong() {
if(songPaths == null || songPaths.Length < 1) {
SceneManager.LoadScene("MenuScene");
return;
}
StartCoroutine(LoadRandomSongDeferred());
}

private IEnumerator LoadRandomSongDeferred() {
yield return null;
StartCoroutine(LoadBMSCoroutine(songPaths[UnityRandom.Range(0, songPaths.Length)]));
yield return null;
if(isFirstRun && bmsManager != null)
bmsManager.OnGameEnded += LoadRandomSong;
isFirstRun = false;
}
}
12 changes: 10 additions & 2 deletions Assets/Scripts/Menu/SelectSongManager.cs
Expand Up @@ -154,15 +154,23 @@ public class SelectSongManager: MonoBehaviour {
}

public void StartGame() {
if(string.IsNullOrEmpty(Loader.songPath))
return;
HideOptions();
if(string.IsNullOrEmpty(Loader.songPath)) {
SongInfoLoader.OnRecursiveLoaded += StartListen;
SongInfoLoader.RecursiveLoadDirectory();
return;
}
switch(Loader.gameMode) {
case 0: SceneManager.LoadScene("GameScene"); break;
case 1: SceneManager.LoadScene("ClassicGameScene"); break;
}
}

public void StartListen() {
SongInfoLoader.OnRecursiveLoaded -= StartListen;
SceneManager.LoadScene("ListenScene");
}

public void ShowOptions() {
detailsPanel.gameObject.SetActive(false);
optionsPanel.gameObject.SetActive(true);
Expand Down

0 comments on commit d3cc449

Please sign in to comment.