Files
@ r8781:bd977c904a17
Branch filter:
Location: cpp/openttd-patchpack/source/src/newgrf_canal.cpp - annotation
r8781:bd977c904a17
2.3 KiB
text/x-c
(svn r12482) -Fix: [build train] we don't need to have a depot in order to just check the price of a rail vehicle so don't check for compatible rails on the tile either
also wagons will only need tracks they can drive on in order to be build so there is no reason to check for power in the depot
also wagons will only need tracks they can drive on in order to be build so there is no reason to check for power in the depot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r7206:0f940ecf68e9 r6583:63b4cb964287 r6583:63b4cb964287 r8108:1d5bdeea7e20 r8368:229f823c854a r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r8372:59d73d58fc53 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r8471:0c8cd6eb92d6 r8471:0c8cd6eb92d6 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r7523:7ca21ac5caa0 r6583:63b4cb964287 r6583:63b4cb964287 r7206:0f940ecf68e9 r8368:229f823c854a r8368:229f823c854a r8368:229f823c854a r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r7327:28855024ff6c r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r8756:3b4554f1d3d4 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r8372:59d73d58fc53 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 r6583:63b4cb964287 | /* $Id$ */
#include "stdafx.h"
#include "openttd.h"
#include "variables.h"
#include "landscape.h"
#include "debug.h"
#include "newgrf.h"
#include "newgrf_callbacks.h"
#include "newgrf_commons.h"
#include "newgrf_spritegroup.h"
#include "newgrf_canal.h"
#include "tile_map.h"
#include "water_map.h"
/** Table of canal 'feature' sprite groups */
WaterFeature _water_feature[CF_END];
/* Random bits and triggers are not supported for canals, so the following
* three functions are stubs. */
static uint32 CanalGetRandomBits(const ResolverObject *object)
{
/* Return random bits only for water tiles, not station tiles */
return IsTileType(object->u.canal.tile, MP_WATER) ? GetWaterTileRandomBits(object->u.canal.tile) : 0;
}
static uint32 CanalGetTriggers(const ResolverObject *object)
{
return 0;
}
static void CanalSetTriggers(const ResolverObject *object, int triggers)
{
return;
}
static uint32 CanalGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
{
TileIndex tile = object->u.canal.tile;
switch (variable) {
case 0x80:
return GetTileZ(tile) / TILE_HEIGHT;
case 0x81:
return GetTerrainType(tile);
case 0x83:
return GetWaterTileRandomBits(tile);
}
DEBUG(grf, 1, "Unhandled canal property 0x%02X", variable);
*available = false;
return 0;
}
static const SpriteGroup *CanalResolveReal(const ResolverObject *object, const SpriteGroup *group)
{
if (group->g.real.num_loaded == 0) return NULL;
return group->g.real.loaded[0];
}
static void NewCanalResolver(ResolverObject *res, TileIndex tile)
{
res->GetRandomBits = &CanalGetRandomBits;
res->GetTriggers = &CanalGetTriggers;
res->SetTriggers = &CanalSetTriggers;
res->GetVariable = &CanalGetVariable;
res->ResolveReal = &CanalResolveReal;
res->u.canal.tile = tile;
res->callback = CBID_NO_CALLBACK;
res->callback_param1 = 0;
res->callback_param2 = 0;
res->last_value = 0;
res->trigger = 0;
res->reseed = 0;
res->count = 0;
}
SpriteID GetCanalSprite(CanalFeature feature, TileIndex tile)
{
ResolverObject object;
const SpriteGroup *group;
NewCanalResolver(&object, tile);
group = Resolve(_water_feature[feature].group, &object);
if (group == NULL || group->type != SGT_RESULT) return 0;
return group->g.result.sprite;
}
|