mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-17 19:45:23 -04:00
Fix problems from last commit
This commit is contained in:
parent
36c425906f
commit
1e6bcd5306
@ -1,84 +1,72 @@
|
||||
// Copyright 2014-2017 ClassicalSharp | Licensed under BSD-3
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using OpenTK.Input;
|
||||
|
||||
namespace ClassicalSharp.Gui {
|
||||
public delegate void ClickHandler(Game g, Widget w);
|
||||
|
||||
public abstract class GuiElement : IDisposable {
|
||||
|
||||
protected Game game;
|
||||
public GuiElement(Game game) { this.game = game; }
|
||||
|
||||
public abstract void Init();
|
||||
|
||||
public abstract void Render(double delta);
|
||||
|
||||
public abstract void Dispose();
|
||||
|
||||
/// <summary> Causes the gui element to recreate all of its sub-elements and/or textures. </summary>
|
||||
/// <remarks> Typically used when bitmap font changes. </remarks>
|
||||
public virtual void Recreate() { Dispose(); Init(); }
|
||||
|
||||
public virtual bool HandlesKeyDown(Key key) { return false; }
|
||||
|
||||
public virtual bool HandlesKeyPress(char key) { return false; }
|
||||
|
||||
public virtual bool HandlesKeyUp(Key key) { return false; }
|
||||
|
||||
public virtual bool HandlesMouseDown(int mouseX, int mouseY, MouseButton button) { return false; }
|
||||
|
||||
public virtual bool HandlesMouseMove(int mouseX, int mouseY) { return false; }
|
||||
|
||||
public virtual bool HandlesMouseScroll(float delta) { return false; }
|
||||
|
||||
public virtual bool HandlesMouseUp(int mouseX, int mouseY, MouseButton button) { return false; }
|
||||
|
||||
protected static int CalcPos(Anchor anchor, int offset, int size, int axisLen) {
|
||||
if (anchor == Anchor.Min) return offset;
|
||||
if (anchor == Anchor.Max) return axisLen - size - offset;
|
||||
return (axisLen - size) / 2 + offset;
|
||||
}
|
||||
|
||||
public static bool Contains(int recX, int recY, int width, int height, int x, int y) {
|
||||
return x >= recX && y >= recY && x < recX + width && y < recY + height;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Represents a container of widgets and other 2D elements. </summary>
|
||||
/// <remarks> May cover the entire game window. </remarks>
|
||||
public abstract class Screen : GuiElement {
|
||||
|
||||
public Screen(Game game) : base(game) { }
|
||||
|
||||
public bool HandlesAllInput, BlocksWorld, HidesHud, RenderHudOver;
|
||||
|
||||
public abstract void OnResize();
|
||||
|
||||
protected abstract void ContextLost();
|
||||
|
||||
protected abstract void ContextRecreated();
|
||||
}
|
||||
|
||||
/// <summary> Represents an individual 2D gui component. </summary>
|
||||
public abstract class Widget : GuiElement {
|
||||
|
||||
public Widget(Game game) : base(game) { }
|
||||
|
||||
public ClickHandler MenuClick;
|
||||
public bool Active, Disabled;
|
||||
public int X, Y, Width, Height;
|
||||
public Anchor HorizontalAnchor, VerticalAnchor;
|
||||
public int XOffset, YOffset;
|
||||
|
||||
public virtual void Reposition() {
|
||||
X = CalcPos(HorizontalAnchor, XOffset, Width, game.Width);
|
||||
Y = CalcPos(VerticalAnchor, YOffset, Height, game.Height);
|
||||
}
|
||||
|
||||
public bool Contains(int x, int y) {
|
||||
return GuiElement.Contains(X, Y, Width, Height, x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Copyright 2014-2017 ClassicalSharp | Licensed under BSD-3
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using OpenTK.Input;
|
||||
|
||||
namespace ClassicalSharp.Gui {
|
||||
public delegate void ClickHandler(Game g, Widget w);
|
||||
|
||||
public abstract class GuiElement : IDisposable {
|
||||
public GuiElement(Game game) { this.game = game; }
|
||||
protected Game game;
|
||||
|
||||
public abstract void Init();
|
||||
public abstract void Render(double delta);
|
||||
public abstract void Dispose();
|
||||
|
||||
/// <summary> Causes the gui element to recreate all of its sub-elements and/or textures. </summary>
|
||||
/// <remarks> Typically used when bitmap font changes. </remarks>
|
||||
public virtual void Recreate() { Dispose(); Init(); }
|
||||
|
||||
public virtual bool HandlesKeyDown(Key key) { return false; }
|
||||
public virtual bool HandlesKeyPress(char key) { return false; }
|
||||
public virtual bool HandlesKeyUp(Key key) { return false; }
|
||||
|
||||
public virtual bool HandlesMouseDown(int mouseX, int mouseY, MouseButton button) { return false; }
|
||||
public virtual bool HandlesMouseMove(int mouseX, int mouseY) { return false; }
|
||||
public virtual bool HandlesMouseScroll(float delta) { return false; }
|
||||
public virtual bool HandlesMouseUp(int mouseX, int mouseY, MouseButton button) { return false; }
|
||||
|
||||
protected static int CalcPos(Anchor anchor, int offset, int size, int axisLen) {
|
||||
if (anchor == Anchor.Min) return offset;
|
||||
if (anchor == Anchor.Max) return axisLen - size - offset;
|
||||
return (axisLen - size) / 2 + offset;
|
||||
}
|
||||
|
||||
public static bool Contains(int recX, int recY, int width, int height, int x, int y) {
|
||||
return x >= recX && y >= recY && x < recX + width && y < recY + height;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Represents a container of widgets and other 2D elements. </summary>
|
||||
/// <remarks> May cover the entire game window. </remarks>
|
||||
public abstract class Screen : GuiElement {
|
||||
public Screen(Game game) : base(game) { }
|
||||
|
||||
public bool HandlesAllInput, BlocksWorld, HidesHud, RenderHudOver;
|
||||
|
||||
public abstract void OnResize();
|
||||
protected abstract void ContextLost();
|
||||
protected abstract void ContextRecreated();
|
||||
}
|
||||
|
||||
/// <summary> Represents an individual 2D gui component. </summary>
|
||||
public abstract class Widget : GuiElement {
|
||||
public Widget(Game game) : base(game) { }
|
||||
|
||||
public ClickHandler MenuClick;
|
||||
public bool Active, Disabled;
|
||||
public int X, Y, Width, Height;
|
||||
public Anchor HorizontalAnchor, VerticalAnchor;
|
||||
public int XOffset, YOffset;
|
||||
|
||||
public virtual void Reposition() {
|
||||
X = CalcPos(HorizontalAnchor, XOffset, Width, game.Width);
|
||||
Y = CalcPos(VerticalAnchor, YOffset, Height, game.Height);
|
||||
}
|
||||
|
||||
public bool Contains(int x, int y) {
|
||||
return GuiElement.Contains(X, Y, Width, Height, x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ namespace ClassicalSharp.Audio {
|
||||
if (type == SoundType.Metal) format.SampleRate = (format.SampleRate * 6) / 5;
|
||||
else format.SampleRate = (format.SampleRate * 4) / 5;
|
||||
} else {
|
||||
volume *= 0.50f;
|
||||
volume *= 0.50f;
|
||||
if (type == SoundType.Metal) format.SampleRate = (format.SampleRate * 7) / 5;
|
||||
}
|
||||
|
||||
@ -74,8 +74,9 @@ namespace ClassicalSharp.Audio {
|
||||
for (int i = 0; i < monoOutputs.Length; i++) {
|
||||
IAudioOutput output = outputs[i];
|
||||
if (output == null) {
|
||||
outputs[i] = GetPlatformOut();
|
||||
output = outputs[i];
|
||||
output = GetPlatformOut();
|
||||
output.Create(1);
|
||||
outputs[i] = output;
|
||||
}
|
||||
|
||||
if (!output.IsFinished()) continue;
|
||||
@ -95,14 +96,6 @@ namespace ClassicalSharp.Audio {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
IAudioOutput MakeSoundOutput(IAudioOutput[] outputs, int i) {
|
||||
IAudioOutput output = GetPlatformOut();
|
||||
output.Create(1);
|
||||
outputs[i] = output;
|
||||
return output;
|
||||
}
|
||||
|
||||
void PlaySound(IAudioOutput output, float volume) {
|
||||
try {
|
||||
output.SetVolume(volume);
|
||||
|
@ -85,10 +85,13 @@ namespace ClassicalSharp.Audio {
|
||||
musicOut.PlayStreaming(container);
|
||||
} catch (InvalidOperationException ex) {
|
||||
HandleMusicError(ex);
|
||||
try { musicOut.Dispose(); } catch { }
|
||||
return;
|
||||
} catch (Exception ex) {
|
||||
ErrorHandler.LogError("AudioPlayer.DoMusicThread()", ex);
|
||||
game.Chat.Add("&cError while trying to play music file " + file);
|
||||
try { musicOut.Dispose(); } catch { }
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (disposingMusic) break;
|
||||
@ -120,6 +123,7 @@ namespace ClassicalSharp.Audio {
|
||||
void DisposeMusic() {
|
||||
disposingMusic = true;
|
||||
musicHandle.Set();
|
||||
|
||||
DisposeOf(ref musicOut, ref musicThread);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user