Files
Quentin Bray 6ffa63b923 Apply R# clean-up for reliability (#877)
* Apply R# clean-up for reliability

- Migrate to NUnit4 Assert.That
- Update dependencise versions
- Fix LangVersion to 9.0 (until net core migration)
- Reformat code
- Apply 'var' style (easier for refactoring)
- Remove redundant parentheses
- Add braces on every condition blocks (1 line)
- Uses new null checking patterns
- Uses AutoProperties when possible
- Uses string scalar type instead of class
- Clean usings
- Add .orig files in git ignore
- Rename some properties to respect defined conventions and US format definition
	- ID -> Id
	- BPM -> Bpm
	- Finish -> End

* Update R# settings according to the clean-up made
2026-06-22 19:52:06 +02:00

116 lines
3.0 KiB
C#

#region license
// This file is part of Vocaluxe.
//
// Vocaluxe is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Vocaluxe is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion
using System;
namespace VocaluxeLib.Songs
{
/// <summary>
/// Base class for all note types
/// </summary>
public abstract class CBaseNote
{
private int _Duration = 1;
private int _Tone;
#region Contructors
protected CBaseNote(CBaseNote note)
{
StartBeat = note.StartBeat;
_Duration = note._Duration;
_Tone = note._Tone;
}
protected CBaseNote(int startBeat, int duration, int tone)
{
StartBeat = startBeat;
Duration = duration;
Tone = tone;
if (Duration < 1)
{
throw new Exception("Note to short. All notes should be at least 1 beat long!");
}
}
#endregion Constructors
#region Properties
public int StartBeat { get; set; }
/// <summary>
/// Last beat of this note. First valid beat for a note after that is at EndBeat+1
/// </summary>
public int EndBeat
{
get { return StartBeat + _Duration - 1; }
}
public int Duration
{
get { return _Duration; }
set
{
if (value > 0)
{
_Duration = value;
}
}
}
public int Tone
{
get
{
// Always return 0 for Rap notes
if (IsRapNote)
{
return 0;
}
return _Tone;
}
set
{
if (value >= CBase.Settings.GetToneMin() && value <= CBase.Settings.GetToneMax())
{
_Tone = value;
}
}
}
public int Points
{
get { return PointsForBeat * Duration; }
}
public abstract int PointsForBeat { get; }
public bool IsRapNote
{
get { return IsNoteType(ENoteType.Rap, ENoteType.RapGolden); }
}
public bool IsGoldenNote
{
get { return IsNoteType(ENoteType.Golden, ENoteType.RapGolden); }
}
#endregion Properties
#region Methods
public abstract bool IsNoteType(params ENoteType[] noteTypes);
#endregion Methods
}
}