# PixelEngine A small pixel-based game / rendering engine made in Java highly influenced and similar to the olcPixelGameEngine. Usage: Main engine file is in `JavaProjectTemplate.java`. If you choose to rename this file you should probably have your IDE refactor it so all references change accordingly. Better to just leave it as-is. You will also have to update the `sig` script with the new `PROJECT_NAME` value. # Window Window Width, Height, and the title can all be customized. # Drawing You will find all possible drawing features under the `game` Panel object that is initialized for you. Draw commands all start with `Draw` or `Fill`. The example program contains quite a few of the possible draw commands available. ## Sprites Sprites can be placed in the `sprites` folder and referenced accordingly. Instantiating a new `Sprite` class or `AnimatedSprite` class with the name will auto-load it in. Animated Sprites need their base width and height defined, the engine will figure out the animation frames for the rest of the image. `DrawAnimatedSprite` functions request what index of the animation to draw, you feed that yourself. Only horizontal animation strips are supported by default. # Input Mouse input is handled from the `Mouse` static instance. Can poll for `Held`,`Pressed`, and `Released` status of the mouse. Keyboard input is handled much the same way with the `Key` static instance. Also has `Held`,`Pressed`, and `Released` statuses per key. Keycodes come from the Java Swing `KeyEvent` class (ex.`KeyEvent.VK_UP`). # Sounds Sounds can be loaded up and played by creating new instances of the `Sound` class. There is also a loop variable which determines whether or not a sound loops. You can set it in the constructor using the `new Sound(filename,loop)` constructor or set it using the `setCanLoop()` function. You can control the volume of a suond using `setVolume(val)` where val is a number between 0-100 (percent). By default sounds play at 100% their original volume. Each sound consumes an active line on your sound device. To clear the line, use the `unload()` function, which is useful when your game no longer needs to use that sound or when trying to load a different sound to replace it (say background music). # Building I include some compile scripts, but you are free to use your own. `./sig` lists all possible commands, `./sig build` builds and tries to run the compiled Java classes. `./sig jar` will output a jar. `./sig zip` will piece together the sprites folder, bin folder, and a run script (for Linux) to run a finished java jar, which provides an easy way to "export" the game.