From 2e317c4b993d45ab5f996e91901f858cda4e48c9 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Thu, 3 Dec 2015 20:35:40 +1100 Subject: [PATCH] Add proper sounds, fix block models, remove vertical water on map edges. --- .../2D/Screens/Menu/OptionsScreen.cs | 4 +- ClassicalSharp/Audio/AudioManager.Sounds.cs | 97 --------------- ClassicalSharp/Audio/AudioPlayer.Sounds.cs | 110 ++++++++++++++++++ .../Audio/{AudioManager.cs => AudioPlayer.cs} | 15 +-- ClassicalSharp/Audio/Soundboard.cs | 1 + ClassicalSharp/ClassicalSharp.csproj | 4 +- ClassicalSharp/Commands/CommandManager.cs | 3 +- ClassicalSharp/Entities/LocalPlayer.cs | 2 +- ClassicalSharp/Game/Game.Properties.cs | 2 +- ClassicalSharp/Game/Game.cs | 27 +++-- ClassicalSharp/Game/InputHandler.cs | 2 +- ClassicalSharp/Model/BlockModel.cs | 2 +- ClassicalSharp/Program.cs | 2 +- ClassicalSharp/Properties/AssemblyInfo.cs | 2 +- .../Rendering/MapBordersRenderer.cs | 25 +--- ClassicalSharp/SharpWave.dll | Bin 77824 -> 81920 bytes Launcher2/Gui/Screens/LauncherInputScreen.cs | 2 +- .../Gui/TableWidget/LauncherTableWidget.cs | 4 +- Launcher2/Gui/Widgets/LauncherInputWidget.cs | 11 +- Launcher2/Program.cs | 2 +- Launcher2/Properties/AssemblyInfo.cs | 28 +---- OpenTK/Properties/AssemblyInfo.cs | 2 +- 22 files changed, 164 insertions(+), 183 deletions(-) delete mode 100644 ClassicalSharp/Audio/AudioManager.Sounds.cs create mode 100644 ClassicalSharp/Audio/AudioPlayer.Sounds.cs rename ClassicalSharp/Audio/{AudioManager.cs => AudioPlayer.cs} (84%) diff --git a/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs b/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs index 3bd510599..12d9922f6 100644 --- a/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs @@ -23,7 +23,7 @@ namespace ClassicalSharp { Make( -140, -150, "Use sound (WIP)", Anchor.Centre, OnWidgetClick, g => g.UseSound ? "yes" : "no", (g, v) => { g.UseSound = v == "yes"; - g.AudioManager.SetSound( g.UseSound ); } ), + g.AudioPlayer.SetSound( g.UseSound ); } ), Make( -140, -100, "Show hover names", Anchor.Centre, OnWidgetClick, g => g.Players.ShowHoveredNames ? "yes" : "no", @@ -57,7 +57,7 @@ namespace ClassicalSharp { Make( 140, -150, "Use music", Anchor.Centre, OnWidgetClick, g => g.UseMusic ? "yes" : "no", (g, v) => { g.UseMusic = v == "yes"; - g.AudioManager.SetMusic( g.UseMusic ); + g.AudioPlayer.SetMusic( g.UseMusic ); Options.Set( OptionsKey.UseMusic, v == "yes" ); }), Make( 140, -100, "View bobbing", Anchor.Centre, OnWidgetClick, diff --git a/ClassicalSharp/Audio/AudioManager.Sounds.cs b/ClassicalSharp/Audio/AudioManager.Sounds.cs deleted file mode 100644 index 1309766d5..000000000 --- a/ClassicalSharp/Audio/AudioManager.Sounds.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using System.IO; -using System.Threading; -using OpenTK; -using SharpWave; -using SharpWave.Codecs; -using SharpWave.Codecs.Vorbis; - -namespace ClassicalSharp.Audio { - - public sealed partial class AudioManager { - - Soundboard digBoard, stepBoard; - - public void SetSound( bool enabled ) { - if( enabled ) - InitSound(); - else - DisposeSound(); - } - - void InitSound() { - disposingSound = false; - if( digBoard == null ) - InitSoundboards(); - - digChunk.Data = digBoard.Data; - stepChunk.Data = stepBoard.Data; - soundThread = MakeThread( DoSoundThread, ref soundOut, - "ClassicalSharp.DoSound" ); - } - - object soundLock = new object(); - Sound digSound = null, stepSound = null; - AudioChunk digChunk = new AudioChunk(), - stepChunk = new AudioChunk(); - - void DoSoundThread() { - while( !disposingSound ) { - bool playDig = false, playStep = false; - lock( soundLock ) { - MakeSound( ref digSound, ref playDig, digChunk ); - MakeSound( ref stepSound, ref playStep, stepChunk ); - } - if( playDig ) - soundOut.PlayRaw( digChunk ); - if( playStep ) - soundOut.PlayRaw( stepChunk ); - - if( !(playDig || playStep) ) - Thread.Sleep( 1 ); - } - } - - public void PlayDigSound( SoundType type ) { - PlaySound( type, digBoard, ref digSound ); - } - - public void PlayStepSound( SoundType type ) { - PlaySound( type, stepBoard, ref stepSound ); - } - - void PlaySound( SoundType type, Soundboard board, ref Sound target ) { - if( type == SoundType.None || soundOut == null ) - return; - lock( soundLock ) - target = board.PlayRandomSound( type ); - } - - void MakeSound( ref Sound src, ref bool play, AudioChunk target ) { - if( src == null ) return; - play = true; - - target.Frequency = src.SampleRate; - target.BitsPerSample = src.BitsPerSample; - target.Channels = src.Channels; - - target.BytesOffset = src.Offset; - target.BytesUsed = src.Length; - src = null; - } - - void DisposeSound() { - disposingSound = true; - DisposeOf( ref soundOut, ref soundThread ); - digChunk.Data = null; - stepChunk.Data = null; - } - - void InitSoundboards() { - digBoard = new Soundboard(); - digBoard.Init( "dig" ); - stepBoard = new Soundboard(); - stepBoard.Init( "step" ); - } - } -} diff --git a/ClassicalSharp/Audio/AudioPlayer.Sounds.cs b/ClassicalSharp/Audio/AudioPlayer.Sounds.cs new file mode 100644 index 000000000..b31830b22 --- /dev/null +++ b/ClassicalSharp/Audio/AudioPlayer.Sounds.cs @@ -0,0 +1,110 @@ +using System; +using System.IO; +using System.Threading; +using OpenTK; +using SharpWave; +using SharpWave.Codecs; +using SharpWave.Codecs.Vorbis; + +namespace ClassicalSharp.Audio { + + public sealed partial class AudioPlayer { + + Soundboard digBoard, stepBoard; + const int maxSounds = 10; + Sound[] pending; + int pendingCount; + + public void SetSound( bool enabled ) { + if( enabled ) + InitSound(); + else + DisposeSound(); + } + + void InitSound() { + disposingSound = false; + if( digBoard == null ) + InitSoundboards(); + + soundContainer = new BinContainer( 44100, maxSounds ); + pending = new Sound[maxSounds]; + soundCodec = (BinCodec)soundContainer.GetAudioCodec(); + soundThread = MakeThread( DoSoundThread, ref soundOut, + "ClassicalSharp.DoSound" ); + } + + EventWaitHandle soundHandle = new EventWaitHandle( false, EventResetMode.AutoReset ); + BinContainer soundContainer; + BinCodec soundCodec; + + void DoSoundThread() { + while( !disposingSound ) { + soundHandle.WaitOne(); + if( disposingSound ) break; + + soundOut.PlayStreaming( soundContainer ); + } + } + + public void Tick( double delta ) { + if( pendingCount > 0 ) { + Sound snd = pending[0]; + byte[] data = snd.Metadata == 1 ? digBoard.Data : stepBoard.Data; + + soundCodec.AddSound( data, snd.Offset, snd.Length, snd.Channels ); + RemoveFirstPendingSound(); + soundHandle.Set(); + } + } + + public void PlayDigSound( SoundType type ) { PlaySound( type, digBoard ); } + + public void PlayStepSound( SoundType type ) { PlaySound( type, stepBoard ); } + + void PlaySound( SoundType type, Soundboard board ) { + if( type == SoundType.None || soundOut == null ) + return; + Sound target = board.PlayRandomSound( type ); + target.Metadata = board == digBoard ? (byte)1 : (byte)2; + Console.WriteLine( "ADD " + target.Offset + " : " + target.Length + " : " + target.Channels ); + + if( pendingCount == maxSounds ) + RemoveFirstPendingSound(); + pending[pendingCount++] = target; + } + + void MakeSound( ref Sound src, ref bool play, AudioChunk target ) { + if( src == null ) return; + play = true; + + target.Frequency = src.SampleRate; + target.BitsPerSample = src.BitsPerSample; + target.Channels = src.Channels; + + target.BytesOffset = src.Offset; + target.BytesUsed = src.Length; + src = null; + } + + void RemoveFirstPendingSound() { + for( int i = 1; i < maxSounds - 1; i++ ) + pending[i] = pending[i + 1]; + pending[maxSounds - 1] = null; + pendingCount--; + } + + void DisposeSound() { + disposingSound = true; + soundHandle.Set(); + DisposeOf( ref soundOut, ref soundThread ); + } + + void InitSoundboards() { + digBoard = new Soundboard(); + digBoard.Init( "dig" ); + stepBoard = new Soundboard(); + stepBoard.Init( "step" ); + } + } +} diff --git a/ClassicalSharp/Audio/AudioManager.cs b/ClassicalSharp/Audio/AudioPlayer.cs similarity index 84% rename from ClassicalSharp/Audio/AudioManager.cs rename to ClassicalSharp/Audio/AudioPlayer.cs index fc75966dd..5aa8e8eac 100644 --- a/ClassicalSharp/Audio/AudioManager.cs +++ b/ClassicalSharp/Audio/AudioPlayer.cs @@ -6,16 +6,12 @@ using SharpWave.Codecs.Vorbis; namespace ClassicalSharp.Audio { - public sealed partial class AudioManager { + public sealed partial class AudioPlayer { IAudioOutput musicOut, soundOut; string[] musicFiles; Thread musicThread, soundThread; - public AudioManager() { - musicFiles = Directory.GetFiles( "audio", "*.ogg" ); - } - public void SetMusic( bool enabled ) { if( enabled ) InitMusic(); @@ -24,12 +20,13 @@ namespace ClassicalSharp.Audio { } void InitMusic() { + musicFiles = Directory.GetFiles( "audio", "*.ogg" ); disposingMusic = false; musicThread = MakeThread( DoMusicThread, ref musicOut, "ClassicalSharp.DoMusic" ); } - EventWaitHandle waitHandle = new EventWaitHandle( false, EventResetMode.AutoReset ); + EventWaitHandle musicHandle = new EventWaitHandle( false, EventResetMode.AutoReset ); void DoMusicThread() { Random rnd = new Random(); while( !disposingMusic ) { @@ -42,7 +39,7 @@ namespace ClassicalSharp.Audio { if( disposingMusic ) break; int delay = 2000 * 60 + rnd.Next( 0, 5000 * 60 ); - waitHandle.WaitOne( delay ); + musicHandle.WaitOne( delay ); } } @@ -50,12 +47,12 @@ namespace ClassicalSharp.Audio { public void Dispose() { DisposeMusic(); DisposeSound(); - waitHandle.Close(); + musicHandle.Close(); } void DisposeMusic() { disposingMusic = true; - waitHandle.Set(); + musicHandle.Set(); DisposeOf( ref musicOut, ref musicThread ); } diff --git a/ClassicalSharp/Audio/Soundboard.cs b/ClassicalSharp/Audio/Soundboard.cs index 95de232b0..359e27790 100644 --- a/ClassicalSharp/Audio/Soundboard.cs +++ b/ClassicalSharp/Audio/Soundboard.cs @@ -89,5 +89,6 @@ namespace ClassicalSharp.Audio { public string Name; public int SampleRate, BitsPerSample, Channels; public int Offset, Length; + public byte Metadata; } } diff --git a/ClassicalSharp/ClassicalSharp.csproj b/ClassicalSharp/ClassicalSharp.csproj index 2feb36de6..209e1f062 100644 --- a/ClassicalSharp/ClassicalSharp.csproj +++ b/ClassicalSharp/ClassicalSharp.csproj @@ -126,8 +126,8 @@ - - + + diff --git a/ClassicalSharp/Commands/CommandManager.cs b/ClassicalSharp/Commands/CommandManager.cs index aa5b83d9f..76dd5a804 100644 --- a/ClassicalSharp/Commands/CommandManager.cs +++ b/ClassicalSharp/Commands/CommandManager.cs @@ -7,7 +7,8 @@ namespace ClassicalSharp.Commands { public class CommandManager { public static bool IsCommandPrefix( string input ) { - return Utils.CaselessStarts( input, "/client" ); + return Utils.CaselessStarts( input, "/client " ) || + Utils.CaselessEquals( input, "/client" ); } protected Game game; diff --git a/ClassicalSharp/Entities/LocalPlayer.cs b/ClassicalSharp/Entities/LocalPlayer.cs index 137f477bb..d18ccf715 100644 --- a/ClassicalSharp/Entities/LocalPlayer.cs +++ b/ClassicalSharp/Entities/LocalPlayer.cs @@ -90,7 +90,7 @@ namespace ClassicalSharp { float distSq = (lastSoundPos - soundPos).LengthSquared; if( onGround && distSq > 2 * 2 ) { SoundType type = game.BlockInfo.StepSounds[(int)BlockUnderFeet]; - game.AudioManager.PlayStepSound( type ); + game.AudioPlayer.PlayStepSound( type ); lastSoundPos = soundPos; } } diff --git a/ClassicalSharp/Game/Game.Properties.cs b/ClassicalSharp/Game/Game.Properties.cs index 9696950aa..4ee253377 100644 --- a/ClassicalSharp/Game/Game.Properties.cs +++ b/ClassicalSharp/Game/Game.Properties.cs @@ -76,7 +76,7 @@ namespace ClassicalSharp { public InputHandler InputHandler; public ChatLog Chat; public BlockHandRenderer BlockHandRenderer; - public AudioManager AudioManager; + public AudioPlayer AudioPlayer; /// Account username of the player. public string Username; diff --git a/ClassicalSharp/Game/Game.cs b/ClassicalSharp/Game/Game.cs index e16d48744..f677bd952 100644 --- a/ClassicalSharp/Game/Game.cs +++ b/ClassicalSharp/Game/Game.cs @@ -121,9 +121,9 @@ namespace ClassicalSharp { EnvRenderer.Init(); MapBordersRenderer.Init(); Picking = new PickingRenderer( this ); - AudioManager = new AudioManager(); + AudioPlayer = new AudioPlayer(); UseMusic = Options.GetBool( OptionsKey.UseMusic, false ); - AudioManager.SetMusic( UseMusic ); + AudioPlayer.SetMusic( UseMusic ); LiquidsBreakable = Options.GetBool( OptionsKey.LiquidsBreakable, false ); string connectString = "Connecting to " + IPAddress + ":" + Port + ".."; @@ -150,12 +150,6 @@ namespace ClassicalSharp { get { return activeScreen == null ? hudScreen : activeScreen; } } - const int ticksFrequency = 20; - const double ticksPeriod = 1.0 / ticksFrequency; - const double imageCheckPeriod = 30.0; - const double cameraPeriod = 1.0 / 120.0; - double ticksAccumulator, imageCheckAccumulator, cameraAccumulator; - protected override void OnRenderFrame( FrameEventArgs e ) { PerformFpsElapsed( e.Time * 1000 ); Graphics.BeginFrame( this ); @@ -214,10 +208,18 @@ namespace ClassicalSharp { Graphics.EndFrame( this ); } + const int ticksFrequency = 20; + const double ticksPeriod = 1.0 / ticksFrequency; + const double imageCheckPeriod = 30.0; + const double cameraPeriod = 1.0 / 120, audioPeriod = 1.0 / 40; + double ticksAccumulator, imageCheckAccumulator, + cameraAccumulator, audioAccumulator; + void CheckScheduledTasks( double time ) { imageCheckAccumulator += time; ticksAccumulator += time; cameraAccumulator += time; + audioAccumulator += time; if( imageCheckAccumulator > imageCheckPeriod ) { imageCheckAccumulator -= imageCheckPeriod; @@ -230,14 +232,19 @@ namespace ClassicalSharp { Players.Tick( ticksPeriod ); ParticleManager.Tick( ticksPeriod ); Animations.Tick( ticksPeriod ); + AudioPlayer.Tick( ticksPeriod ); ticksThisFrame++; ticksAccumulator -= ticksPeriod; } while( cameraAccumulator >= cameraPeriod ) { - Camera.Tick( ticksPeriod ); + Camera.Tick( cameraPeriod ); cameraAccumulator -= cameraPeriod; } + while( audioAccumulator >= audioPeriod ) { + AudioPlayer.Tick( audioPeriod ); + audioAccumulator -= audioPeriod; + } if( ticksThisFrame > ticksFrequency / 3 ) Utils.LogDebug( "Falling behind (did {0} ticks this frame)", ticksThisFrame ); @@ -398,7 +405,7 @@ namespace ClassicalSharp { ParticleManager.Dispose(); Players.Dispose(); AsyncDownloader.Dispose(); - AudioManager.Dispose(); + AudioPlayer.Dispose(); Chat.Dispose(); if( activeScreen != null ) diff --git a/ClassicalSharp/Game/InputHandler.cs b/ClassicalSharp/Game/InputHandler.cs index ea9110ec2..99ef31015 100644 --- a/ClassicalSharp/Game/InputHandler.cs +++ b/ClassicalSharp/Game/InputHandler.cs @@ -94,7 +94,7 @@ namespace ClassicalSharp { if( game.Map.IsValidPos( pos ) && (block = game.Map.GetBlock( pos )) != 0 && inv.CanDelete[block] ) { game.ParticleManager.BreakBlockEffect( pos, block ); - game.AudioManager.PlayDigSound( game.BlockInfo.DigSounds[block] ); + game.AudioPlayer.PlayDigSound( game.BlockInfo.DigSounds[block] ); game.UpdateBlock( pos.X, pos.Y, pos.Z, 0 ); game.Network.SendSetBlock( pos.X, pos.Y, pos.Z, false, (byte)inv.HeldBlock ); } diff --git a/ClassicalSharp/Model/BlockModel.cs b/ClassicalSharp/Model/BlockModel.cs index 42220b504..bcce00bb4 100644 --- a/ClassicalSharp/Model/BlockModel.cs +++ b/ClassicalSharp/Model/BlockModel.cs @@ -185,7 +185,7 @@ namespace ClassicalSharp.Model { void TransformVertices() { for( int i = 0; i < index; i++ ) { VertexPos3fTex2fCol4b vertex = cache.vertices[i]; - Vector3 newPos = new Vector3( vertex.X, vertex.Y, vertex.Z ) + pos;//Utils.RotateY( vertex.X, vertex.Y, vertex.Z, cosA, sinA ) + pos; + Vector3 newPos = Utils.RotateY( vertex.X, vertex.Y, vertex.Z, cosA, sinA ) + pos; vertex.X = newPos.X; vertex.Y = newPos.Y; vertex.Z = newPos.Z; cache.vertices[i] = vertex; } diff --git a/ClassicalSharp/Program.cs b/ClassicalSharp/Program.cs index 9a468f680..8ee32d2bd 100644 --- a/ClassicalSharp/Program.cs +++ b/ClassicalSharp/Program.cs @@ -7,7 +7,7 @@ namespace ClassicalSharp { internal static class Program { - public const string AppName = "ClassicalSharp 0.98"; + public const string AppName = "ClassicalSharp 0.98.1"; [STAThread] static void Main( string[] args ) { diff --git a/ClassicalSharp/Properties/AssemblyInfo.cs b/ClassicalSharp/Properties/AssemblyInfo.cs index 063ba3037..cb5ea8d93 100644 --- a/ClassicalSharp/Properties/AssemblyInfo.cs +++ b/ClassicalSharp/Properties/AssemblyInfo.cs @@ -10,4 +10,4 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("0.95")] +[assembly: AssemblyVersion("0.98.1")] diff --git a/ClassicalSharp/Rendering/MapBordersRenderer.cs b/ClassicalSharp/Rendering/MapBordersRenderer.cs index c61f5bb8a..83dd964f9 100644 --- a/ClassicalSharp/Rendering/MapBordersRenderer.cs +++ b/ClassicalSharp/Rendering/MapBordersRenderer.cs @@ -20,8 +20,7 @@ namespace ClassicalSharp { int sidesVb = -1, edgesVb = -1; int edgeTexId, sideTexId; - int sidesVertices, edgesVertices, - edgesBaseVertices, edgesVerVertices; + int sidesVertices, edgesVertices; bool legacy, fullColSides, fullColEdge; public void SetUseLegacyMode( bool legacy ) { @@ -60,12 +59,8 @@ namespace ClassicalSharp { // Fixes some 'depth bleeding through' issues with 16 bit depth buffers on large maps. Vector3 eyePos = game.LocalPlayer.EyePosition; float yVisible = Math.Min( 0, map.SidesHeight ); - if( game.Map.EdgeBlock != Block.Air ) { - if( game.Camera.GetCameraPos( eyePos ).Y >= yVisible ) { - graphics.DrawIndexedVb_TrisT2fC4b( edgesVertices * 6 / 4, 0 ); - } else { - graphics.DrawIndexedVb_TrisT2fC4b( edgesVerVertices * 6 / 4, edgesBaseVertices * 6 / 4 ); - } + if( game.Map.EdgeBlock != Block.Air && game.Camera.GetCameraPos( eyePos ).Y >= yVisible ) { + graphics.DrawIndexedVb_TrisT2fC4b( edgesVertices * 6 / 4, 0 ); } graphics.AlphaBlending = false; graphics.Texturing = false; @@ -168,12 +163,6 @@ namespace ClassicalSharp { foreach( Rectangle rec in rects ) { edgesVertices += Utils.CountVertices( rec.Width, rec.Height, axisSize ); // YPlanes outside } - edgesBaseVertices = edgesVertices; - if( waterLevel >= 0 ) { - edgesVertices += 2 * Utils.CountVertices( map.Width, 2, axisSize ); // ZPlanes - edgesVertices += 2 * Utils.CountVertices( map.Length, 2, axisSize ); // XPlanes - } - edgesVerVertices = edgesVertices - edgesBaseVertices; VertexPos3fTex2fCol4b* vertices = stackalloc VertexPos3fTex2fCol4b[edgesVertices]; IntPtr ptr = (IntPtr)vertices; @@ -182,14 +171,6 @@ namespace ClassicalSharp { foreach( Rectangle rec in rects ) { DrawY( rec.X, rec.Y, rec.X + rec.Width, rec.Y + rec.Height, waterLevel, axisSize, col, ref vertices ); } - - col = fullColEdge ? FastColour.White : map.SunlightYBottom; - if( waterLevel >= 0 ) { - DrawZ( 0, 0, map.Width, waterLevel - 2, waterLevel, axisSize, col, ref vertices ); - DrawZ( map.Length, 0, map.Width, waterLevel - 2, waterLevel, axisSize, col, ref vertices ); - DrawX( 0, 0, map.Length, waterLevel - 2, waterLevel, axisSize, col, ref vertices ); - DrawX( map.Width, 0, map.Length, waterLevel - 2, waterLevel, axisSize, col, ref vertices ); - } edgesVb = graphics.CreateVb( ptr, VertexFormat.Pos3fTex2fCol4b, edgesVertices ); } diff --git a/ClassicalSharp/SharpWave.dll b/ClassicalSharp/SharpWave.dll index 4e0016ebf1869c47e70395c2071fb8565108e5bc..90660e50ff9a0d7343d4fcd19baab1da28d523f9 100644 GIT binary patch literal 81920 zcmeFa33wdE@i*K%GdstwR?=vt-L+&(@*%VA>abUqt;>=zhs|y9!AgSoHu%76By%on zB+MNfun}N{F~-51IS5DM1OkR|nj{3w5yBC|6-YujlKg>$KmLAIJ+oTLz(3#jJ@4~A z&--FfPgiwyb#--h^*OUgcU~z}A%up%efxyig(v-+#^E;yy-3cl_<6p#*ZTG7U7n+U zJ$lY5%X=!UE%1oE;kf?^=Gbf;ca z*IdDnhAazeyL-A9BhIoxMy9F6Gw0tlNMGB%bX5w3EGuMYx(WNyP0z{pZS-3We5-+P zHSnzlzSY3D8u(TN-)i7n4ScJCZ#D3(2L3P7zyw-X;~%X}72y?c>=dH7SBRl2N22)8 z{ynJl6ba$WAit*c1SzTvMzO%wlxQ)qikiWegBJ6JW4;jmpHR|-NR=Ql3xslkFaeV# znVO0a)a*c7Y6O9`-6(cVPbuQ(w7E&%R2ikY{6`KaoTn5=kxf@rtq0}l886AD$I6v7 z$4a}Kz%+*Hs}odlr=tcXItq-Go+l{>7TubXrcll7&BiMVGcRO;NalHptC22Am?p3@ z<0GWDQHSy~{w%SQCVZqb^Ae$4Xd`6sWU#5=qBh0}VdZ3_#LSC?=ppek2BI-hHbE2T zLvGa4R?>v4%8QmGy$I9+fJMTa$>(P%Q^3!BErZPnB&Zo1Pvy&C8Zx4iB;@7G>wO`= zQsjw3v%177RSrp2Ae{U%m?3KG3aXdhN8#&+8LdE(uTmwzS`h(p>Nx_!2mwu#?qX#V z6agBfW##mq5UX8r4FgxUncT1^smY^z4mCVJYsg_Bu zdoH>vOL=BrbJeaffU%tG?8+yYRw`@Ih1sRf0-|IJ`m1v_-NSa(}XLO-Q=%5Pa#gCKank-(Lj3ZpD zhU1<{AUDA=Zn9eomQL2<l-X7|8L*@# z6A!s;i?2GScNkj5HGI@*~E2tv?p}K1|ikB(a(a1yj43kxp)>s?(^otYjZO zvPrNTf`=rsl8wYqVj(E=KuKzAIdrOSYqAW<&DO$6s*#a+4h~R{`HEvc#rgjlCA1NW zF3Z5Z!@X=pH8ODTaOdm@)eOvBi;aO_=Lp&Q4RAQ<;IKPFrE3uQlr&{h(>HUtlfzpO zrZ$72Obn;4MSMK`9`l!(Yl(*N8907T(bJdFBTc|SI*l-cfddE%tKGbkQwHM=xlH2b zVBqJqc)k*nNudnEikiM1j|^N5#qYpl#EOm#TpWS7Q4$6jDtbLVxTO9}nB%0A%a`lv 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

3tk_S;$vNa%=3UTv>w20n(r|+fIm%V>8sq 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 { - public bool Invert = false; + public bool Invert = true; public abstract int Compare( TableEntry a, TableEntry b ); } @@ -203,7 +203,7 @@ namespace Launcher2 { } } - sealed class UptimeComparer : TableEntryComparer { + sealed class UptimeComparer : TableEntryComparer { public override int Compare( TableEntry a, TableEntry b ) { TimeSpan valX = ParseUptimeString( a.Uptime ); diff --git a/Launcher2/Gui/Widgets/LauncherInputWidget.cs b/Launcher2/Gui/Widgets/LauncherInputWidget.cs index 41a5a9584..bd5febc14 100644 --- a/Launcher2/Gui/Widgets/LauncherInputWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherInputWidget.cs @@ -17,7 +17,7 @@ namespace Launcher2 { public bool Password; ///

Maximum number of characters that the 'Text' field can contain. - public int MaximumTextLength = 32; + public int MaxTextLength = 32; /// Filter applied to text received from the clipboard. Can be null. public Func ClipboardFilter; @@ -53,7 +53,7 @@ namespace Launcher2 { /// Appends a character to the end of the currently entered text. /// true if a redraw is necessary, false otherwise. public bool AppendChar( char c ) { - if( c >= ' ' && c <= '~' && Text.Length < MaximumTextLength ) { + if( c >= ' ' && c <= '~' && Text.Length < MaxTextLength ) { Text += c; return true; } @@ -88,13 +88,12 @@ namespace Launcher2 { /// true if a redraw is necessary, false otherwise. public bool CopyFromClipboard() { string text = Clipboard.GetText(); - if( String.IsNullOrEmpty( text ) - || Text.Length >= MaximumTextLength ) return false; + if( String.IsNullOrEmpty( text ) || Text.Length >= MaxTextLength ) return false; if( ClipboardFilter != null ) text = ClipboardFilter( text ); - if( Text.Length + text.Length > MaximumTextLength ) { - text = text.Substring( 0, MaximumTextLength - Text.Length ); + if( Text.Length + text.Length > MaxTextLength ) { + text = text.Substring( 0, MaxTextLength - Text.Length ); } Text += text; return true; diff --git a/Launcher2/Program.cs b/Launcher2/Program.cs index 025223c9c..f858141fe 100644 --- a/Launcher2/Program.cs +++ b/Launcher2/Program.cs @@ -5,7 +5,7 @@ namespace Launcher2 { internal sealed class Program { - public const string AppName = "ClassicalSharp Launcher 0.98"; + public const string AppName = "ClassicalSharp Launcher 0.98.1"; [STAThread] static void Main( string[] args ) { diff --git a/Launcher2/Properties/AssemblyInfo.cs b/Launcher2/Properties/AssemblyInfo.cs index 9ea91a1b5..ae8fcdbb0 100644 --- a/Launcher2/Properties/AssemblyInfo.cs +++ b/Launcher2/Properties/AssemblyInfo.cs @@ -1,31 +1,13 @@ -#region Using directives - -using System; -using System.Reflection; +using System.Reflection; using System.Runtime.InteropServices; -#endregion - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Launcher2")] +[assembly: AssemblyTitle("ClassicalSharp Launcher")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Launcher2")] -[assembly: AssemblyCopyright("Copyright 2015")] +[assembly: AssemblyProduct("ClassicalSharp Launcher")] +[assembly: AssemblyCopyright("Copyright 2014 - 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] - -// This sets the default COM visibility of types in the assembly to invisible. -// If you need to expose a type to COM, use [ComVisible(true)] on that type. [assembly: ComVisible(false)] - -// The assembly version has following format : -// -// Major.Minor.Build.Revision -// -// You can specify all the values or you can use the default the Revision and -// Build Numbers by using the '*' as shown below: -[assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.98.1")] diff --git a/OpenTK/Properties/AssemblyInfo.cs b/OpenTK/Properties/AssemblyInfo.cs index ce67e7507..fbdc2d2d7 100644 --- a/OpenTK/Properties/AssemblyInfo.cs +++ b/OpenTK/Properties/AssemblyInfo.cs @@ -9,4 +9,4 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("OpenTK")] [assembly: System.Security.AllowPartiallyTrustedCallers] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("0.95")] \ No newline at end of file +[assembly: AssemblyVersion("0.98.1")] \ No newline at end of file