Commit Graph
240 Commits
Author SHA1 Message Date
Robert Špalek 13a2b24ab5 Removed 2 TODOs
svn-id: r45851
2009-11-12 03:25:10 +00:00
Robert Špalek d281fe4717 Added runWrapper() calling run() and some actions around it.
This simplifies a lot of code calling run().  Also, scripts called from the
inventory are now called with disabled mouse and title, as desired.

svn-id: r45848
2009-11-12 00:45:28 +00:00
Robert Špalek 78a10999ab Cleaned up searching the closest point.
The old comments were completely misleading although the algorithm was good.

svn-id: r45824
2009-11-11 00:19:23 +00:00
Robert Špalek dea7e18172 Fixed walking to unreachable positions
svn-id: r45823
2009-11-10 23:23:40 +00:00
Robert Špalek 9ba6e8138c Fixed two bugs.
Putting items back to the inventory into clipped coordinates, and exiting
running GPL2 programs when the game engine it to be interrupted.

svn-id: r45822
2009-11-10 23:21:29 +00:00
Robert Špalek e2ca397e63 Huge refactoring of data structures.
Replaced IDs of objects by pointers, which saves many lookups, each of which
is horribly ineffective.  Moved a lot of code into methods of structs now
turned into objects.

Tested the new code a lot and seems to work as well as the old code.

svn-id: r45799
2009-11-10 05:16:34 +00:00
Robert Špalek e9c6fd5e39 Fixed aligning items in the inventory
svn-id: r45764
2009-11-08 21:44:30 +00:00
Robert Špalek abbb3dccd7 Items put into inventory are placed correctly.
Also, named correctly GPL2 parameter types.

This fixes all FIXMEs

svn-id: r45762
2009-11-08 21:26:04 +00:00
Robert Špalek 121baa2660 Fix running clearing IsReloaded().
Currently, if gate programs used loop(), they exitted immediately due to not
having cleared this flag.

svn-id: r45753
2009-11-08 18:55:41 +00:00
Robert Špalek 75bbe04280 Fix enabling mouse cursor when entering a room.
It used to have a wrong palette.

svn-id: r45749
2009-11-08 06:56:30 +00:00
Robert Špalek a4393d46b2 Do not immediately clear the path when it has just 1 vertex.
This fixes the previous bugfix, which causes that I could not re-run the same
program (e.g., by repeatedly clicking on the hollow tree) if the hero did not
move at least one pixel.

svn-id: r45747
2009-11-08 06:30:10 +00:00
Robert Špalek bea00d86cb Tuned Z-coordinate of the dragon.
Adding +1 made the dragon sometimes flip before an object when it should
have been behind.

svn-id: r45745
2009-11-08 05:47:39 +00:00
Robert Špalek 354d7f6366 Debugged smooth walking except for 1 bug.
Adjusting to the edge is done such that it respects slight sideways movements of the dragon.
Fixed rounding issues in the whole game.  Improved debug messages.  Made sure that the dragon
does not turn like crazy around when clicking on the same pixel: the final point is always the
clicked one although the middle points made by shifted to make the animations smooth, and
preserve the dragons direction if he has not walked.

There is a bug with running turning animations as they seem to disappear for 1 frame and have
incorrect Z coordinate.  Will investigate it next.

svn-id: r45742
2009-11-08 03:16:22 +00:00
Robert Špalek 0b67aa406e Debugged updating the position of the hero during walking.
I project the hero immediately to the end of each edge for the time being
though.

svn-id: r45722
2009-11-07 11:45:13 +00:00
Robert Špalek f534c12289 Add helper functions to retrieve dragon position from the animation.
To implement proper walking, I have to respect the relative shifts defined
by the sprites as opposed to apply some constant velocity.

svn-id: r45714
2009-11-07 04:56:28 +00:00
Robert Špalek 638305fcbb The hero turns the right direction after walking
svn-id: r45713
2009-11-07 01:54:47 +00:00
Robert Špalek 357d9989d4 Implemented relative animations.
In these animations, each sprite can specify a relative shift with respect
to the previous sprite.  Moving animations (such as walking of the dragon)
are easily described in this framework.  I have sort of hacked their support
and it seems to work.

The current walking code does not interact with the new code yet, but it will
be easy to do.

svn-id: r45712
2009-11-07 01:28:27 +00:00
Robert Špalek fdad4e7b54 Done research on ignored animation flags and commented the code
svn-id: r45711
2009-11-07 00:36:23 +00:00
Robert Špalek 881bf37554 Add safe-guard against collision of animation IDs.
When debugging another issue, I preloaded all animations, and horrible things
happened that I debugged for a few hours.

svn-id: r45695
2009-11-06 16:48:37 +00:00
Robert Špalek 73cf7a55fc Fixed several gross walking bugs.
- SIGSEGV by not stopping walking when changing rooms
- reset of the mouse cursor and object title during gate scripts
- updating the previous animation phase, also when starting new animation
- swapped up and down animations

svn-id: r45690
2009-11-05 23:59:26 +00:00
Robert Špalek f8a19bb4a9 Implemented proper walking.
First shot, not debugged yet, but seems to work (even though a bit hairy)!

svn-id: r45688
2009-11-05 14:22:39 +00:00
Robert Špalek f147fbb936 Properly animate the last phase of the walk before running callbacks
svn-id: r45649
2009-11-04 04:27:31 +00:00
Robert Špalek 14f2685134 Implemented and debugged the walking framework.
The hero does not walk yet (it still teleports to the target immediately),
but that is just because the actual walking algorithm is left trivial first.
However, the main game loop, callbacks, and waiting all already work with
the general framework.

svn-id: r45648
2009-11-04 00:42:37 +00:00
Robert Špalek 930910fe5c Created walking-callback infrastructure and converted the code to use it
svn-id: r45644
2009-11-03 22:13:37 +00:00
Robert Špalek 0071829aee Implement properly stayOn instead of using walkOn
svn-id: r45641
2009-11-03 21:30:24 +00:00
Robert Špalek 9ad5e7461f Let setPath() store path with pixel precision, and update the map sprite when reloaded
svn-id: r45640
2009-11-03 21:05:26 +00:00
Robert Špalek 75bf8237b0 Greatly improved the quality of obliqueing the shortest path.
The current algorithm is much better than the original player'ss one and it
find really nice curved paths.

Also, started preparing interface for actually walking along this path.

svn-id: r45622
2009-11-03 03:24:59 +00:00
Robert Špalek ab3eb81dfb Little clean-up after the refactoring.
svn-id: r45609
2009-11-02 05:37:17 +00:00
Robert Špalek 6de74446ab Split loop() into several cleaned helper methods
svn-id: r45608
2009-11-02 05:31:03 +00:00
Robert Špalek c45f0343f4 Refactored running loop().
- shouldExitLoop() is a bool again and introduced new flag isReloaded() instead
  of adding special hacky value 2
- loop() accepts 2 parameters: loop substatus and shouldExit flag, because each
  caller previously had to set and restore these manually.  loop() now also
  tests whether the substatuses are properly nested.  reordered the
  loop-exitting code.
- renamed loop substatuses to logical names
- enterNewRoom() returns bool whether loop() should continue so that start()
  doesn't have to test and clear shouldEndProgram().  it doesn't need
  force_reload as a parameter anymore.
- dialog selections use new inner substatus instead of outer substatus, for
  consistency

svn-id: r45607
2009-11-02 02:28:43 +00:00
Robert Špalek 9f711bd0ce Commented the rest of the loop() logic
svn-id: r45606
2009-11-01 23:20:46 +00:00
Robert Špalek f77446a500 Commented on loop() before refactoring.
svn-id: r45604
2009-11-01 23:04:56 +00:00
Robert Špalek 0470c25881 Small bugfix in path-finding
svn-id: r45602
2009-11-01 21:19:39 +00:00
Robert Špalek 170918afab Cleaned up the walking code.
PathVertex replaced by Common::Point.  Do not update the path sprites if
not in the debugging mode.

svn-id: r45598
2009-11-01 19:22:41 +00:00
Robert Špalek c1cc230e4b Debugged computation and displaying of optimal walking paths
svn-id: r45597
2009-11-01 12:57:06 +00:00
Robert Špalek 5c7a120471 Add methods to draw computed walking paths.
svn-id: r45596
2009-11-01 10:58:34 +00:00
Robert Špalek 7927196b3f Fix mistakenly ordered flushing revealed by the last commit
svn-id: r45595
2009-11-01 10:15:48 +00:00
Robert Špalek afcd186bef Move drawing of walking map to walking.cpp
svn-id: r45525
2009-10-30 07:26:43 +00:00
Robert Špalek 6411125f39 Moved all one-line getters/setters to the header files
svn-id: r45524
2009-10-30 06:11:04 +00:00
Robert Špalek f3700a23e9 Move WalkingMap instance to Game, and clean up parameters
svn-id: r45516
2009-10-30 02:15:41 +00:00
Robert Špalek d662c4aa20 Remove the last 2 default parameter values.
They usually just add unnecessary confusion and this is definitely such
an example.  Removal will clarify the code.

svn-id: r45512
2009-10-30 01:56:52 +00:00
Robert Špalek c778efaca5 Remove most of default parameter values.
Also, add comments to the last commit.

svn-id: r45511
2009-10-30 01:41:57 +00:00
Robert Špalek a20e42efb9 Move WalkingMap into new module.
Also, fix a bug when loading the default walking map (wasn't implemented)
and setting font size.  The reason I move this code into a new module is
because I will augment it with other walking-related algorithms soon.

svn-id: r45510
2009-10-30 00:52:05 +00:00
Torbjörn Andersson cbf2b03c22 Silenced GCC warning.
svn-id: r45505
2009-10-29 18:15:12 +00:00
Robert Špalek 403668898f Implement flipping the QuickHero and SpeedText flags in GPL2.
All GPL2 callbacks are now fully implemented.  It remains to implement
proper walking.

svn-id: r45501
2009-10-29 15:26:48 +00:00
Robert Špalek 25b3e687a7 Fix several palette fading bugs.
svn-id: r45497
2009-10-29 01:55:06 +00:00
Robert Špalek c781f01321 Implement palette fading
svn-id: r45455
2009-10-28 07:34:17 +00:00
Robert Špalek e75637ec1f Fix initialization of the mouse cursor.
svn-id: r45453
2009-10-28 00:20:45 +00:00
Robert Špalek bbb72eee55 Fix entering the same room when re-loading the game.
(Most objects were not loaded due to incorrect cleaning of a flag).  Also,
clean up accessing some boolean attributes.

svn-id: r45452
2009-10-28 00:04:59 +00:00
Robert Špalek ed87e5cd31 Don't change mouse cursors so ridiculously often.
svn-id: r45451
2009-10-27 23:51:32 +00:00