109 lines
4.3 KiB
C#
109 lines
4.3 KiB
C#
using DualScreenDemo;
|
||
using System;
|
||
using System.IO;
|
||
using System.Windows.Markup;
|
||
namespace DBObj
|
||
{
|
||
public class SongData
|
||
{
|
||
private Song basic;
|
||
private Artist A ;
|
||
private Artist B ;
|
||
public bool isPublicSong { get; set; }
|
||
|
||
public PlayState state;
|
||
public SongData(string songNumber, string song, string filename, int humanVoice, bool isPublic)
|
||
{
|
||
basic=new(songNumber,song,"",filename,humanVoice);
|
||
isPublicSong = isPublic;
|
||
}
|
||
public SongData(string songNumber, string song, string artistA, string artistB, string filename, string artistASimplified, string artistBSimplified, string songSimplified, int humanVoice)
|
||
{
|
||
basic=new(songNumber,song,songSimplified,filename,humanVoice);
|
||
A= new Artist(artistA, artistASimplified);
|
||
if(artistB!=null){
|
||
B= new Artist(artistB, artistBSimplified);
|
||
}
|
||
isPublicSong = false;
|
||
}
|
||
public string getNumber() {return basic.getNumber();}
|
||
public string getName(bool IsSimplified=false) { return basic.getName(IsSimplified); }
|
||
public string getName() { return basic.getName();}
|
||
public string getArtist_A(bool IsSimplified) { return A.getName(IsSimplified); }
|
||
public string getArtist_A() { return A.getName();}
|
||
public string getArtist_B(bool IsSimplified) { return B.getName(IsSimplified); }
|
||
public string getArtist_B() { return B.getName();}
|
||
public int getNameLength() { return basic.getName().Length; }
|
||
public string getFileName() {return basic.getFileName();}
|
||
public string next_artist_text()
|
||
{
|
||
return B!=null
|
||
? String.Format("下一首:{0} {1} {2}", A.getName(false), B.getName(false), basic.getName(false))
|
||
: String.Format("下一首:{0} {1}", A.getName(false), basic.getName(false));
|
||
}
|
||
public string artist_text()
|
||
{
|
||
return B!=null
|
||
? $"{A.getName(false)} - {B.getName(false)}"
|
||
: A.getName(false);
|
||
}
|
||
public string name_text()
|
||
{
|
||
return B!=null
|
||
? String.Format("{0} - {1} - {2}", A.getName(false), B.getName(false), basic.getName(false))
|
||
: String.Format("{0} - {1}", A.getName(false), basic.getName(false));
|
||
}
|
||
|
||
public string getFile()
|
||
{
|
||
return FindExistingPath(basic.getFileName());
|
||
}
|
||
private string FindExistingPath(string filename)
|
||
{
|
||
foreach (var server in Utils.Env.GetSongServers())
|
||
{
|
||
Console.WriteLine($"伺服器路徑: '{server}'");
|
||
string fullPath = Path.Combine(server, filename);
|
||
if (File.Exists(fullPath)) return fullPath;
|
||
}
|
||
return null; // 找不到就回原本的 filename,不加路徑
|
||
}
|
||
public Color GetStateColor(){
|
||
Color c = Color.White;
|
||
if (state == PlayState.Played){
|
||
c = Color.Gray;//Color.FromArgb(200, 75, 125); // 播畢顏色:紫紅色
|
||
}else if (state == PlayState.Playing){
|
||
c = Color.LimeGreen;
|
||
}else if (state == PlayState.InsertPlayback){
|
||
c = Color.Gold;
|
||
}
|
||
return c;
|
||
}
|
||
public string GetStateTxt(bool IsSimplified){
|
||
string txt = string.Empty;
|
||
if (state == PlayState.Played) {
|
||
txt = IsSimplified ? "(播毕)" : "(播畢)";
|
||
} else if (state == PlayState.Playing) {
|
||
txt = IsSimplified ? "(播放中)" : "(播放中)";
|
||
} else if (state == PlayState.InsertPlayback) {
|
||
txt = IsSimplified ? "(插播)" : "(插播)";
|
||
}
|
||
return txt;
|
||
}
|
||
public void SetState(PlayState s) => state = s;
|
||
|
||
public PlayState GetState()
|
||
{
|
||
return state;
|
||
}
|
||
|
||
public int getHumanVoice() { return basic.getHumanVoice(); }
|
||
public override string ToString()
|
||
{
|
||
|
||
return B!=null
|
||
? String.Format("{0} - {1} - {2} - {3}", state, A.getName(), B.getName(), basic.getName())
|
||
: String.Format("{0} - {1} - {2}", state, A.getName(), basic.getName());
|
||
}
|
||
}
|
||
} |