38 Commits

Author SHA1 Message Date
D G Turner
d3a187c298 DRACI: Replace usage of 'goto'. 2011-12-08 03:31:29 +00:00
strangerke
69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Max Horn
84184aabc0 ALL: colour -> color 2011-04-14 14:12:35 +02:00
Max Horn
2180b2d6b5 COMMON: Split common/stream.h into several headers
svn-id: r54385
2010-11-19 17:03:07 +00:00
Torbjörn Andersson
f98fa72ef3 Changed abs() to ABS() in a few places.
svn-id: r50890
2010-07-14 17:02:14 +00:00
Max Horn
f3420c6372 DRACI: Reduce header interdependencies; some cleanup
svn-id: r46320
2009-12-09 21:03:22 +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
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
8edfd6b56c Updated the list of TODOs
svn-id: r45768
2009-11-08 22:48:27 +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
5c8aa6ee91 Fixed mistake with two inner loop caused by not clearing the path.
Also, optimize play() and stop()

svn-id: r45746
2009-11-08 06:16:25 +00:00
Robert Špalek
0640b5e402 Renumbered path segments.
Increasing _segment by 1 makes the code much simpler.

svn-id: r45744
2009-11-08 05:44:50 +00:00
Robert Špalek
57b22e3688 Walking animations are fully smooth now
svn-id: r45743
2009-11-08 05:29:12 +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
9f1a756576 Gradual walking implemented.
It is not fully smooth yet due to rounding errors.  However, it otherwise
does what it is supposed to including perspective correction.

svn-id: r45727
2009-11-07 12:20:27 +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
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
fc2e2e27fc Added helper functions for dragon animations
svn-id: r45677
2009-11-05 00:21:54 +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
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
0d5627d8f1 Run the path obliqueing process repeatedly until it converges.
svn-id: r45623
2009-11-03 03:38:28 +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
0470c25881 Small bugfix in path-finding
svn-id: r45602
2009-11-01 21:19:39 +00:00
Robert Špalek
504973a073 One more clean-up of the path-finding code
svn-id: r45599
2009-11-01 19:30:51 +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
f91c89560f Get rid of doubling memory allocation and a lot of copying.
The Sprite class points to the original buffer (which is cached in the memory
thanks to BArchive machinery) instead of allocating its own buffer and
copying the source there.

svn-id: r45594
2009-11-01 10:03:37 +00:00
Robert Špalek
c8534e1802 Implemented some utility functions for path-finding.
In particular, breadth-first search algorithm for getting the shortest path
in the walkable area and an algorithm making the path oblique when possible.

svn-id: r45591
2009-11-01 09:34:07 +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
839a7d5db6 Fixed svn:keywords
svn-id: r45523
2009-10-30 05:21:44 +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