240 lines
7.3 KiB
C#
240 lines
7.3 KiB
C#
|
|
using System.Collections.Generic;
|
|||
|
|
|
|||
|
|
public class BPMGroupModel
|
|||
|
|
{
|
|||
|
|
/*
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD>дΪ<EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ
|
|||
|
|
* ֻ<EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>༭
|
|||
|
|
* Ϊ<EFBFBD>˱<EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ԥ<EFBFBD>ƻ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>½ӿ<EFBFBD><EFBFBD>ṩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>,<2C><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,keyΪ<79><CEAA>ʼʱ<CABC><CAB1>,valueΪĿ<CEAA><C4BF>BPMֵ
|
|||
|
|
/// </summary>
|
|||
|
|
private SortedDictionary<int, SortedList<float , float>> BPMData;
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
private SortedDictionary<int, BPMGroup> BPMGroupList;
|
|||
|
|
|
|||
|
|
private float noteStream;
|
|||
|
|
private float baseSpeed;
|
|||
|
|
private float baseBPM;
|
|||
|
|
private float trackLength;
|
|||
|
|
|
|||
|
|
public BPMGroupModel(float noteStream, float baseSpeed, float baseBPM, float trackLength)
|
|||
|
|
{
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
this.noteStream = noteStream;
|
|||
|
|
this.baseSpeed = baseSpeed;
|
|||
|
|
this.baseBPM = baseBPM;
|
|||
|
|
this.trackLength = trackLength;
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>ʱ,<2C>ᴴ<EFBFBD><E1B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ֵ<EFBFBD>
|
|||
|
|
BPMData = new SortedDictionary<int, SortedList<float, float>>();
|
|||
|
|
BPMGroupList = new SortedDictionary<int, BPMGroup>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>BPM<50><4D><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>,<2C><><EFBFBD><EFBFBD>Chart<72>Ĺ淶,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public List<BPMListItem> GetDataObject()
|
|||
|
|
{
|
|||
|
|
var list = new List<BPMListItem>();
|
|||
|
|
|
|||
|
|
foreach (var item in BPMData)
|
|||
|
|
{
|
|||
|
|
var valuePairs = item.Value;
|
|||
|
|
|
|||
|
|
foreach (var pair in valuePairs)
|
|||
|
|
{
|
|||
|
|
var bpmItem = new BPMListItem(pair.Key, pair.Value, item.Key);
|
|||
|
|
list.Add(bpmItem);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return list;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>з<EFBFBD><D0B7><EFBFBD>Chart<72>淶<EFBFBD><E6B7B6><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void ReadDataObject(List<BPMListItem> list)
|
|||
|
|
{
|
|||
|
|
var testList = new List<BPMListItem>();
|
|||
|
|
|
|||
|
|
foreach (var item in list)
|
|||
|
|
{
|
|||
|
|
CreateNewBPMGroup(item.number, item.startTime, item.bpm);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void CreateNewBPMGroup(int groupNum, float startTime, float currentBPM)
|
|||
|
|
{
|
|||
|
|
if (BPMData.TryGetValue(groupNum, out var valuePairs))
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾͵<CBBE><CDB5>ñ༭<C3B1><E0BCAD><EFBFBD><EFBFBD>,<2C><>Ϊÿ<CEAA>γ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ŀʱ<C4BF>ö<EFBFBD><C3B6><EFBFBD>Ĭ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>Ĭ<EFBFBD>϶<EFBFBD><CFB6><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫע<D2AA><D7A2>
|
|||
|
|
if (valuePairs.ContainsKey(startTime))
|
|||
|
|
{
|
|||
|
|
EditBPMGroup(groupNum, startTime, currentBPM);
|
|||
|
|
return;// <20>༭<EFBFBD><E0BCAD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
|
|||
|
|
}
|
|||
|
|
valuePairs.Add(startTime, currentBPM);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
BPMData[groupNum] = new SortedList<float, float>
|
|||
|
|
{
|
|||
|
|
{ startTime, currentBPM }
|
|||
|
|
};
|
|||
|
|
//<2F><><EFBFBD>ﻹ<EFBFBD><EFBBB9>Ҫ<EFBFBD><D2AA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>BPMGroupList<73><74>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BPMGroup<75><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
|
|||
|
|
var group = new BPMGroup( currentBPM, groupNum, noteStream, baseSpeed, baseBPM, trackLength);
|
|||
|
|
BPMGroupList.Add(groupNum, group);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void DeleteBPMGroup(int groupNum, float startTime)
|
|||
|
|
{
|
|||
|
|
if (BPMData.TryGetValue(groupNum, out var valuePairs))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if (!valuePairs.ContainsKey(startTime))
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
valuePairs.Remove(startTime);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD>м<EFBFBD><D0BC><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>б<EFBFBD><D0B1>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>,ֱ<><D6B1><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (valuePairs.Count == 0)
|
|||
|
|
{
|
|||
|
|
DeleteNewBPMGroupIndex(groupNum);
|
|||
|
|
}
|
|||
|
|
//<2F><><EFBFBD>ﲹ<EFBFBD><EFB2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>,<2C><>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵı<DAB5><C4B1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void DeleteNewBPMGroupIndex(int groupNum)
|
|||
|
|
{
|
|||
|
|
if (!BPMData.ContainsKey(groupNum))
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
BPMData.Remove(groupNum);
|
|||
|
|
BPMGroupList.Remove(groupNum);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б༭
|
|||
|
|
/// </summary>
|
|||
|
|
public void EditBPMGroup(int groupNum, float startTime, float newBPM)
|
|||
|
|
{
|
|||
|
|
//<2F><>Ԥ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ༭<DAB1><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>µ<EFBFBD>,<2C>ú<EFBFBD><C3BA><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>е<EFBFBD><D0B5><EFBFBD>
|
|||
|
|
if (BPMData.TryGetValue(groupNum, out var valuePairs))
|
|||
|
|
{
|
|||
|
|
if (!valuePairs.ContainsKey(startTime))
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
valuePairs[startTime] = newBPM;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>Ƿ<EFBFBD><C7B7><EFBFBD>ѯ
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ѯĿ<D1AF><C4BF>BPMGroup
|
|||
|
|
/// </summary>
|
|||
|
|
public BPMGroup QueryBPMGroup(int groupNum)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
if (BPMGroupList.TryGetValue(groupNum, out var value))
|
|||
|
|
{
|
|||
|
|
return value;
|
|||
|
|
}
|
|||
|
|
else { return null; }
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public bool QueryBPMGroupDataItem(int groupNum, float startTime, float newBPM)
|
|||
|
|
{
|
|||
|
|
if (BPMData.TryGetValue(groupNum, out var valuePairs))
|
|||
|
|
{
|
|||
|
|
if (!valuePairs.ContainsKey(startTime))
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// ÿ<><C3BF>ʱ<EFBFBD><CAB1><EFBFBD>仯ʱ<E4BBAF><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>BPMGroup<75><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>µ<EFBFBD>״̬
|
|||
|
|
/// </summary>
|
|||
|
|
public void UpdateBPMGroup(float currentTime)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>,ʹ<>õ<EFBFBD>ǰʱ<C7B0><CAB1>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>С<EFBFBD>ڵ<EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
foreach (var item in BPMData)
|
|||
|
|
{
|
|||
|
|
var value = FindMin(item.Value, currentTime);
|
|||
|
|
BPMGroupList[item.Key].CurrentBPM = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
private float FindMin(SortedList<float, float> valuePairs, float currentTime)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>,һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>鶼<EFBFBD><E9B6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>ǿ<EFBFBD><C7BF>Խ<EFBFBD><D4BD>ܵ<EFBFBD>,֮<><D6AE><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><D7B6>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>
|
|||
|
|
//<2F><>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
|
float min = 114514;
|
|||
|
|
for (int i = valuePairs.Count - 1; i >= 0; i--)
|
|||
|
|
{
|
|||
|
|
if (valuePairs.Keys[i] < currentTime)
|
|||
|
|
{
|
|||
|
|
min = valuePairs[valuePairs.Keys[i]];
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return min;
|
|||
|
|
}
|
|||
|
|
public List<(int GroupNum, float startTime, float currentBPM)> GetAllBPMDataItem()
|
|||
|
|
{
|
|||
|
|
var list =new List<(int GroupNum,float startTime,float currentBPM)>();
|
|||
|
|
foreach (var BPMDataList in BPMData)
|
|||
|
|
{
|
|||
|
|
foreach (var pair in BPMDataList.Value)
|
|||
|
|
{
|
|||
|
|
list.Add((BPMDataList.Key, pair.Key, pair.Value));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return list;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ڱ༭<DAB1><E0BCAD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><DEB8><EFBFBD>Ϸ<EFBFBD><CFB7>ʼ<EFBFBD><CABC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BPMGroupList,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ֵ
|
|||
|
|
/// </summary>
|
|||
|
|
public void UpdatePlayerSetting(float noteStream, float baseSpeed, float baseBPM, float trackLength)
|
|||
|
|
{
|
|||
|
|
//<2F><EFBFBD><DEB8>ڲ<EFBFBD><DAB2><EFBFBD>ֵ
|
|||
|
|
this.noteStream = noteStream;
|
|||
|
|
this.baseSpeed = baseSpeed;
|
|||
|
|
this.baseBPM = baseBPM;
|
|||
|
|
this.trackLength = trackLength;
|
|||
|
|
foreach (var item in BPMGroupList.Values)
|
|||
|
|
{
|
|||
|
|
item.UpdatePlayerSetting(noteStream, baseSpeed, baseBPM, trackLength);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|