some cleaning and added volatile keyword

This commit is contained in:
ondra
2014-04-09 16:54:25 +02:00
parent 94f0b4c3e4
commit 7d61de7c61
25 changed files with 172 additions and 146 deletions
@@ -86,7 +86,7 @@ public class DeferredAudio extends BaseDeferredResource {
@Override
protected synchronized final void loadResource(String resource) throws IOException
protected void loadResource(String resource) throws IOException
{
final String ext = FileUtils.getExtension(resource);
@@ -2,7 +2,6 @@ package mightypork.gamecore.audio;
import mightypork.utils.math.Calc;
import mightypork.utils.objects.Mutable;
/**
@@ -12,7 +11,7 @@ import mightypork.utils.objects.Mutable;
*/
public class JointVolume extends Volume {
private final Mutable<Double>[] volumes;
private final Volume[] volumes;
/**
@@ -34,7 +33,7 @@ public class JointVolume extends Volume {
public Double get()
{
double d = super.get();
for (final Mutable<Double> v : volumes)
for (final Volume v : volumes)
d *= v.get();
return Calc.clampd(d, 0, 1);
@@ -84,7 +84,7 @@ public class SoundSystem extends RootBusNode implements Updateable {
@Override
public final void deinit()
public void deinit()
{
for (final DeferredAudio r : resources) {
r.destroy();
@@ -53,7 +53,7 @@ public class AppAdapter implements AppAccess {
@Override
public void shutdown()
public final void shutdown()
{
app.shutdown();
}
@@ -15,7 +15,6 @@ import mightypork.gamecore.gui.screens.ScreenRegistry;
import mightypork.gamecore.input.InputSystem;
import mightypork.gamecore.loading.AsyncResourceLoader;
import mightypork.gamecore.render.DisplaySystem;
import mightypork.rogue.util.SlickLogRedirector;
import mightypork.utils.files.InstanceLock;
import mightypork.utils.logging.Log;
import mightypork.utils.logging.LogInstance;
@@ -22,7 +22,7 @@ public abstract class GameLoop extends AppModule implements MainLoopTaskRequest.
private final Queue<Runnable> taskQueue = new ConcurrentLinkedQueue<>();
private TimerDelta timer;
private Renderable rootRenderable;
private boolean running = true;
private volatile boolean running = true;
/**
@@ -85,14 +85,14 @@ public abstract class GameLoop extends AppModule implements MainLoopTaskRequest.
@Override
protected final void deinit()
protected void deinit()
{
running = false;
}
@Override
public final synchronized void queueTask(Runnable request)
public synchronized void queueTask(Runnable request)
{
taskQueue.add(request);
}
@@ -0,0 +1,72 @@
package mightypork.gamecore.control;
import mightypork.utils.logging.LogInstance;
import org.newdawn.slick.util.LogSystem;
/**
* Used to redirect slick log into main logger.
*
* @author MightyPork
*/
public class SlickLogRedirector implements LogSystem {
LogInstance l;
public SlickLogRedirector(LogInstance log) {
this.l = log;
}
@Override
public void error(String msg, Throwable e)
{
l.e(msg, e);
}
@Override
public void error(Throwable e)
{
l.e(e);
}
@Override
public void error(String msg)
{
l.e(msg);
}
@Override
public void warn(String msg)
{
l.w(msg);
}
@Override
public void warn(String msg, Throwable e)
{
l.e(msg, e);
}
@Override
public void info(String msg)
{
l.i(msg);
}
@Override
public void debug(String msg)
{
l.f3(msg);
}
}
@@ -44,6 +44,7 @@ final public class EventBus implements Destroyable {
*/
public EventBus() {
busThread = new QueuePollingThread();
busThread.setDaemon(true);
busThread.start();
}
@@ -1,4 +1,4 @@
package mightypork.gamecore.input;
package mightypork.gamecore.gui;
/**
@@ -16,14 +16,23 @@ public abstract class Action implements Runnable {
*
* @param enable true to enable
*/
public final void enable(boolean enable)
public void setEnabled(boolean enable)
{
this.enabled = enable;
}
/**
* @return true if this action is enabled.
*/
public boolean isEnabled()
{
return enabled;
}
@Override
public final void run()
public void run()
{
if (enabled) execute();
}
@@ -0,0 +1,12 @@
package mightypork.gamecore.gui;
/**
* Element that can be assigned an action (ie. button);
*
* @author MightyPork
*/
public interface ActionTrigger {
void setAction(Action action);
}
@@ -34,14 +34,14 @@ public abstract class ElementHolder extends BusNode implements PluggableRenderab
@Override
public final void setContext(RectConstraint context)
public void setContext(RectConstraint context)
{
this.context = context;
}
@Override
public final void render()
public void render()
{
for (final Renderable element : elements) {
element.render();
@@ -50,7 +50,7 @@ public abstract class ElementHolder extends BusNode implements PluggableRenderab
@Override
public final Rect getRect()
public Rect getRect()
{
return context.getRect();
}
@@ -70,7 +70,7 @@ public abstract class ElementHolder extends BusNode implements PluggableRenderab
*
* @param elem element; it's context will be set to the constraint.
*/
public final void attach(PluggableRenderable elem)
public void attach(PluggableRenderable elem)
{
if (elem == null) return;
@@ -63,25 +63,25 @@ public class TextPainter extends PluggableRenderer {
}
public final void setColor(RGB color)
public void setColor(RGB color)
{
this.color = color;
}
public final void setAlign(Align align)
public void setAlign(Align align)
{
this.align = align;
}
public final void setText(String text)
public void setText(String text)
{
this.text = new StringWrapper(text);
}
public final void setText(StringProvider text)
public void setText(StringProvider text)
{
this.text = text;
}
+45 -45
View File
@@ -24,8 +24,8 @@ public abstract class Screen extends AppSubModule implements Renderable, KeyBind
private final KeyBindingPool keybindings = new KeyBindingPool();
private boolean active;
private boolean needSetupViewport = false;
private volatile boolean active;
private volatile boolean needSetupViewport = false;
public Screen(AppAccess app) {
@@ -80,6 +80,48 @@ public abstract class Screen extends AppSubModule implements Renderable, KeyBind
}
/**
* @return true if screen is the current screen
*/
public final boolean isActive()
{
return active;
}
@Override
public void receive(ScreenChangeEvent event)
{
if (!isActive()) return;
onSizeChanged(event.getScreenSize());
needSetupViewport = true;
}
@Override
public Rect getRect()
{
return getDisplay().getRect();
}
@Override
public void render()
{
if (!isActive()) return;
if (needSetupViewport) {
Render.setupOrtho();
}
Render.pushState();
renderScreen();
Render.popState();
}
/**
* Called when the screen becomes active
*/
@@ -118,50 +160,8 @@ public abstract class Screen extends AppSubModule implements Renderable, KeyBind
protected abstract void renderScreen();
/**
* @return true if screen is the curretn screen
*/
public final boolean isActive()
{
return active;
}
@Override
public final void receive(ScreenChangeEvent event)
{
if (!isActive()) return;
onSizeChanged(event.getScreenSize());
needSetupViewport = true;
}
@Override
public final Rect getRect()
{
return getDisplay().getRect();
}
@Override
public void render()
{
if (!isActive()) return;
if (needSetupViewport) {
Render.setupOrtho();
}
Render.pushState();
renderScreen();
Render.popState();
}
/**
* @return screen identifier to be used for requests.
*/
public abstract String getId();
public abstract String getName();
}
@@ -51,7 +51,7 @@ public abstract class ScreenLayer extends AppSubModule implements Comparable<Scr
@Override
public final Rect getRect()
public Rect getRect()
{
return screen.getRect();
}
@@ -11,10 +11,15 @@ import mightypork.gamecore.gui.renderers.Renderable;
import mightypork.utils.logging.Log;
/**
* Game screens holder; Takes care of rendering and screen requests.
*
* @author MightyPork
*/
public class ScreenRegistry extends AppModule implements ScreenRequestEvent.Listener, Renderable {
private final HashMap<String, Screen> screens = new HashMap<>();
private Screen active = null;
private volatile Screen active = null;
public ScreenRegistry(AppAccess app) {
@@ -22,9 +27,14 @@ public class ScreenRegistry extends AppModule implements ScreenRequestEvent.List
}
/**
* Add a screen
*
* @param screen added screen
*/
public void add(Screen screen)
{
screens.put(screen.getId(), screen);
screens.put(screen.getName(), screen);
addChildClient(screen);
}
@@ -1,7 +0,0 @@
package mightypork.gamecore.input;
public interface ActionTrigger {
void setAction(Action action);
}
@@ -21,13 +21,15 @@ public class AsyncResourceLoader extends Thread implements ResourceLoadRequest.L
public static void launch(BusAccess app)
{
(new AsyncResourceLoader(app)).start();
Thread loader = new AsyncResourceLoader(app);
loader.setDaemon(true);
loader.start();
}
private final ExecutorService exs = Executors.newCachedThreadPool();
private final LinkedBlockingQueue<DeferredResource> toLoad = new LinkedBlockingQueue<>();
private boolean stopped;
private volatile boolean stopped;
private final BusAccess app;
@@ -17,8 +17,8 @@ import mightypork.utils.logging.LoggedName;
public abstract class BaseDeferredResource implements DeferredResource, Destroyable {
private final String resource;
private boolean loadFailed = false;
private boolean loadAttempted = false;
private volatile boolean loadFailed = false;
private volatile boolean loadAttempted = false;
public BaseDeferredResource(String resource) {
@@ -6,7 +6,9 @@ import static org.lwjgl.opengl.GL11.*;
import java.nio.ByteBuffer;
import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.control.AppModule;
import mightypork.gamecore.control.bus.clients.RootBusNode;
import mightypork.gamecore.control.bus.events.DestroyEvent;
import mightypork.gamecore.control.bus.events.ScreenChangeEvent;
import mightypork.gamecore.control.timing.FpsMeter;
import mightypork.utils.logging.Log;
@@ -21,7 +23,7 @@ import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
public class DisplaySystem extends RootBusNode implements RectConstraint {
public class DisplaySystem extends AppModule implements RectConstraint {
private DisplayMode windowDisplayMode;
private int targetFps;
@@ -204,7 +206,7 @@ public class DisplaySystem extends RootBusNode implements RectConstraint {
/**
* @return current FPS
*/
public final long getFps()
public long getFps()
{
return fpsMeter.getFPS();
}