Files
@ r24498:e9114d9ab04a
Branch filter:
Location: cpp/openttd-patchpack/source/src/viewport_sprite_sorter.h - annotation
r24498:e9114d9ab04a
2.6 KiB
text/x-c
Fix #6468: don't store version of AIs-started-via-console in name
You can do: "startai myai.3", which starts version 3 of "myai".
This is very useful for testing save/load code between different
versions of your AI.
However, when using this syntax, the AI got saved as "myai.3" as
name of the AI, instead of "myai". This caused several problems,
like indicating to the user the AI could not be found, but still
load the AI. But in all cases, the AI never got the chance to
load the saved data, making the whole reason this exists pointless.
By splitting the name and version already in the console command,
the code becomes simpler and AIs started this way now follow the
normal flow after initialization.
You can do: "startai myai.3", which starts version 3 of "myai".
This is very useful for testing save/load code between different
versions of your AI.
However, when using this syntax, the AI got saved as "myai.3" as
name of the AI, instead of "myai". This caused several problems,
like indicating to the user the AI could not be found, but still
load the AI. But in all cases, the AI never got the chance to
load the saved data, making the whole reason this exists pointless.
By splitting the name and version already in the console command,
the code becomes simpler and AIs started this way now follow the
normal flow after initialization.
r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r22695:74ef624a6be2 r24463:5d1832e07fa7 r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r23538:8df50944b27a r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f r21120:bf4cad9f8d6f | /*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file viewport_sprite_sorter.h Types related to sprite sorting. */
#include "stdafx.h"
#include "core/smallvec_type.hpp"
#include "gfx_type.h"
#ifndef VIEWPORT_SPRITE_SORTER_H
#define VIEWPORT_SPRITE_SORTER_H
/** Parent sprite that should be drawn */
struct ParentSpriteToDraw {
/* Block of 16B loadable in xmm register */
int32 xmin; ///< minimal world X coordinate of bounding box
int32 ymin; ///< minimal world Y coordinate of bounding box
int32 zmin; ///< minimal world Z coordinate of bounding box
int32 x; ///< screen X coordinate of sprite
/* Second block of 16B loadable in xmm register */
int32 xmax; ///< maximal world X coordinate of bounding box
int32 ymax; ///< maximal world Y coordinate of bounding box
int32 zmax; ///< maximal world Z coordinate of bounding box
int32 y; ///< screen Y coordinate of sprite
SpriteID image; ///< sprite to draw
PaletteID pal; ///< palette to use
const SubSprite *sub; ///< only draw a rectangular part of the sprite
int32 left; ///< minimal screen X coordinate of sprite (= x + sprite->x_offs), reference point for child sprites
int32 top; ///< minimal screen Y coordinate of sprite (= y + sprite->y_offs), reference point for child sprites
int32 first_child; ///< the first child to draw.
uint32 order; ///< Used during sprite sorting
};
typedef std::vector<ParentSpriteToDraw*> ParentSpriteToSortVector;
/** Type for method for checking whether a viewport sprite sorter exists. */
typedef bool (*VpSorterChecker)();
/** Type for the actual viewport sprite sorter. */
typedef void (*VpSpriteSorter)(ParentSpriteToSortVector *psd);
#ifdef WITH_SSE
bool ViewportSortParentSpritesSSE41Checker();
void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv);
#endif
void InitializeSpriteSorter();
#endif /* VIEWPORT_SPRITE_SORTER_H */
|