#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 VocaluxeWeb.Remote;
namespace VocaluxeWeb
{
/// The only view the webserver has on the game. Implemented by Vocaluxe.
/// Methods marked as main-thread-only must be called through .
public interface IVocaluxeRemote
{
/// Full version text of the running Vocaluxe. Thread-safe.
string Version { get; }
/// False while the game is still loading (songs, playlists). Main thread only.
bool IsReady { get; }
/// Current state of the game. Main thread only.
RemoteState GetState();
#region profiles
/// All profiles, sorted by name. Main thread only.
IList GetProfiles();
/// Creates a profile and returns its id. Main thread only.
Guid CreateProfile(ProfileChange change);
/// Changes the given fields of a profile. Main thread only.
void UpdateProfile(Guid profileId, ProfileChange change);
/// Deletes a profile including its file. Main thread only.
void DeleteProfile(Guid profileId);
/// Avatars that come with Vocaluxe or were put into the profile folder (not the ones uploaded with the WebApp). Main thread only.
IList GetAvatars();
#endregion
#region songs
/// Changes whenever songs are added or (re)loaded. Main thread only.
int SongLibraryVersion { get; }
/// All songs. Main thread only.
IList GetSongs();
#endregion
#region playlists
/// All playlists with their songs. Main thread only.
IList GetPlaylists();
/// Creates an empty playlist and returns its id. Main thread only.
int CreatePlaylist(string name);
/// Main thread only.
void RenamePlaylist(int playlistId, string name);
/// Main thread only.
void DeletePlaylist(int playlistId);
/// Replaces all songs of a playlist and saves it. Main thread only.
void SetPlaylistEntries(int playlistId, IList entries);
#endregion
#region game
/// Starts singing a song with the given players (skipping the player selection if possible). Main thread only.
ERemoteStartResult StartSong(RemoteStartRequest request);
#endregion
#region input
/// Sends a key press to the game as if it came from a keyboard. Thread-safe.
void SendKey(ERemoteKey key);
/// Types text into the game. Thread-safe.
void SendText(string text);
#endregion
}
}