More menu work for symphony.
This commit is contained in:
parent
eb90e537a5
commit
5e8f2ccdfd
|
@ -19,13 +19,11 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
* Festival
|
* Festival
|
||||||
* Event
|
* Event
|
||||||
*
|
*
|
||||||
* once song is selected also have play and stop button to see how song plays.
|
* Add in update functionality for menu/events/festival selection to be able to go to next page.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Figure out positioning for icons on fancy icons
|
|
||||||
*
|
|
||||||
* Need to do menu layout for menu/festival/event music.
|
* Need to do menu layout for menu/festival/event music.
|
||||||
* Ned to make play/stop/add/delete/back buttons.
|
* Ned to make back buttons.
|
||||||
*
|
*
|
||||||
* //Make all the functionality work.
|
* //Make all the functionality work.
|
||||||
*
|
*
|
||||||
|
@ -54,7 +52,11 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
TimeSelection,
|
TimeSelection,
|
||||||
LocationSelection,
|
LocationSelection,
|
||||||
DaySelection,
|
DaySelection,
|
||||||
NothingElseToDisplay
|
NothingElseToDisplay,
|
||||||
|
|
||||||
|
SelectedEvent,
|
||||||
|
SelectedFestival,
|
||||||
|
SelectedMenu
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Button> musicAlbumButtons;
|
public List<Button> musicAlbumButtons;
|
||||||
|
@ -66,6 +68,9 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
public Button currentlySelectedLocation;
|
public Button currentlySelectedLocation;
|
||||||
public Button currentlySelectedDay;
|
public Button currentlySelectedDay;
|
||||||
|
|
||||||
|
public Button currentlySelectedFestival;
|
||||||
|
public Button currentlySelectedEvent;
|
||||||
|
public Button currentlySelectedMenu;
|
||||||
|
|
||||||
public Button addButton;
|
public Button addButton;
|
||||||
public Button deleteButton;
|
public Button deleteButton;
|
||||||
|
@ -370,6 +375,62 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Song selection mode.
|
||||||
|
if (this.drawMode == DrawMode.FestivalSelection)
|
||||||
|
{
|
||||||
|
this.fancyButtons.Clear();
|
||||||
|
//Vector4 placement = new Vector4((Game1.viewport.Width / 3), (Game1.viewport.Height / 4) + 128, this.width, this.height / 2);
|
||||||
|
|
||||||
|
Vector4 placement2 = new Vector4(this.width * .2f + 400, this.height * .05f, 5 * 100, this.height * .9f);
|
||||||
|
for (int i = 0; i < SongSpecifics.festivals.Count; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
//Allow 8 songs to be displayed per page.
|
||||||
|
Texture2DExtended texture = StardewSymphony.textureManager.getTexture("GreenBallon");
|
||||||
|
float scale = 1.00f / ((float)texture.texture.Width / 64f);
|
||||||
|
Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height);
|
||||||
|
this.fancyButtons.Add(new Button(SongSpecifics.festivals.ElementAt(i), new Rectangle((int)placement2.X + 25, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture, SongSpecifics.festivals.ElementAt(i), srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null)));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Song selection mode.
|
||||||
|
if (this.drawMode == DrawMode.MenuSelection)
|
||||||
|
{
|
||||||
|
this.fancyButtons.Clear();
|
||||||
|
//Vector4 placement = new Vector4((Game1.viewport.Width / 3), (Game1.viewport.Height / 4) + 128, this.width, this.height / 2);
|
||||||
|
|
||||||
|
Vector4 placement2 = new Vector4(this.width * .2f + 400, this.height * .05f, 5 * 100, this.height * .9f);
|
||||||
|
for (int i = 0; i < SongSpecifics.menus.Count; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
//Allow 8 songs to be displayed per page.
|
||||||
|
Texture2DExtended texture = StardewSymphony.textureManager.getTexture("MenuIcon");
|
||||||
|
float scale = 1.00f / ((float)texture.texture.Width / 64f);
|
||||||
|
Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height);
|
||||||
|
this.fancyButtons.Add(new Button(SongSpecifics.menus.ElementAt(i), new Rectangle((int)placement2.X + 25, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture, SongSpecifics.menus.ElementAt(i), srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null)));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Song selection mode.
|
||||||
|
if (this.drawMode == DrawMode.EventSelection)
|
||||||
|
{
|
||||||
|
this.fancyButtons.Clear();
|
||||||
|
//Vector4 placement = new Vector4((Game1.viewport.Width / 3), (Game1.viewport.Height / 4) + 128, this.width, this.height / 2);
|
||||||
|
|
||||||
|
Vector4 placement2 = new Vector4(this.width * .2f + 400, this.height * .05f, 5 * 100, this.height * .9f);
|
||||||
|
for (int i = 0; i < SongSpecifics.events.Count; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
//Allow 8 songs to be displayed per page.
|
||||||
|
Texture2DExtended texture = StardewSymphony.textureManager.getTexture("StarIcon");
|
||||||
|
float scale = 1.00f / ((float)texture.texture.Width / 64f);
|
||||||
|
Rectangle srcRect = new Rectangle(0, 0, texture.texture.Width, texture.texture.Height);
|
||||||
|
this.fancyButtons.Add(new Button(SongSpecifics.events.ElementAt(i), new Rectangle((int)placement2.X + 25, (int)placement2.Y + ((i % 6) * 100) + 100, 64, 64), texture, SongSpecifics.events.ElementAt(i), srcRect, scale, new Animation(srcRect), Color.White, Color.White, new ButtonFunctionality(null, null, null)));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
//Options selection mode.
|
//Options selection mode.
|
||||||
if (this.drawMode == DrawMode.DifferentSelectionTypesMode)
|
if (this.drawMode == DrawMode.DifferentSelectionTypesMode)
|
||||||
{
|
{
|
||||||
|
@ -929,15 +990,22 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
}
|
}
|
||||||
if (button.name == "FestivalIcon")
|
if (button.name == "FestivalIcon")
|
||||||
{
|
{
|
||||||
|
this.currentlySelectedOption = button.clone(position);
|
||||||
|
this.drawMode = DrawMode.FestivalSelection;
|
||||||
|
buttonSelected = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (button.name == "EventIcon")
|
if (button.name == "EventIcon")
|
||||||
{
|
{
|
||||||
|
this.currentlySelectedOption = button.clone(position);
|
||||||
|
this.drawMode = DrawMode.EventSelection;
|
||||||
|
buttonSelected = true;
|
||||||
}
|
}
|
||||||
if (button.name == "MenuIcon")
|
if (button.name == "MenuIcon")
|
||||||
{
|
{
|
||||||
|
this.currentlySelectedOption = button.clone(position);
|
||||||
|
this.drawMode = DrawMode.MenuSelection;
|
||||||
|
buttonSelected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1006,6 +1074,62 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (this.drawMode == DrawMode.FestivalSelection)
|
||||||
|
{
|
||||||
|
foreach (var button in this.fancyButtons)
|
||||||
|
{
|
||||||
|
if (button.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
if (button == null) continue;
|
||||||
|
Vector2 position = new Vector2(this.width * .1f + 64, this.height * .05f + 384);
|
||||||
|
//Get any valid location button.
|
||||||
|
this.currentlySelectedFestival = button.clone(position);
|
||||||
|
this.drawMode = DrawMode.SelectedFestival;
|
||||||
|
buttonSelected = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (buttonSelected == true) this.updateFancyButtons();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.drawMode == DrawMode.MenuSelection)
|
||||||
|
{
|
||||||
|
foreach (var button in this.fancyButtons)
|
||||||
|
{
|
||||||
|
if (button.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
if (button == null) continue;
|
||||||
|
Vector2 position = new Vector2(this.width * .1f + 64, this.height * .05f + 384);
|
||||||
|
//Get any valid location button.
|
||||||
|
this.currentlySelectedMenu = button.clone(position);
|
||||||
|
this.drawMode = DrawMode.SelectedMenu;
|
||||||
|
buttonSelected = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (buttonSelected == true) this.updateFancyButtons();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.drawMode == DrawMode.EventSelection)
|
||||||
|
{
|
||||||
|
foreach (var button in this.fancyButtons)
|
||||||
|
{
|
||||||
|
if (button.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
if (button == null) continue;
|
||||||
|
Vector2 position = new Vector2(this.width * .1f + 64, this.height * .05f + 384);
|
||||||
|
//Get any valid location button.
|
||||||
|
this.currentlySelectedEvent = button.clone(position);
|
||||||
|
this.drawMode = DrawMode.SelectedEvent;
|
||||||
|
buttonSelected = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (buttonSelected == true) this.updateFancyButtons();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (this.drawMode == DrawMode.DaySelection)
|
if (this.drawMode == DrawMode.DaySelection)
|
||||||
{
|
{
|
||||||
foreach (var button in this.fancyButtons)
|
foreach (var button in this.fancyButtons)
|
||||||
|
@ -1308,12 +1432,132 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
this.stopButton.draw(b);
|
this.stopButton.draw(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.drawMouse(b);
|
|
||||||
|
if (this.drawMode == DrawMode.EventSelection || this.drawMode == DrawMode.FestivalSelection || this.drawMode == DrawMode.MenuSelection)
|
||||||
|
{
|
||||||
|
Vector4 placement = new Vector4(this.width * .1f, this.height * .05f, 4 * 100, 128 * 2);
|
||||||
|
this.drawDialogueBoxBackground((int)placement.X, (int)placement.Y, (int)placement.Z, (int)placement.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
|
||||||
|
Vector4 placement2 = new Vector4(this.width * .2f + 400, this.height * .05f, 5 * 100, this.height * .95f);
|
||||||
|
this.drawDialogueBoxBackground((int)placement2.X, (int)placement2.Y, (int)placement2.Z, (int)placement2.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
//make 3rd dialogue box option;
|
||||||
|
this.currentMusicPackAlbum.draw(b);
|
||||||
|
this.currentSelectedSong.draw(b);
|
||||||
|
this.currentlySelectedOption.draw(b);
|
||||||
|
|
||||||
|
foreach (Button button in fancyButtons)
|
||||||
|
{
|
||||||
|
button.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var v in this.texturedStrings)
|
||||||
|
{
|
||||||
|
v.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.drawMode == DrawMode.SelectedEvent)
|
||||||
|
{
|
||||||
|
Vector4 placement = new Vector4(this.width * .1f, this.height * .05f, 4 * 100, 128 * 2);
|
||||||
|
this.drawDialogueBoxBackground((int)placement.X, (int)placement.Y, (int)placement.Z, (int)placement.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
|
||||||
|
Vector4 placement2 = new Vector4(this.width * .2f + 400, this.height * .05f, 5 * 100, this.height * .95f);
|
||||||
|
this.drawDialogueBoxBackground((int)placement2.X, (int)placement2.Y, (int)placement2.Z, (int)placement2.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
//make 3rd dialogue box option;
|
||||||
|
this.currentMusicPackAlbum.draw(b);
|
||||||
|
this.currentSelectedSong.draw(b);
|
||||||
|
this.currentlySelectedOption.draw(b);
|
||||||
|
this.currentlySelectedEvent.draw(b);
|
||||||
|
this.playButton.draw(b);
|
||||||
|
this.stopButton.draw(b);
|
||||||
|
this.addButton.draw(b);
|
||||||
|
this.deleteButton.draw(b);
|
||||||
|
|
||||||
|
foreach (Button button in fancyButtons)
|
||||||
|
{
|
||||||
|
button.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var v in this.texturedStrings)
|
||||||
|
{
|
||||||
|
v.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (this.drawMode == DrawMode.SelectedFestival)
|
||||||
|
{
|
||||||
|
Vector4 placement = new Vector4(this.width * .1f, this.height * .05f, 4 * 100, 128 * 2);
|
||||||
|
this.drawDialogueBoxBackground((int)placement.X, (int)placement.Y, (int)placement.Z, (int)placement.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
|
||||||
|
Vector4 placement2 = new Vector4(this.width * .2f + 400, this.height * .05f, 5 * 100, this.height * .95f);
|
||||||
|
this.drawDialogueBoxBackground((int)placement2.X, (int)placement2.Y, (int)placement2.Z, (int)placement2.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
//make 3rd dialogue box option;
|
||||||
|
this.currentMusicPackAlbum.draw(b);
|
||||||
|
this.currentSelectedSong.draw(b);
|
||||||
|
this.currentlySelectedOption.draw(b);
|
||||||
|
this.currentlySelectedFestival.draw(b);
|
||||||
|
this.playButton.draw(b);
|
||||||
|
this.stopButton.draw(b);
|
||||||
|
this.addButton.draw(b);
|
||||||
|
this.deleteButton.draw(b);
|
||||||
|
|
||||||
|
foreach (Button button in fancyButtons)
|
||||||
|
{
|
||||||
|
button.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var v in this.texturedStrings)
|
||||||
|
{
|
||||||
|
v.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (this.drawMode == DrawMode.SelectedMenu)
|
||||||
|
{
|
||||||
|
Vector4 placement = new Vector4(this.width * .1f, this.height * .05f, 4 * 100, 128 * 2);
|
||||||
|
this.drawDialogueBoxBackground((int)placement.X, (int)placement.Y, (int)placement.Z, (int)placement.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
|
||||||
|
Vector4 placement2 = new Vector4(this.width * .2f + 400, this.height * .05f, 5 * 100, this.height * .95f);
|
||||||
|
this.drawDialogueBoxBackground((int)placement2.X, (int)placement2.Y, (int)placement2.Z, (int)placement2.W, new Color(new Vector4(this.dialogueBoxBackgroundColor.ToVector3(), 255)));
|
||||||
|
|
||||||
|
//make 3rd dialogue box option;
|
||||||
|
this.currentMusicPackAlbum.draw(b);
|
||||||
|
this.currentSelectedSong.draw(b);
|
||||||
|
this.currentlySelectedOption.draw(b);
|
||||||
|
this.currentlySelectedMenu.draw(b);
|
||||||
|
this.playButton.draw(b);
|
||||||
|
this.stopButton.draw(b);
|
||||||
|
this.addButton.draw(b);
|
||||||
|
this.deleteButton.draw(b);
|
||||||
|
|
||||||
|
foreach (Button button in fancyButtons)
|
||||||
|
{
|
||||||
|
button.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var v in this.texturedStrings)
|
||||||
|
{
|
||||||
|
v.draw(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
this.drawMouse(b);
|
||||||
|
}
|
||||||
|
|
||||||
//Button Functionality
|
//Button Functionality
|
||||||
#region
|
#region
|
||||||
private void hello(List<object> param)
|
private void hello(List<object> param)
|
||||||
|
@ -1344,21 +1588,20 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
this.drawMode = DrawMode.SongSelectionMode;
|
this.drawMode = DrawMode.SongSelectionMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Select a given song from the menu.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="b"></param>
|
||||||
public void selectSong(Button b)
|
public void selectSong(Button b)
|
||||||
{
|
{
|
||||||
if (b.label == "Null") return;
|
if (b.label == "Null") return;
|
||||||
this.currentSelectedSong = b.clone(new Vector2(this.width * .1f + 64, this.height * .05f + 256));
|
this.currentSelectedSong = b.clone(new Vector2(this.width * .1f + 64, this.height * .05f + 256));
|
||||||
/*
|
|
||||||
StardewSymphony.ModMonitor.Log("Song Selected!" + b.name);
|
|
||||||
var info = (KeyValuePair<string, MusicPack>)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0];
|
|
||||||
StardewSymphony.ModMonitor.Log("Select Pack:"+info.Key);
|
|
||||||
StardewSymphony.musicManager.swapMusicPacks(info.Key);
|
|
||||||
StardewSymphony.musicManager.playSongFromCurrentPack(b.name);
|
|
||||||
*/
|
|
||||||
this.drawMode = DrawMode.DifferentSelectionTypesMode;
|
this.drawMode = DrawMode.DifferentSelectionTypesMode;
|
||||||
//this.updateFancyButtons();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Plays the currently selected song.
|
||||||
|
/// </summary>
|
||||||
public void playSong()
|
public void playSong()
|
||||||
{
|
{
|
||||||
StardewSymphony.ModMonitor.Log("Song Selected!" + this.currentSelectedSong.name);
|
StardewSymphony.ModMonitor.Log("Song Selected!" + this.currentSelectedSong.name);
|
||||||
|
@ -1368,6 +1611,9 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
StardewSymphony.musicManager.playSongFromCurrentPack(this.currentSelectedSong.name);
|
StardewSymphony.musicManager.playSongFromCurrentPack(this.currentSelectedSong.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stops the currently playing song.
|
||||||
|
/// </summary>
|
||||||
public void stopSong()
|
public void stopSong()
|
||||||
{
|
{
|
||||||
StardewSymphony.ModMonitor.Log("Song Selected!" + this.currentSelectedSong.name);
|
StardewSymphony.ModMonitor.Log("Song Selected!" + this.currentSelectedSong.name);
|
||||||
|
@ -1377,18 +1623,28 @@ namespace StardewSymphonyRemastered.Framework.Menus
|
||||||
StardewSymphony.musicManager.stopSongFromCurrentMusicPack();
|
StardewSymphony.musicManager.stopSongFromCurrentMusicPack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a song to the trigger list so that music will play at the appropriate time.
|
||||||
|
/// </summary>
|
||||||
public void addSong()
|
public void addSong()
|
||||||
{
|
{
|
||||||
var info = (KeyValuePair<string, MusicPack>)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0];
|
var info = (KeyValuePair<string, MusicPack>)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0];
|
||||||
info.Value.songInformation.addSongToTriggerList(generateSongTriggerKeyFromSelection(), this.currentSelectedSong.label);
|
info.Value.songInformation.addSongToTriggerList(generateSongTriggerKeyFromSelection(), this.currentSelectedSong.label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Delete the song from the list of triggers.
|
||||||
|
/// </summary>
|
||||||
public void deleteSong()
|
public void deleteSong()
|
||||||
{
|
{
|
||||||
var info = (KeyValuePair<string, MusicPack>)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0];
|
var info = (KeyValuePair<string, MusicPack>)this.currentMusicPackAlbum.buttonFunctionality.leftClick.paramaters[0];
|
||||||
info.Value.songInformation.removeSongFromTriggerList(generateSongTriggerKeyFromSelection(), this.currentSelectedSong.label);
|
info.Value.songInformation.removeSongFromTriggerList(generateSongTriggerKeyFromSelection(), this.currentSelectedSong.label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Generate the trigger key based on used selection.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
public string generateSongTriggerKeyFromSelection()
|
public string generateSongTriggerKeyFromSelection()
|
||||||
{
|
{
|
||||||
string key = "";
|
string key = "";
|
||||||
|
|
|
@ -27,6 +27,8 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
|
|
||||||
Random packSelector;
|
Random packSelector;
|
||||||
Random songSelector;
|
Random songSelector;
|
||||||
|
|
||||||
|
bool lastSongWasLocationSpecific;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor.
|
/// Constructor.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -36,6 +38,7 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
this.currentMusicPack = null;
|
this.currentMusicPack = null;
|
||||||
packSelector = new Random(Game1.random.Next(1,1000000));
|
packSelector = new Random(Game1.random.Next(1,1000000));
|
||||||
songSelector = new Random(Game1.player.deepestMineLevel + Game1.player.facingDirection + packSelector.Next(0,10000));
|
songSelector = new Random(Game1.player.deepestMineLevel + Game1.player.facingDirection + packSelector.Next(0,10000));
|
||||||
|
lastSongWasLocationSpecific = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -245,6 +248,8 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
string subKey = songListKey;
|
string subKey = songListKey;
|
||||||
//Try to get more specific.
|
//Try to get more specific.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//This chunk is to determine song specifics for location.
|
//This chunk is to determine song specifics for location.
|
||||||
while (listOfValidMusicPacks.Count == 0)
|
while (listOfValidMusicPacks.Count == 0)
|
||||||
{
|
{
|
||||||
|
@ -348,6 +353,22 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string[] sizeList = subKey.Split(SongSpecifics.seperator);
|
||||||
|
|
||||||
|
if (this.currentMusicPack != null) {
|
||||||
|
//If I am trying to play a generic song and a generic song is playing don't change the music.
|
||||||
|
//If I am trying to play a generic song and a non-generic song is playing, then play my generic song since I don't want to play the specific music anymore.
|
||||||
|
if (sizeList.Length < 3 && (this.currentMusicPack.isPlaying() && this.lastSongWasLocationSpecific==false))
|
||||||
|
{
|
||||||
|
StardewSymphony.ModMonitor.Log("Non specific music change detected. Not going to change the music this time");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sizeList.Length < 3) this.lastSongWasLocationSpecific = false;
|
||||||
|
else this.lastSongWasLocationSpecific = true;
|
||||||
|
|
||||||
//If there is a valid key for the place/time/event/festival I am at, play it!
|
//If there is a valid key for the place/time/event/festival I am at, play it!
|
||||||
|
|
||||||
int randInt = packSelector.Next(0, listOfValidMusicPacks.Count-1);
|
int randInt = packSelector.Next(0, listOfValidMusicPacks.Count-1);
|
||||||
|
|
|
@ -13,6 +13,7 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MusicPack
|
public class MusicPack
|
||||||
{
|
{
|
||||||
|
|
||||||
public string directory;
|
public string directory;
|
||||||
public string shortenedDirectory;
|
public string shortenedDirectory;
|
||||||
public StardewSymphonyRemastered.Framework.SongSpecifics songInformation;
|
public StardewSymphonyRemastered.Framework.SongSpecifics songInformation;
|
||||||
|
@ -64,6 +65,11 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual bool isPlaying()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Save functionality.
|
/// Save functionality.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -262,5 +262,12 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool isPlaying()
|
||||||
|
{
|
||||||
|
if (this.dynamicSound == null) return false;
|
||||||
|
if (this.dynamicSound.State == SoundState.Playing) return true;
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,6 +175,7 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public override string getNameOfCurrentSong()
|
public override string getNameOfCurrentSong()
|
||||||
{
|
{
|
||||||
|
if (this.currentCue == null) return "";
|
||||||
return this.currentCue.Name;
|
return this.currentCue.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,5 +199,11 @@ namespace StardewSymphonyRemastered.Framework
|
||||||
this.shortenedDirectory = directoryLocation;
|
this.shortenedDirectory = directoryLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool isPlaying()
|
||||||
|
{
|
||||||
|
if (this.currentCue == null) return false;
|
||||||
|
return this.currentCue.IsPlaying;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue