From 530aed395766597bad5a272b069b4599663917a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Tue, 20 May 2014 18:30:19 +0200 Subject: [PATCH] --verbose (-v) flag, system info in log --- src/mightypork/gamecore/core/BaseApp.java | 34 ++++++++++++++++--- .../gamecore/eventbus/EventBus.java | 4 +-- .../gamecore/gui/screens/ScreenRegistry.java | 4 +-- src/mightypork/gamecore/logging/Log.java | 2 +- .../gamecore/logging/writers/SimpleLog.java | 4 +-- .../resources/BaseDeferredResource.java | 10 +++--- .../gamecore/resources/audio/SoundSystem.java | 16 ++++++--- .../resources/fonts/impl/CachedFont.java | 8 ++--- .../resources/fonts/impl/DeferredFont.java | 7 ++-- .../fonts/impl/DeferredFontNative.java | 3 +- .../gamecore/util/files/FileUtils.java | 14 ++------ .../gamecore/util/files/InstanceLock.java | 4 +-- .../util/files/config/PropertyManager.java | 9 +++-- src/mightypork/rogue/Launcher.java | 16 +++++++-- src/mightypork/rogue/RogueApp.java | 1 + .../rogue/screens/select_world/WorldSlot.java | 4 +-- .../rogue/screens/story/ScreenStory.java | 3 +- .../rogue/world/gen/WorldCreator.java | 4 +-- .../rogue/world/gen/rooms/DeadEndRoom.java | 16 ++++----- .../rogue/world/gen/rooms/StorageRoom.java | 4 +-- 20 files changed, 104 insertions(+), 63 deletions(-) diff --git a/src/mightypork/gamecore/core/BaseApp.java b/src/mightypork/gamecore/core/BaseApp.java index f7f0845..2cc6f1e 100644 --- a/src/mightypork/gamecore/core/BaseApp.java +++ b/src/mightypork/gamecore/core/BaseApp.java @@ -133,6 +133,12 @@ public abstract class BaseApp implements AppAccess, UncaughtExceptionHandler { { this.lockFile = lockFile; } + + + public void setLogLevel(Level logLevel) + { + this.logLevel = logLevel; + } } // modules @@ -168,8 +174,6 @@ public abstract class BaseApp implements AppAccess, UncaughtExceptionHandler { { WorkDir.init(workdir); - Log.i("Using workdir: " + WorkDir.getWorkDir()); - opt.sigleInstance = singleInstance; } @@ -222,9 +226,14 @@ public abstract class BaseApp implements AppAccess, UncaughtExceptionHandler { * Setup logging */ final LogWriter log = Log.create(opt.logFilePrefix, new File(WorkDir.getDir(opt.logDir), opt.logFilePrefix + ".log"), opt.logArchiveCount); - log.setLevel(opt.logLevel); - Log.setMainLogger(log); + Log.setMainLogger(log); + Log.setLevel(opt.logLevel); + Log.setSysoutLevel(opt.logLevel); + + // connect slickutil to the logger org.newdawn.slick.util.Log.setLogSystem(new SlickLogRedirector(log)); + logSystemInfo(); + Log.i("=== Starting initialization sequence ==="); @@ -304,6 +313,21 @@ public abstract class BaseApp implements AppAccess, UncaughtExceptionHandler { } + private void logSystemInfo() + { + String txt = ""; + + txt += "\n### SYSTEM INFO ###\n\n"; + txt += " Platform ...... " + System.getProperty("os.name") + "\n"; + txt += " Runtime ....... " + System.getProperty("java.runtime.name") + "\n"; + txt += " Java .......... " + System.getProperty("java.version") + "\n"; + txt += " Launch path ... " + System.getProperty("user.dir") + "\n"; + txt += " Workdir ....... " + WorkDir.getWorkDir().getAbsolutePath() + "\n"; + + Log.i(txt); + } + + protected void registerIonizables() { Ion.registerType(Coord.ION_MARK, Coord.class); @@ -477,7 +501,7 @@ public abstract class BaseApp implements AppAccess, UncaughtExceptionHandler { getEventBus().send(new DestroyEvent()); getEventBus().destroy(); } - } catch (final Exception e) { + } catch (final Throwable e) { Log.e(e); } diff --git a/src/mightypork/gamecore/eventbus/EventBus.java b/src/mightypork/gamecore/eventbus/EventBus.java index 784fe7f..2a851cb 100644 --- a/src/mightypork/gamecore/eventbus/EventBus.java +++ b/src/mightypork/gamecore/eventbus/EventBus.java @@ -290,7 +290,7 @@ final public class EventBus implements Destroyable, BusAccess { { try { if (detailedLogging) { - Log.f2(logMark + "Setting up channel for new event type: " + Log.str(event.getClass())); + Log.f3(logMark + "Setting up channel for new event type: " + Log.str(event.getClass())); } final Class listener = getEventListenerClass(event); @@ -302,7 +302,7 @@ final public class EventBus implements Destroyable, BusAccess { //channels.flush(); if (detailedLogging) { - Log.f2(logMark + "Created new channel: " + Log.str(event.getClass()) + " -> " + Log.str(listener)); + Log.f3(logMark + "Created new channel: " + Log.str(event.getClass()) + " -> " + Log.str(listener)); } return true; diff --git a/src/mightypork/gamecore/gui/screens/ScreenRegistry.java b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java index 49f3d95..b4c2ee5 100644 --- a/src/mightypork/gamecore/gui/screens/ScreenRegistry.java +++ b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java @@ -115,8 +115,8 @@ public class ScreenRegistry extends AppModule implements ScreenRequestListener, { fireLayoutUpdateEvent(); } - - + + private void fireLayoutUpdateEvent() { getEventBus().sendDirectToChildren(this, new LayoutChangeEvent()); diff --git a/src/mightypork/gamecore/logging/Log.java b/src/mightypork/gamecore/logging/Log.java index 8895280..031df95 100644 --- a/src/mightypork/gamecore/logging/Log.java +++ b/src/mightypork/gamecore/logging/Log.java @@ -346,7 +346,7 @@ public class Log { try { hasToString = (o.getClass().getMethod("toString").getDeclaringClass() != Object.class); - } catch (final Exception e) { + } catch (final Throwable t) { // oh well.. } diff --git a/src/mightypork/gamecore/logging/writers/SimpleLog.java b/src/mightypork/gamecore/logging/writers/SimpleLog.java index 0f9128a..d1c3968 100644 --- a/src/mightypork/gamecore/logging/writers/SimpleLog.java +++ b/src/mightypork/gamecore/logging/writers/SimpleLog.java @@ -64,8 +64,8 @@ public class SimpleLog implements LogWriter { FileHandler handler = null; try { handler = new FileHandler(getFile().getPath()); - } catch (final Exception e) { - throw new RuntimeException("Failed to init log.", e); + } catch (final Throwable t) { + throw new RuntimeException("Failed to init log.", t); } handler.setFormatter(new LogFormatter()); diff --git a/src/mightypork/gamecore/resources/BaseDeferredResource.java b/src/mightypork/gamecore/resources/BaseDeferredResource.java index 0804eb3..14ffecd 100644 --- a/src/mightypork/gamecore/resources/BaseDeferredResource.java +++ b/src/mightypork/gamecore/resources/BaseDeferredResource.java @@ -1,6 +1,8 @@ package mightypork.gamecore.resources; +import java.io.IOException; + import mightypork.gamecore.eventbus.events.Destroyable; import mightypork.gamecore.logging.Log; import mightypork.gamecore.logging.LogAlias; @@ -46,9 +48,9 @@ public abstract class BaseDeferredResource implements DeferredResource, Destroya Log.f3(" Loading: " + this); loadResource(resource); Log.f3(" Loaded: " + this); - } catch (final Exception e) { + } catch (final Throwable t) { loadFailed = true; - Log.e(" Failed to load: " + this, e); + Log.e(" Failed to load: " + this, t); } } @@ -84,10 +86,10 @@ public abstract class BaseDeferredResource implements DeferredResource, Destroya * Load the resource. Called from load() - once only. * * @param resource the path / name of a resource - * @throws Exception when some problem prevented the resource from being + * @throws IOException when some problem prevented the resource from being * loaded. */ - protected abstract void loadResource(String resource) throws Exception; + protected abstract void loadResource(String resource) throws IOException; @Override diff --git a/src/mightypork/gamecore/resources/audio/SoundSystem.java b/src/mightypork/gamecore/resources/audio/SoundSystem.java index b70b504..dc8ed9d 100644 --- a/src/mightypork/gamecore/resources/audio/SoundSystem.java +++ b/src/mightypork/gamecore/resources/audio/SoundSystem.java @@ -8,6 +8,7 @@ import java.util.Set; import mightypork.gamecore.core.AppAccess; import mightypork.gamecore.eventbus.clients.RootBusNode; import mightypork.gamecore.eventbus.events.Updateable; +import mightypork.gamecore.logging.Log; import mightypork.gamecore.resources.ResourceLoadRequest; import mightypork.gamecore.resources.audio.players.EffectPlayer; import mightypork.gamecore.resources.audio.players.LoopPlayer; @@ -82,13 +83,18 @@ public class SoundSystem extends RootBusNode implements Updateable { super(app); if (!soundSystemInited) { - SoundStore.get().setMaxSources(MAX_SOURCES); - SoundStore.get().init(); - setListener(INITIAL_LISTENER_POS); - soundSystemInited = true; - getEventBus().send(new AudioReadyEvent()); + try { + SoundStore.get().setMaxSources(MAX_SOURCES); + SoundStore.get().init(); + setListener(INITIAL_LISTENER_POS); + + + getEventBus().send(new AudioReadyEvent()); + } catch (final Throwable t) { + Log.e("Error initializing sound system.", t); + } } } diff --git a/src/mightypork/gamecore/resources/fonts/impl/CachedFont.java b/src/mightypork/gamecore/resources/fonts/impl/CachedFont.java index 8bcf920..d7422dd 100644 --- a/src/mightypork/gamecore/resources/fonts/impl/CachedFont.java +++ b/src/mightypork/gamecore/resources/fonts/impl/CachedFont.java @@ -272,8 +272,8 @@ public class CachedFont implements GLFont { imag = null; - } catch (final Exception e) { - Log.e("Failed to load font.", e); + } catch (final Throwable t) { + Log.e("Failed to load font.", t); } } @@ -325,8 +325,8 @@ public class CachedFont implements GLFont { GLU.gluBuild2DMipmaps(GL_TEXTURE_2D, internalFormat, width, height, format, GL_UNSIGNED_BYTE, byteBuffer); return textureId.get(0); - } catch (final Exception e) { - Log.e("Failed to load font.", e); + } catch (final Throwable t) { + Log.e("Failed to load font.", t); } return -1; diff --git a/src/mightypork/gamecore/resources/fonts/impl/DeferredFont.java b/src/mightypork/gamecore/resources/fonts/impl/DeferredFont.java index 94d09e9..8d92e62 100644 --- a/src/mightypork/gamecore/resources/fonts/impl/DeferredFont.java +++ b/src/mightypork/gamecore/resources/fonts/impl/DeferredFont.java @@ -114,7 +114,7 @@ public class DeferredFont extends BaseDeferredResource implements GLFont { @Override - protected synchronized final void loadResource(String path) throws FontFormatException, IOException + protected synchronized final void loadResource(String path) throws IOException { final Font awtFont = getAwtFont(path, (float) size, style.numval); @@ -130,10 +130,9 @@ public class DeferredFont extends BaseDeferredResource implements GLFont { * @param size font size (pt) * @param style font style * @return the {@link Font} - * @throws FontFormatException * @throws IOException */ - protected Font getAwtFont(String resource, float size, int style) throws FontFormatException, IOException + protected Font getAwtFont(String resource, float size, int style) throws IOException { try(InputStream in = FileUtils.getResource(resource)) { @@ -143,6 +142,8 @@ public class DeferredFont extends BaseDeferredResource implements GLFont { awtFont = awtFont.deriveFont(style); return awtFont; + } catch (final FontFormatException e) { + throw new IOException("Could not load font, bad format.", e); } } diff --git a/src/mightypork/gamecore/resources/fonts/impl/DeferredFontNative.java b/src/mightypork/gamecore/resources/fonts/impl/DeferredFontNative.java index 1ae7853..50df0b2 100644 --- a/src/mightypork/gamecore/resources/fonts/impl/DeferredFontNative.java +++ b/src/mightypork/gamecore/resources/fonts/impl/DeferredFontNative.java @@ -2,7 +2,6 @@ package mightypork.gamecore.resources.fonts.impl; import java.awt.Font; -import java.awt.FontFormatException; import java.io.IOException; import mightypork.gamecore.logging.LogAlias; @@ -34,7 +33,7 @@ public class DeferredFontNative extends DeferredFont { @Override - protected Font getAwtFont(String resource, float size, int style) throws FontFormatException, IOException + protected Font getAwtFont(String resource, float size, int style) throws IOException { return new Font(resource, style, (int) size); } diff --git a/src/mightypork/gamecore/util/files/FileUtils.java b/src/mightypork/gamecore/util/files/FileUtils.java index 45f622d..95918a2 100644 --- a/src/mightypork/gamecore/util/files/FileUtils.java +++ b/src/mightypork/gamecore/util/files/FileUtils.java @@ -189,20 +189,12 @@ public class FileUtils { */ public static List listDirectory(File dir, FileFilter filter) { - try { - dir.mkdir(); - } catch (final RuntimeException e) { - Log.e("Error creating folder " + dir, e); - } + dir.mkdir(); final List list = new ArrayList<>(); - try { - for (final File f : dir.listFiles(filter)) { - list.add(f); - } - } catch (final Exception e) { - Log.e("Error listing folder " + dir, e); + for (final File f : dir.listFiles(filter)) { + list.add(f); } return list; diff --git a/src/mightypork/gamecore/util/files/InstanceLock.java b/src/mightypork/gamecore/util/files/InstanceLock.java index 784cda4..36f73fe 100644 --- a/src/mightypork/gamecore/util/files/InstanceLock.java +++ b/src/mightypork/gamecore/util/files/InstanceLock.java @@ -33,9 +33,9 @@ public class InstanceLock { fileLock.release(); randomAccessFile.close(); if (!lockFile.delete()) throw new IOException(); - } catch (final Exception e) { + } catch (final Throwable t) { System.err.println("Unable to remove lock file."); - e.printStackTrace(); + t.printStackTrace(); } } }); diff --git a/src/mightypork/gamecore/util/files/config/PropertyManager.java b/src/mightypork/gamecore/util/files/config/PropertyManager.java index 875ea80..e9660df 100644 --- a/src/mightypork/gamecore/util/files/config/PropertyManager.java +++ b/src/mightypork/gamecore/util/files/config/PropertyManager.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.Map.Entry; import java.util.TreeMap; +import mightypork.gamecore.logging.Log; import mightypork.gamecore.util.objects.Convert; @@ -170,7 +171,10 @@ public class PropertyManager { } } - props.store(new FileOutputStream(file), fileComment); + try(FileOutputStream fos = new FileOutputStream(file)) { + + props.store(fos, fileComment); + } } catch (final IOException ioe) { ioe.printStackTrace(); } @@ -205,7 +209,8 @@ public class PropertyManager { { try { return entries.get(k); - } catch (final Throwable t) { + } catch (final Exception e) { + Log.w(e); return null; } } diff --git a/src/mightypork/rogue/Launcher.java b/src/mightypork/rogue/Launcher.java index 3e4db2a..22e4b29 100644 --- a/src/mightypork/rogue/Launcher.java +++ b/src/mightypork/rogue/Launcher.java @@ -3,6 +3,7 @@ package mightypork.rogue; import java.io.File; import java.util.Arrays; +import java.util.logging.Level; import mightypork.gamecore.core.BaseApp; import mightypork.gamecore.logging.Log; @@ -20,6 +21,8 @@ public class Launcher { { Log.f3("Arguments: " + Arrays.toString(args)); + boolean verbose = false; + File workdir = null; try { @@ -27,10 +30,18 @@ public class Launcher { String lwdDir = null; for (int i = 0; i < args.length; i++) { - if (args[i].equals("--workdir") || args[i].equals("-w")) { + final String arg = args[i]; + + if (arg.equals("--workdir") || arg.equals("-w")) { localWorkdir = true; lwdDir = args[i + 1]; i++; + continue; + } + + if (arg.equals("--verbose") || arg.equals("-v")) { + verbose = true; + continue; } } @@ -46,8 +57,7 @@ public class Launcher { final BaseApp app = new RogueApp(workdir, true); - // configure the app - app.opt().setBusLogging(false); + app.opt().setLogLevel(verbose ? Level.ALL : Level.FINER); app.start(); } diff --git a/src/mightypork/rogue/RogueApp.java b/src/mightypork/rogue/RogueApp.java index 9fc152d..dd3aff1 100644 --- a/src/mightypork/rogue/RogueApp.java +++ b/src/mightypork/rogue/RogueApp.java @@ -47,6 +47,7 @@ public final class RogueApp extends BaseApp implements ViewportChangeListener, S opt().addResources(new RogueResources()); opt().addKeys(new RogueKeys()); opt().addConfig(new RogueConfig()); + opt().setBusLogging(true); opt().setConfigFile("config.ini", "Rogue config file"); opt().setLogOptions("logs", "runtime", 5, java.util.logging.Level.ALL); diff --git a/src/mightypork/rogue/screens/select_world/WorldSlot.java b/src/mightypork/rogue/screens/select_world/WorldSlot.java index 37a5f82..a4716ad 100644 --- a/src/mightypork/rogue/screens/select_world/WorldSlot.java +++ b/src/mightypork/rogue/screens/select_world/WorldSlot.java @@ -111,8 +111,8 @@ public class WorldSlot extends ConstraintLayout { getEventBus().send(new ScreenRequest("game")); - } catch (final Exception e) { - Log.e("Could not create & save the world.", e); + } catch (final IOException t) { + Log.e("Could not create & save the world.", t); } } else { diff --git a/src/mightypork/rogue/screens/story/ScreenStory.java b/src/mightypork/rogue/screens/story/ScreenStory.java index f8347af..61e3114 100644 --- a/src/mightypork/rogue/screens/story/ScreenStory.java +++ b/src/mightypork/rogue/screens/story/ScreenStory.java @@ -107,7 +107,8 @@ public class ScreenStory extends RogueScreen implements MouseButtonHandler { { super(screen); - TextPainter help = new TextPainter(Res.getFont("tiny"), AlignX.CENTER, RGB.WHITE.withAlpha(txProceedAlpha.mul(0.3)), "Space / click to proceed."); + final TextPainter help = new TextPainter(Res.getFont("tiny"), AlignX.CENTER, RGB.WHITE.withAlpha(txProceedAlpha.mul(0.3)), + "Space / click to proceed."); help.setRect(root.bottomEdge().growUp(root.height().perc(4))); help.setVPaddingPercent(5); root.add(help); diff --git a/src/mightypork/rogue/world/gen/WorldCreator.java b/src/mightypork/rogue/world/gen/WorldCreator.java index bb8e10d..f03d442 100644 --- a/src/mightypork/rogue/world/gen/WorldCreator.java +++ b/src/mightypork/rogue/world/gen/WorldCreator.java @@ -87,7 +87,7 @@ public class WorldCreator { for (int level = 1; level <= 7; level++) { final LevelBuilder lb = levelBuilders[level - 1]; - final Range amount = Range.make(level/2D, level*2); + final Range amount = Range.make(level / 2D, level * 2); for (int i = 0; i < amount.randInt(rand); i++) { lb.addItem(Calc.pick(rand, randomFood).createItem(), false); @@ -140,7 +140,7 @@ public class WorldCreator { lb.addRoom(Rooms.ENTRANCE, BuildOrder.FIRST, true); - lb.addRoom(Rooms.BASIC, Range.make(floor/2, 2 + floor), BuildOrder.MIDDLE, false); + lb.addRoom(Rooms.BASIC, Range.make(floor / 2, 2 + floor), BuildOrder.MIDDLE, false); lb.addRoom(Rooms.DEAD_END, Range.make(1, floor), BuildOrder.MIDDLE, false); lb.addRoom(Rooms.STORAGE, Range.make(1, Math.ceil(floor / 3D)), BuildOrder.MIDDLE, false); diff --git a/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java b/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java index 25059d2..b345c26 100644 --- a/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/DeadEndRoom.java @@ -5,33 +5,33 @@ import java.util.Random; import mightypork.gamecore.util.math.algo.Coord; import mightypork.rogue.world.gen.MapTheme; -import mightypork.rogue.world.gen.RoomBuilder; -import mightypork.rogue.world.gen.RoomEntry; -import mightypork.rogue.world.gen.ScratchMap; import mightypork.rogue.world.gen.TileProtectLevel; import mightypork.rogue.world.tile.TileModel; public class DeadEndRoom extends AbstractRectRoom { - + @Override protected Coord getInnerSize(Random rand) { - return Coord.make(1,1); + return Coord.make(1, 1); } - + + @Override protected TileProtectLevel getWallProtectionLevel() { return TileProtectLevel.STRONG; } - + + @Override protected TileModel getDoorType(MapTheme theme, Random rand) { return theme.floor(); } - + + @Override protected int getDoorCount(Random rand) { diff --git a/src/mightypork/rogue/world/gen/rooms/StorageRoom.java b/src/mightypork/rogue/world/gen/rooms/StorageRoom.java index 509256f..e3050e0 100644 --- a/src/mightypork/rogue/world/gen/rooms/StorageRoom.java +++ b/src/mightypork/rogue/world/gen/rooms/StorageRoom.java @@ -15,7 +15,7 @@ public class StorageRoom extends SecretRoom { @Override protected void buildExtras(ScratchMap map, MapTheme theme, Random rand, Coord min, Coord max) { - int maxStuff = Calc.randInt(rand, 3, 5); + int maxStuff = Calc.randInt(rand, 3, 5); for (int i = 0; i < Calc.randInt(rand, 0, 2); i++) { map.addItemInArea(Items.MEAT.createItem(), min, max, 50); @@ -35,7 +35,7 @@ public class StorageRoom extends SecretRoom { for (int i = 0; i < Calc.randInt(rand, 0, 1); i++) { map.addItemInArea(Items.SANDWICH.createItem(), min, max, 50); if (--maxStuff == 0) return; - } + } for (int i = 0; i < Calc.randInt(rand, 0, 2); i++) { map.addItemInArea(Items.TWIG.createItemDamaged(40), min, max, 50);