| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
Because of the frequent Sequencer reinitalization, many shutdown hook threads designed to close the Sequencer upon exit were created, which polluted the environment with many unneeded thread. To solve this, the shutdown hook is now only created the first time the Sequencer is initalized.
|
|
|
|
| |
Previously, every game state transition was manually executed with a thread, some exception handling and Display. Now, Display has a method that takes care of it without leaving all of the bulk in random classes.
|
|
|
|
| |
Because some people prefer to use the space bar as the action key rather than the enter key, KeyInput now has a method that checks if either is down. Action key requiring conditions use this now instead of manually checking the key.
|
|
|
|
| |
Previously, if a conversation was going on and a specific message was short, the user simply still holding down the action key would trigger the next message and it wouldn't be seen. To fix this, the KeyInput is reset every tick during a message.
|
|
|
|
| |
Previously, if ObjectLoader threw a ResourceNotFoundException in an event thread, the event would not catch it and the event would simply end (and most likely restart if the user was still holding the action key).
|
| |
|
|
|
|
|
|
| |
Now, in full screen mode, the image is no longer stretched strangely, it's simply zoomed to the highest possible value. Plus, when returning to non-full-screen mode, decoration is returned so the X button is available.
Refs #14
|
|
|
|
|
|
| |
Apparently, the window has to be undecorated to be full screen. This has been done, but that results in a non-full screen window with no "X" button. F4 switches full screen mode and F5 has been removed.
Fixes #14
|
| |
|
|
|
|
| |
Previously, MessageWindow would, on occasion, throw out an ArrayIndexOutOfBoundsException. This may have been because of some keyboard input. Because of this, the keyboard input system has been re-written to be anologous to the Display system (Renderable). Now, only one input processor will run at a time because they are executed in order by KeyboardInput, rather than all at once using AWT event handlers.
|
|
|
|
| |
Previously, MIDIs would retain some behavior from the previously playing MIDI, either because the Sequencer hadn't been reset or because a critical MidiMessage was incorrectly positioned. Both of these possibilities have been fixed.
|
|
|
|
| |
Previously, MapViewGameState preformed all of its actions directly on the internal map. However, this would result in the map being exactly the same when reloaded, which was not wanted. So, copy() functions have been added to several places so a copy of the internal map is provided for MapViewGameState.
|
|
|
|
|
|
| |
When a transition completed, the transition was supposed to be unset. However, there was a local variable that hid the correct variable so it wasn't being unset. This has been fixed with a class reference. Transitions do not appear to randomly not execute now.
Fixes #9
|
|
|
|
|
|
|
|
| |
Along with Fade Transitions, other things such as the GameOver and TitleScreen special events have been implemented. Also, an unchecked bug in ObjectLoader has been fixed.
The current Fade implementation isn't currently that elegant. There should be a way to make it better, but it'll do for now.
Closes #13
|
|
|
|
| |
Now, LayerEvents can only move if their current PossibleEvent has a MoveableEventGraphic.
|
| |
|
|
|
|
|
|
| |
MessageWindow is now shorter, and more compact. The font size has also been decreased to allow for more text.
Closes #5
|
|
|
|
| |
Refs #5
|
| |
|
|
|
|
| |
The arrow used to take a while to appear (in MessageWindow) because the message window iterated over all the text, instead of just the visible text.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
MessageWindow now has a static method run by SpecialEvent that triggers the message box. This method blocks until the message is complete and renders via Display's new feature. The message box also now features the "next" arrow and the letters gradually appear.
Display has also been re-worked to have a list of a new interface called Renderable, which is any object that can be rendered. Such objects (such as MessageWindow) can register to Display, which will render them onto the game frame after the GameState has been rendered.
Closes #5.
|
|
|
|
|
|
| |
Interval previously used milliseconds, but now it uses nanoseconds (which, according to System, is more accurate).
Fixes #11
|
|
|
|
| |
Instead of requiring users to extend Map, all that is required now is the creation of a Map object, which should then be configured and added to the Database via Database.addMap()
|
|
|
|
| |
Split ObjectLoader's objectCache into three caches: imageCache (BufferedImage), musicCache (Sequence) and soundCache (Clip). This way, each resource type has its own section and no time-consuming casting is necessary.
|
|
|
|
|
|
|
|
| |
Converted RM2K's RMG2000.fon to a TrueType font using some long and difficult processes (involving first converting to a .bdf, then to a .ttf). With this standard font included in the package, there will be no worry of strange fonts, as TrueType is a standard.
Also, probably because of the size of the new font, the white-tail bug has disappeared. This seems rickety, but because this is the only font that should be used, it should be ok. And if the problem ever arises again, the ticket can be reopened.
Fixes #6 and #1.
|
|
|
|
| |
Replaced default TitleScreen (which was the TPOAHT Title Screen for testing reasons) with a FourPuzzle Title Screen. Also moved the Title Menu to the bottom-left corner.
|
|
|
|
| |
MapViewGameState now plays music depending on the variables of its Map, which can tell it to either stop the music, keep the previous music playing or start playing a specified music.
|
|
|
|
|
|
| |
This annoying bug was finally removed by creating a seperate MidiParser class that takes a Sequence and parses out the non-emitting messages. This is run in ObjectLoader so the result is cached.
Fixes #3
|
|
|
|
| |
Refs #5
|
|
|
|
|
|
| |
Previously, every time a transparent section of SystemGraphic had to be rendered, it would be to be fed through Toolkit, FilteredImageSource, TransparentImageFilter and converted from a BufferedImage to an Image to a BufferedImage again. This has been replaced (and optimized) by preforming this when the SystemGraphic is loaded into memory, instead of every time it is used.
Refs #5
|
|
|
|
| |
See #8
|
|
|
|
| |
This sound should be played when the player selects something from the TitleScreen, opens the Menu and other choice sounding places.
|
| |
|
|
|
|
| |
Currently, MessageWindow splits a string into four lines and displays it when necessary. However, there is currently no way to close the window, it does not animate upon opening and more.
|
| |
|
|
|
|
| |
In ChoiceWindow, the background picture for the Selector windows wasn't positioned correctly.
|
| |
|
|
|
|
| |
ChoiceWindow has also been modified around to rely on a Window class which makes the process more elegant (not elegant, just more so than before). TitleScreenGameState has also been modified to close the game when "End" is selected.
|
| |
|
|
|
|
|
|
| |
Because the coordinates and transparent color previously used were tuned for the default System file, the coordinates were changed to be more forgiving and the color is picked from the last pixel of the first row from the graphic.
Also, for some reason, every file in source control has been marked as modified, even though most haven't been. Don't know why this happened.
|
| |
|
|
|
|
| |
This window should be used when there are a few choices available (such as in TitleScreenGameState and MenuGameState) and one needs to be chosen. The implementation currently is bad, the code is messy and it could be optimized. Plus, there are a few bugs in it and no choice can currently be made, only the rendering has been done.
|
|
|
|
|
|
|
|
| |
Also implemented opposite(), left() and right() functions for Direction which return the opposite, counterclockwise and clockwise directions respectively. I don't exactly like the current Direction implementation as it's not very elegant. Hopefully there is a way to make this prettier.
Also added a setter to PossibleEvent that allows LayerEvent to notify it when it starts or stops moving. This is necessary because the TurnLeft and TurnRight AnimationTypes constantly attempt to rotate the Event and if the Direction of the Event is changed while it is moving, it will move to a different space and animation will look strange. Thus, setDirection() has been modified so it will disallow direction change if the Event is moving.
Also fixed a small encapsulation bug in AbstractEvent. PossibleEvent's notification of movement was made possible through the overriding of the setMoving() function, which is used by AbstractEvent to set if the Event is currently moving. However, while it used setMoving() to turn on moving, previously it did not use it to turn off moving, it simply modified the field. This has been fixed.
|
|
|
|
| |
AnimationType is designed to assert some control over a PossibleEvent's Direction and AnimationStep. Previously, it could only allow or disallow the changing of one or both of those fields. Now, certain AnimationTypes (specifically CommonWithStepping, TurnLeft and TurnRight) can modify those fields as well every tick.
|
| |
|
|
|
|
| |
Package-privated most functions (except for addPrecondition() which should be used by clients) because clients shouldn't have access to them. Also implemented the Builder pattern so clients can create PossibleEvents, but not modify them, making PossibleEvent effectively immutable (to clients), though it actually isn't because it can be modified by classes within the package.
|