#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 . #endregion using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Drawing; using VocaluxeLib.Draw; using VocaluxeLib.Game; using VocaluxeLib.Menu; using VocaluxeLib.Profile; using VocaluxeLib.Songs; namespace VocaluxeLib { public delegate void OnSongMenuChanged(); public interface IConfig { EOffOn GetSaveModifiedSongs(); void SetBackgroundMusicVolume(int newVolume); int GetMusicVolume(EMusicType type); EBackgroundMusicOffOn GetBackgroundMusicStatus(); int GetPreviewMusicVolume(); EOffOn GetVideosToBackground(); EOffOn GetVideoBackgrounds(); EOffOn GetVideoPreview(); ESongMenu GetSongMenuType(); EHighscoreStyle GetHighscoreStyle(); EOffOn GetDrawNoteLines(); EOffOn GetDrawToneHelper(); EOffOn GetTileCaption(); int GetCoverSize(); IEnumerable GetSongFolders(); ESongSorting GetSongSorting(); EOffOn GetTabs(); EOffOn GetAutoplayPreviews(); int GetAutoplayPreviewDelay(); EOffOn GetIgnoreArticles(); bool IsMicConfigured(int playerNr); int GetMaxNumMics(); void AddSongMenuListener(OnSongMenuChanged onSongMenuChanged); void RemoveSongMenuListener(OnSongMenuChanged onSongMenuChanged); } public interface ISettings { int GetRenderW(); int GetRenderH(); SRectF GetRenderRect(); bool IsTabNavigation(); float GetZFar(); float GetZNear(); EProgramState GetProgramState(); int GetToneMin(); int GetToneMax(); int GetNumNoteLines(); int GetMaxNumPlayer(); int GetMaxNumScreens(); float GetDefaultMedleyFadeInTime(); float GetDefaultMedleyFadeOutTime(); int GetMedleyMinSeriesLength(); float GetMedleyMinDuration(); string GetFolderProfiles(); string GetDataPath(); float GetSlideShowImageTime(); float GetSlideShowFadeTime(); float GetSoundPlayerFadeTime(); } public interface IThemes { string GetThemeScreensPath(int partyModeId); CTextureRef GetSkinTexture(string textureName, int partyModeId); CVideoStream GetSkinVideo(string videoName, int partyModeId, bool loop); bool GetColor(string colorName, int partyModeId, out SColorF color); SColorF GetPlayerColor(int playerNr); void Reload(); } public interface IBackgroundMusic { bool IsDisabled(); bool IsPlaying(); bool IsPlayingPreview(); bool SongHasVideo(); bool VideoEnabled(); float GetLength(); void SetDisabled(bool disabled); void Next(); void Previous(); void Pause(); void Play(); void Stop(); CTextureRef GetVideoTexture(); void LoadPreview(CSong song, float start = -1f); void StopPreview(); void SetPlayingPreview(bool playPreview); } public interface IDrawing { void DrawTexture(CTextureRef texture, SRectF rect); void DrawTexture(CTextureRef texture, SRectF rect, SColorF color, bool allMonitors = true); void DrawTexture(CTextureRef texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false, bool allMonitors = true); void DrawTexture(CTextureRef textureRef, SRectF bounds, EAspect aspect); void DrawTexture(CTextureRef textureRef, SRectF bounds, EAspect aspect, SColorF color); void DrawTextureReflection(CTextureRef texture, SRectF rect, SColorF color, SRectF bounds, float reflectionSpace, float reflectionHeight, bool allMonitors = true); CTextureRef AddTexture(string fileName); CTextureRef EnqueueTexture(string fileName); void RemoveTexture(ref CTextureRef texture); void DrawRect(SColorF color, SRectF rect, bool allMonitors = true); void DrawRectReflection(SColorF color, SRectF rect, float space, float height); void PushTransform(float scale, float centerX, float centerY, float offsetY, float alpha); void PopTransform(); } public interface IGraphics { void ReloadTheme(); void SaveTheme(); void FadeTo(EScreen nextScreen); void FadeTo(IMenu nextScreen); float GetGlobalAlpha(); IMenu GetNextScreen(); EScreen GetNextScreenType(); IMenu GetScreen(EScreen screen); } public interface IFonts { RectangleF GetTextBounds(CText text); void DrawText(string text, CFont font, float x, float y, float z, SColorF color, bool allMonitors = true); void DrawTextReflection(string text, CFont font, float x, float y, float z, SColorF color, float reflectionSpace, float reflectionHeight); void DrawText(string text, CFont font, float x, float y, float z, SColorF color, float begin, float end); } public interface ILanguage { string Translate(string keyWord); string Translate(string keyWord, int partyModeId); bool TranslationExists(string keyWord); } public interface IGame { int GetNumPlayer(); void SetNumPlayer(int numPlayer); SPlayer[] GetPlayers(); CPoints GetPoints(); int GetCurrentBeat(); float GetMidRecordedBeat(); int GetRecordedBeat(); int GetRandom(int max); double GetRandomDouble(); float GetTimeFromBeats(float beat, float bpm); float GetBeatFromTime(float time, float bpm, float gap); void AddSong(int songId, EGameMode gameMode); void AddSong(int songId, EGameMode gameMode, EAudioMode audioMode); void Reset(); void ClearSongs(); int GetNumSongs(); CSong GetSong(); CSong GetSong(int round); } public interface IRecording { int GetToneAbs(int player); void AnalyzeBuffer(int player); float GetMaxVolume(int player); float[] ToneWeigth(int player); bool Start(); bool Stop(); } public interface IProfiles { CProfile[] GetProfiles(); int GetNum(); EGameDifficulty GetDifficulty(Guid profileId); string GetPlayerName(Guid profileId, int playerNum = 0); CTextureRef GetAvatar(Guid profileId); CAvatar GetAvatarByFilename(string fileName); bool IsProfileIdValid(Guid profileId); bool IsGuest(Guid profileId); void AddProfileChangedCallback(ProfileChangedCallback notification); } public interface ISongs { int GetNumSongs(); int GetNumSongsVisible(); int GetNumCategories(); int GetNumSongsInCategory(int categoryIndex); int GetNumSongsNotSungInCategory(int categoryIndex); bool IsInCategory(); int GetCurrentCategoryIndex(); EOffOn GetTabs(); string GetSearchFilter(); void SetCategory(int categoryIndex); void UpdateRandomSongList(); CSong GetVisibleSong(int visibleIndex); CSong GetSongById(int songId); ReadOnlyCollection GetSongs(); ReadOnlyCollection GetVisibleSongs(); CCategory GetCategory(int index); void AddPartySongSung(int songId); void ResetSongSung(int catIndex = -1); void SortSongs(ESongSorting sorting, EOffOn tabs, EOffOn ignoreArticles, String searchString, EDuetOptions duetOptions, int playlistId); void NextCategory(); void PrevCategory(); } public interface IVideo { CVideoStream Load(string videoFileName); bool Skip(CVideoStream stream, float startPosition, float videoGap); bool GetFrame(CVideoStream stream, float time); bool IsFinished(CVideoStream stream); void Close(ref CVideoStream stream); void SetLoop(CVideoStream stream, bool loop = true); void Resume(CVideoStream stream); void Pause(CVideoStream stream); } public interface ISound { int Load(string soundFile, bool loop = false, bool prescan = false); void SetPosition(int streamId, float newPosition); void Play(int streamId); void Fade(int streamId, int targetVolume, float duration, EStreamAction afterFadeAction = EStreamAction.Nothing); void Close(int streamId); bool IsFinished(int streamId); float GetPosition(int streamId); float GetLength(int streamId); void SetStreamVolume(int streamId, int volume); void SetGlobalVolume(int volume); bool IsPaused(int streamId); void SetLoop(int streamId, bool loop); } public interface ICover { CTextureRef GetNoCover(); CTextureRef GenerateCover(string text, ECoverGeneratorType type, CSong firstSong); } public interface IDataBase { bool GetCover(string fileName, ref CTextureRef texture, int coverSize); bool GetDataBaseSongInfos(string artist, string title, out int numPlayed, out DateTime dateAdded, out int highscoreId); } public interface IControllers { void SetRumble(float duration); } public interface IPlaylist { bool Exists(int playlistId); string GetName(int playlistId); List GetIds(); List GetNames(); void SetName(int playlistId, string name); void Delete(int playlistId); void Save(int playlistId); int GetNumPlaylists(); void AddSong(int playlistId, int songId); void AddSong(int playlistId, int songId, EGameMode gameMode); void InsertSong(int playlistId, int positionIndex, int songId, EGameMode gameMode); void MoveSong(int playlistId, int sourceIndex, int destIndex); void MoveSongDown(int playlistId, int songIndex); void MoveSongUp(int playlistId, int songIndex); void DeleteSong(int playlistId, int songIndex); int GetSongCount(int playlistId); CPlaylistSong GetSong(int playlistId, int songIndex); bool ContainsSong(int playlistId, int songIndex); } public interface IPreviewPlayer { void Play(float start = -1); void Load(CSong song, float start = 0f); void Stop(); void TogglePause(); CTextureRef GetCover(); CTextureRef GetVideoTexture(); bool IsPlaying(); float GetLength(); } }