Age | Commit message (Collapse) | Author | Files | Lines |
|
Maybe it used to be necessary for these methods to be virtual, but this
is no longer the case. Hence we can avoid wasting CPU ticks searching
through virtual function tables, especially for frequently used methods
like getWidth, getHeight and setAlpha.
MapLayer::getTile was inlined.
|
|
An optimization in the tile layer rendering code meant for drawing
repeated tiles faster was not taking into account the case where the
tile width does not match the width of the tile grid.
|
|
It makes no sense to mark a return value as const when it is returned by
value. This only makes sense if the return value is passed by reference, in
order to prevent the receiver from modifying the value.
Also made some other small adjustments. A std::string does not need to be
initialized to "" explicitly and getSafeUtf8String could take its parameter by
reference.
Reviewed-by: Yohann Ferreira
|
|
On the fringe layer, actors are drawn 'sorted' together with the tiles. When
the sorting order was separated from the actual Y position of the actor, the
tile drawing loop was not adapted to take this drawOrder into account rather
than the plain Y position.
Also, ActorSprite::draw was applying a half-tile offset to position the sprite
at the bottom while the logical position of the actor is at the center of the
tile. However, it failed to override getDrawOrder to account for this offset,
causing actors to get drawn earlier than they should (and thus being overlapped
by fringe layer tiles when they actually shouldn't).
This fixes drawing glitches with the paths around Hurnscald and reduces the
glitches when walking up/down through grass.
Reviewed-by: Erik Schilling
|
|
This reverts commit 92fd074aa85e2357bfe1ab642209dd5a0d87e4d5.
Reverting because these checks should be done server-side and because having
them in the client would currently require wrapping them up in checks if
there is even a current map due to the reliance on tile size (we need to
handle the case where the current map didn't load properly without crashing).
Conflicts:
src/map.cpp
src/net/manaserv/beinghandler.cpp
Reviewed-by: Erik Schilling
|
|
Better to show non-rotated/flipped tiles than no tile at all. This also
fixes interpretation of collision tiles that happen to be flipped.
Also interpret the gid as an unsigned number, since that's how they are
written in the TMX file since the introduction of these flags.
Reviewed-by: Yohann Ferreira
|
|
|
|
Their name is a bit more clear with DEBUG prefix rather than MAP
prefix. They're already scoped in the Map class anyway.
MAP_NORMAL was changed to DEBUG_NONE to represent no debug flags.
Acked-by: Bertram
|
|
Conflicts:
CMakeLists.txt
src/map.cpp
src/winver.h
|
|
The layer rendering code was not prepared to handle tiles that were
wider than the tile width of the map.
This commit also fixes the initialization of the maximum tile height,
which was based on the map height rather than the tile height. This
could slightly reduce overdraw for some maps.
Reviewed-by: Stefan Beller <stefanbeller@googlemail.com>
|
|
This means that the order point of the sprites relative to the
particles is no longer the lowest point of the image but
instead a point which is approximately between the feet of
the characters.
The intent of the latest commits to treat sprites as perpendicular to the
ground instead of perpendicular to the view line is retained by this
approach.
I tested this with various particle effects and it results in exactly the
expected behavior. Note that this does NOT fix the current problems on TMW
with the snail slime effect, because the TMW content team accidently placed
this one 10px in the air. Sorry, garbage in, garbage out.
getDrawPixelY was re-renamed to getPixelY to be consistent with getPixelX,
while getPixelY was renamed to getDrawOrder, to make its purpose clear.
Further, particles are no longer drawn when behind other objects. This
is implemented by adding a drawnWhenBehind member function to Actor,
which currently returns true for everything except particles and compound-
sprites with more than one sub-sprites (the later case is consistent with
the previous behavior of them).
An exception are text particles which are excempt from this exception and
whose drawing order is also biased by 16 pixels south instead of north
to make them more visible.
Plus some minor changes from Bertram.
Reviewed-by: Bertram.
Resolves: Mana-Mantis #362.
|
|
|
|
- Made the map teleport distance fixed for manaserv.
- Small cleanups.
The branch is considered reviewed by: Cody.
Resolves Mana-Mantis: #74.
|
|
|
|
Reviewed-by: Bjorn
|
|
Reviewed-by: thorbjorn
|
|
Reviewed-by: Bertram
|
|
This is fixng many issues and (hopefully) will make the movement
rendering much smoother.
Merge branch 'master' of gitorious.org:~bertram/mana/mana-movement-code-merge
Conflicts:
src/being.cpp
src/net/manaserv/beinghandler.cpp
Resolves: TMW-Mantis #946.
Reviewed-by: Thorbjorn.
|
|
- Removed unnecessary comments
- Removed a useless contains() check in getTileCenter()
- Fix the above function documentation
- Don't permit FloorItem to be created without a map object.
Reviewed-by: Thorbjorn Lindeijer.
|
|
I have to admit I contributed a large part of these. Sorry for that.
Less empty space, more attention to the code.
Acked-by: Jared Adams
|
|
and made use of it through the tA code.
I also remove the obsolete TODO in the flooritem class.
|
|
|
|
I made it so that the behaviour can be changed with only
a boolean setting in the playerhandler.
|
|
Previously, the walkmask was hardcoded to handling walls.
Trivial.
|
|
This prevent some weird things happening in path finding when
playing for a very long time.
Reviewed-by: Thorbjorn.
|
|
It could lead to (even small) curious desyncs making things worse
to debug.
Trivial.
|
|
Conflicts:
src/being.cpp
src/client.cpp
src/commandhandler.cpp
src/gui/setup_video.cpp
src/gui/socialwindow.cpp
src/gui/viewport.cpp
src/gui/widgets/browserbox.cpp
src/gui/widgets/itemcontainer.cpp
src/imageparticle.cpp
src/localplayer.cpp
src/localplayer.h
src/map.cpp
src/net/tmwa/beinghandler.cpp
src/particle.cpp
src/particle.h
src/player.cpp
src/player.h
|
|
- Now OpenGL and the transparency disabling are set at startup and
not read again for displaying graphics, preventing graphic errors
before startup.
- We also agreed long time ago that SDL specific functions
should have a SDL prefix. The header has been rearranged a bit
to do so.
- Also fixed a possible discrepancy in the hasAlphaChannel() function.
Reviewed-by: CodyMartin.
Resolves: Mana-Mantis: #260.
|
|
This disables the Image::setAlpha() function, which
uses 60% of the client's CPU cycles.
When enabled, visual quality is slightly decreased,
especially with the particle system.
Toggling this setting On from an Off state requires
a client restart or the graphics look quite funny.
Bertram's addition:
- Renamed 'Low CPU' to 'Disable transparency (Low CPU)' in the gui
for better understanding.
- Removed the sprite display with 30% opacity when disabling
transparency since it made monsters and drops be drawn above all layers
at full opacity.
- Made the OpenGL mode disable the 'low CPU mode'.
- Fixed the GUI logic as much as possible. Please note that the GUI opacity
slider stays enabled when transparency is disabled even if told to be disabled
in that case.
Reviewed-by: CodyMartin, 4144, MadCamel.
|
|
Please note that I didn't turned all the getValue() call into new ones,
simply because I have to have config object initiated which is not
forcefully the case the branding file.
Resolves: Manasource Mantis #170.
|
|
Reviewed-by: Bertram
|
|
Conflicts:
src/gui/itempopup.cpp
src/item.cpp
src/monster.cpp
src/net/manaserv/playerhandler.cpp
src/net/tmwa/partyhandler.cpp
src/npc.cpp
src/player.cpp
src/resources/itemdb.cpp
src/resources/monsterdb.cpp
src/resources/monsterinfo.cpp
src/resources/npcdb.cpp
src/resources/spritedef.cpp
|
|
This change allows extending tilesets without causing issues.
Reviewed-by: Freeyorp
|
|
Conflicts:
data/graphics/CMakeLists.txt
data/graphics/Makefile.am
src/client.cpp
|
|
No need for two different classes to manage ActorSprites.
Reviewed-by: Chuck Miller
|
|
Reviewed-by: Thorbjørn Lindeijer
|
|
This way, it's only set to the overlay alpha while drawing the overlay. Fixes
PlayerBox rendering.
|
|
The Actor class manages the Map reference, position vector, and alpha float.
These are the common parts from it's children.
|
|
These are warps.
Reviewed-by: Bertram
|
|
is functional!!
Introduced LocalPlayer::getNextWalkPosition(unsigned char dir)
which takes care about the player next position while moving using keyboard.
I removed the pixel scaler thing because it couldn't handle all the noticed cases
and was rather heavy.
There is still a bug in the movement system (nothing's perfect) but it's very rare
and this is here in eAthena, too.
So, I'll give a try at taking care of it once I'll have polished all of this a bit.
Please try and give feedback!!
|
|
It permits two things:
1. It simplifies and demystifies Being::SetDestination() code.
2. It will permit to show the *real* calulated path when using
the drawDebugPath feature for ManaServ.
|
|
Fix Random crushes and valgrind memory errors.
Reviewed-by: thorbjorn
|
|
|
|
particle effects. Reviewed-by: Jared Adams <jaxad0127@gmail.com>
|
|
Reviewed-by: Jared Adams
|
|
Much code was moved from main() to the new Client::exec(). This new
event loop now integrates with the Game class, so that the tick counter
and framerate limiter apply universally.
The Client class is also responsible for some things that used to be
global variables.
Mantis-issue: ...
|
|
|
|
|
|
But I added some logs when speed and other actions where refused due to game/map
uninitialized. This could help.
|
|
|