summary refs log tree commit diff stats
path: root/src/com/fourisland
Commit message (Collapse)AuthorAgeFilesLines
* Engine: Redesigned move frequencyStarla Insigna2009-03-176-61/+32
| | | | | | Removed frequency from the Event API as LayerEvents are the only type of events that require a move frequency, as move frequency decides how many ticks to wait between each movement. HeroEvent does nothing with it, because the user input decides how often it moves. Also changed frequency to be an integer rather than a bounded enumeration, which is clearer and lets an much larger (but probably unnecessary) range of wait values.
* Engine: Added ShakeScreen() special actionStarla Insigna2009-03-1711-8/+256
| | | | Also implemented F12 to return to the title screen and added a move frequency variable to events that decides how often they move.
* Engine: Added stalking movement typeStarla Insigna2009-03-107-43/+245
| | | | Also added a class (ImmutableEvent) that provides an immutable view to an event: It is like Collections.unmodifiableMap(), the event data may change in the mean time, and the object will reflect that, but the class cannot be modified. MovementType now provides an ImmutableEvent to each of its subclasses when nextMovement() is called.
* Engine: Fixed walk-thru bugStarla Insigna2009-03-091-1/+1
| | | | | | Two specific events on the test map were always running over eachother. This problem started a few commits ago, but it was uncertain which commit this was. The key to solving the problem, as all other debugging didn't show anything, was that a certain event appeared to be blocked by something when it walked downward, which wasn't there. It was then discerned that that location was the original location of a moving event. From there it was discerned that the parent map used by AbstractEvent was the original map that was copied from, not the map being used by MapViewGameState. A simple change to Map's copy() function fixed this.
* Engine: Commented a lot of codeStarla Insigna2009-03-089-119/+199
|
* Engine: Added variable movement speedStarla Insigna2009-03-088-16/+128
| | | | Now, like in RM2K, Events can have different movement speeds. The Hero starts out with a faster MoveSpeed than other events and it can be changed when initalizing PossibleEvent or with a ChangeSpeedMoveEvent.
* Engine: Added a to() method to DirectionStarla Insigna2009-03-083-14/+63
| | | | to() takes a Point and returns a Point one unit in the specified direction from the original point.
* Engine: Fixed text chop-offStarla Insigna2009-03-061-1/+1
| | | | Previously, the top of the text would be chopped off because the text was being rendered too high. This has been fixed.
* Engine: Refactored MessageWindowStarla Insigna2009-03-062-63/+42
| | | | MessageWindow is now an Inputable and a Renderable, which allows it to tie in more logically with the rest of the system.
* Engine: Added configuration to ChoiceWindowStarla Insigna2009-03-064-75/+98
| | | | | | Added ability to force a specific width for MenuEMS so menu looks pREETY OMG IM HYPER Refs #15
* Engine: Imposed text color limitStarla Insigna2009-03-051-1/+4
| | | | | | Previously, if the client provided a message escape with an invalid color number (a.k.a. it wasn't between 0 and 19) FourPuzzle would crash with a confusing error message. This has been replaced with a more helpful message. Also, previously, the colors between 10 and 19 could not be accessed, but this has been fixed.
* Engine: Created Message EscapesStarla Insigna2009-03-056-103/+420
| | | | | | | | | | Rewrote MessageWindow to render text through another class called TextRenderer, which takes settings and parses the text with its message escapes. The text-color-setting escape works perfectly but the pause escape doesn't. It works pretty well, except for some reason, if the escape is directly next to some text on the left, it won't be parsed. Also, the pause escape was implemented as \P rather than \| because | is a special character .in regular expressions. The variable-displaying escape was not added for two reasons: First of all, a dynamically introduced variable would mess up the generated layout and the text would not wrap correctly. Secondly, a much easier/better way of including a variable in a message than message escapes exists: Using string concatenation when writing the DisplayMessage() call. As FourPuzzle is a programming library, it is much more powerful than RM2K and clients need not resort to strange hacks such as message escapes to include variables in messages. Clients can include whatever dynamic data they wish in messages, rather than some predefined stuff RM2K provides. A small bug was discovered in PauseTimer that made it wait for it's underlying Interval to elapse before it could elapse, even if it had zero ticks remaining. This has been fixed. Closes #16
* Engine: Started Escape MenuStarla Insigna2009-03-0513-10/+345
| | | | Refs #15
* Engine: Added Event Thread cancellationStarla Insigna2009-02-237-51/+145
|
* Engine: Rewrote Database Transition storageStarla Insigna2009-02-227-58/+64
|
* Engine: Abstracted ComparsionStarla Insigna2009-02-173-20/+78
|
* Engine: Reduced thread pollutionStarla Insigna2009-02-161-8/+14
| | | | 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.
* Engine: Abstracted game state transitionsStarla Insigna2009-02-164-51/+41
| | | | 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.
* Engine: Abstracted action keyStarla Insigna2009-02-165-6/+9
| | | | 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.
* Engine: Added delay to MessageWindowStarla Insigna2009-02-161-1/+3
| | | | 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.
* Engine: Fixed EventCall bugStarla Insigna2009-02-162-3/+21
| | | | 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).
* Engine: Removed lazy init from MessageWindowStarla Insigna2009-02-161-15/+8
|
* Engine: Tuned Full Screen ModeStarla Insigna2009-02-163-10/+59
| | | | | | 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
* Engine: Fixed Full Screen ModeStarla Insigna2009-02-151-6/+6
| | | | | | 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
* Engine: Hid PuzzleApplication's gameFrameStarla Insigna2009-02-152-16/+16
|
* Engine: Fixed MessageWindow bugStarla Insigna2009-02-1510-110/+211
| | | | 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.
* Engine: Fixed MIDI awkwardnessStarla Insigna2009-02-152-2/+16
| | | | 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.
* Engine: Atomicized MapsStarla Insigna2009-02-155-1/+57
| | | | 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.
* Engine: Fixed unstable transitionsStarla Insigna2009-02-151-2/+2
| | | | | | 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
* Engine: Created Fade transitionsStarla Insigna2009-02-157-13/+148
| | | | | | | | 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
* Engine: Restricted LayerEvent movingStarla Insigna2009-02-143-1/+27
| | | | Now, LayerEvents can only move if their current PossibleEvent has a MoveableEventGraphic.
* Engine: Refactored retieval of FontMetricsStarla Insigna2009-02-143-16/+27
|
* Engine: Compacted MessageWindowStarla Insigna2009-02-142-13/+22
| | | | | | MessageWindow is now shorter, and more compact. The font size has also been decreased to allow for more text. Closes #5
* Engine: Added basic FaceSet supportStarla Insigna2009-02-143-10/+97
| | | | Refs #5
* Engine: Added chipset data to RTPStarla Insigna2009-02-143-14/+4833
|
* Engine: Fixed arrow delay bugStarla Insigna2009-02-131-1/+1
| | | | 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.
* Engine: Compacted ChoiceWindowStarla Insigna2009-02-121-2/+0
|
* Engine: Fixed up JavaDocStarla Insigna2009-02-128-52/+48
|
* Engine: Wrote Message SystemStarla Insigna2009-02-128-56/+203
| | | | | | | | 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.
* Engine: Rewrote IntervalStarla Insigna2009-02-122-7/+7
| | | | | | Interval previously used milliseconds, but now it uses nanoseconds (which, according to System, is more accurate). Fixes #11
* Engine: Rewrote Map abstractionStarla Insigna2009-02-124-41/+60
| | | | 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()
* Engine: Optimized ObjectLoaderStarla Insigna2009-02-111-22/+22
| | | | 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.
* Engine: Added global fontStarla Insigna2009-02-118-53/+71
| | | | | | | | 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.
* Engine: Changed default TitleScreenStarla Insigna2009-02-103-4/+7
| | | | 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.
* Engine: Added some control to MusicStarla Insigna2009-02-105-9/+93
| | | | 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.
* Engine: Removed Music starting delayStarla Insigna2009-02-103-0/+91
| | | | | | 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
* Engine: Tweaked Window background positioningStarla Insigna2009-02-102-4/+9
| | | | Refs #5
* Engine: Refactored SystemGraphic transparencyStarla Insigna2009-02-104-24/+65
| | | | | | 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
* Re-implemented DatabaseStarla Insigna2009-02-0915-118/+316
| | | | See #8
* Added Decision2 soundStarla Insigna2009-02-083-1/+3
| | | | This sound should be played when the player selects something from the TitleScreen, opens the Menu and other choice sounding places.