src/town_map.h
author rubidium
Sun, 06 Apr 2008 12:26:40 +0000
branchnoai
changeset 9867 b7d9ffe24f81
parent 9826 9707ad4c9b60
child 10294 7798ae816af8
permissions -rw-r--r--
(svn r12589) [NoAI] -Add: GetLastError support for AIBridge.
3319
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
     1
/* $Id$ */
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
     2
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
     3
/** @file town_map.h Accessors for towns */
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
     4
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
     5
#ifndef TOWN_MAP_H
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
     6
#define TOWN_MAP_H
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
     7
3319
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
     8
#include "town.h"
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
     9
#include "date_func.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
    10
#include "tile_map.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
    11
#include "functions.h"
3319
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
    12
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    13
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    14
 * Get the index of which town this house/street is attached to.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    15
 * @param t the tile
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9574
diff changeset
    16
 * @pre IsTileType(t, MP_HOUSE) or IsTileType(t, MP_ROAD)
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    17
 * @return TownID
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    18
 */
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    19
static inline TownID GetTownIndex(TileIndex t)
3319
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
    20
{
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9574
diff changeset
    21
	assert(IsTileType(t, MP_HOUSE) || IsTileType(t, MP_ROAD)); // XXX incomplete
3319
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
    22
	return _m[t].m2;
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
    23
}
7d04847e4689 (svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
tron
parents:
diff changeset
    24
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    25
/**
3983
d2d6496238e4 (svn r5171) Get rid of an ungly hack in the load routine, which temporarily turned house and road tiles into void tiles to calculate the closest town
tron
parents: 3432
diff changeset
    26
 * Set the town index for a road or house tile.
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    27
 * @param t the tile
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9574
diff changeset
    28
 * @pre IsTileType(t, MP_HOUSE) or IsTileType(t, MP_ROAD)
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    29
 * @param index the index of the town
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9574
diff changeset
    30
 * @pre IsTileType(t, MP_ROAD) || IsTileType(t, MP_HOUSE)
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    31
 */
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    32
static inline void SetTownIndex(TileIndex t, TownID index)
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    33
{
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9574
diff changeset
    34
	assert(IsTileType(t, MP_HOUSE) || IsTileType(t, MP_ROAD));
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    35
	_m[t].m2 = index;
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    36
}
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
    37
6220
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    38
/**
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    39
 * Gets the town associated with the house or road tile
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    40
 * @param t the tile to get the town of
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    41
 * @return the town
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    42
 */
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9574
diff changeset
    43
static inline Town *GetTownByTile(TileIndex t)
6220
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    44
{
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    45
	return GetTown(GetTownIndex(t));
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    46
}
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    47
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    48
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    49
 * Get the type of this house, which is an index into the house spec array
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    50
 * Since m4 is only a byte and we want to support 512 houses, we use the bit 6
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    51
 * of m3 as an additional bit to house type.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    52
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    53
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    54
 * @return house type
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    55
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    56
static inline HouseID GetHouseType(TileIndex t)
6220
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    57
{
0c2371b1edda (svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents: 5726
diff changeset
    58
	assert(IsTileType(t, MP_HOUSE));
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    59
	return _m[t].m4 | (GB(_m[t].m3, 6, 1) << 8);
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    60
}
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    61
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    62
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    63
 * Set the house type.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    64
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    65
 * @param house_id the new house type
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    66
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    67
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    68
static inline void SetHouseType(TileIndex t, HouseID house_id)
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    69
{
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    70
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    71
	_m[t].m4 = GB(house_id, 0, 8);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    72
	SB(_m[t].m3, 6, 1, GB(house_id, 8, 1));
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    73
}
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    74
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    75
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    76
 * Check if the lift of this animated house has a destination
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    77
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    78
 * @return has destination
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    79
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    80
static inline bool LiftHasDestination(TileIndex t)
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    81
{
9722
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
    82
	return HasBit(_me[t].m7, 0);
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    83
}
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
    84
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    85
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    86
 * Set the new destination of the lift for this animated house, and activate
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    87
 * the LiftHasDestination bit.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    88
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    89
 * @param dest new destination
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    90
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    91
static inline void SetLiftDestination(TileIndex t, byte dest)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    92
{
9722
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
    93
	SetBit(_me[t].m7, 0);
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    94
	SB(_me[t].m7, 1, 3, dest);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    95
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    96
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    97
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    98
 * Get the current destination for this lift
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
    99
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   100
 * @return destination
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   101
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   102
static inline byte GetLiftDestination(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   103
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   104
	return GB(_me[t].m7, 1, 3);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   105
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   106
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   107
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   108
 * Stop the lift of this animated house from moving.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   109
 * Clears the first 4 bits of m7 at once, clearing the LiftHasDestination bit
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   110
 * and the destination.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   111
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   112
 */
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   113
static inline void HaltLift(TileIndex t)
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   114
{
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   115
	SB(_me[t].m7, 0, 4, 0);
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   116
	DeleteAnimatedTile(t);
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   117
}
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   118
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   119
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   120
 * Get the position of the lift on this animated house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   121
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   122
 * @return position, from 0 to 36
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   123
 */
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   124
static inline byte GetLiftPosition(TileIndex t)
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   125
{
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   126
	return GB(_m[t].m6, 2, 6);
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   127
}
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   128
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   129
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   130
 * Set the position of the lift on this animated house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   131
 * @param t the tile
9574
698395509d12 (svn r9575) [NoAI] -Sync with trunk r9504:9574
glx
parents: 9476
diff changeset
   132
 * @param pos position, from 0 to 36
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   133
 */
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   134
static inline void SetLiftPosition(TileIndex t, byte pos)
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   135
{
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   136
	SB(_m[t].m6, 2, 6, pos);
3426
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   137
}
dab412dcee39 (svn r4254) -Codechange: Add and make use of map accessors for town lifts.
celestar
parents: 3382
diff changeset
   138
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   139
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   140
 * Get the current animation frame for this house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   141
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   142
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   143
 * @return frame number
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   144
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   145
static inline byte GetHouseAnimationFrame(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   146
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   147
	assert(IsTileType(t, MP_HOUSE));
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents: 9732
diff changeset
   148
	return GB(_m[t].m6, 2, 6) | (GB(_m[t].m3, 5, 1) << 6);
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   149
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   150
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   151
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   152
 * Set a new animation frame for this house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   153
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   154
 * @param frame the new frame number
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   155
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   156
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   157
static inline void SetHouseAnimationFrame(TileIndex t, byte frame)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   158
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   159
	assert(IsTileType(t, MP_HOUSE));
9826
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents: 9732
diff changeset
   160
	SB(_m[t].m6, 2, 6, GB(frame, 0, 6));
9707ad4c9b60 (svn r12462) [NoAI] -Sync: with trunk r12304:12461.
rubidium
parents: 9732
diff changeset
   161
	SB(_m[t].m3, 5, 1, GB(frame, 6, 1));
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   162
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   163
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   164
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   165
 * Get the completion of this house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   166
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   167
 * @return true if it is, false if it is not
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   168
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   169
static inline bool IsHouseCompleted(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   170
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   171
	assert(IsTileType(t, MP_HOUSE));
9722
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   172
	return HasBit(_m[t].m3, 7);
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   173
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   174
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   175
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   176
 * Mark this house as been completed
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   177
 * @param t the tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   178
 * @param status
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   179
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   180
static inline void SetHouseCompleted(TileIndex t, bool status)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   181
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   182
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   183
	SB(_m[t].m3, 7, 1, !!status);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   184
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   185
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   186
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   187
 * Make the tile a house.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   188
 * @param t tile index
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   189
 * @param tid Town index
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   190
 * @param counter of construction step
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   191
 * @param stage of construction (used for drawing)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   192
 * @param type of house.  Index into house specs array
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   193
 * @param random_bits required for newgrf houses
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   194
 * @pre IsTileType(t, MP_CLEAR)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   195
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   196
static inline void MakeHouseTile(TileIndex t, TownID tid, byte counter, byte stage, HouseID type, byte random_bits)
3382
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   197
{
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   198
	assert(IsTileType(t, MP_CLEAR));
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   199
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   200
	SetTileType(t, MP_HOUSE);
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   201
	_m[t].m1 = random_bits;
3382
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   202
	_m[t].m2 = tid;
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   203
	_m[t].m3 = 0;
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   204
	SetHouseType(t, type);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   205
	SetHouseCompleted(t, stage == TOWN_HOUSE_COMPLETED);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   206
	_m[t].m5 = IsHouseCompleted(t) ? 0 : (stage << 3 | counter);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   207
	SetHouseAnimationFrame(t, 0);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   208
	_me[t].m7 = GetHouseSpecs(type)->processing_time;
3382
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   209
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   210
	if (GetHouseSpecs(type)->building_flags & BUILDING_IS_ANIMATED) AddAnimatedTile(t);
3382
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   211
	MarkTileDirtyByTile(t);
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   212
}
c9c8d85aa632 (svn r4190) -Codechange: Add and make use of an accessor function to create houses
celestar
parents: 3377
diff changeset
   213
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   214
/**
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   215
 * House Construction Scheme.
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   216
 *  Construction counter, for buildings under construction. Incremented on every
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   217
 *  periodic tile processing.
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   218
 *  On wraparound, the stage of building in is increased.
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   219
 *  GetHouseBuildingStage is taking care of the real stages,
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   220
 *  (as the sprite for the next phase of house building)
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   221
 *  (Get|Inc)HouseConstructionTick is simply a tick counter between the
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   222
 *  different stages
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   223
 */
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   224
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   225
/**
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   226
 * Gets the building stage of a house
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   227
 * Since the stage is used for determining what sprite to use,
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   228
 * if the house is complete (and that stage no longuer is available),
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   229
 * fool the system by returning the TOWN_HOUSE_COMPLETE (3),
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   230
 * thus showing a beautiful complete house.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   231
 * @param t the tile of the house to get the building stage of
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   232
 * @pre IsTileType(t, MP_HOUSE)
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   233
 * @return the building stage of the house
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   234
 */
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   235
static inline byte GetHouseBuildingStage(TileIndex t)
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   236
{
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   237
	assert(IsTileType(t, MP_HOUSE));
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   238
	return IsHouseCompleted(t) ? (byte)TOWN_HOUSE_COMPLETED : GB(_m[t].m5, 3, 2);
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   239
}
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   240
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   241
/**
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   242
 * Gets the construction stage of a house
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   243
 * @param t the tile of the house to get the construction stage of
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   244
 * @pre IsTileType(t, MP_HOUSE)
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   245
 * @return the construction stage of the house
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   246
 */
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   247
static inline byte GetHouseConstructionTick(TileIndex t)
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   248
{
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   249
	assert(IsTileType(t, MP_HOUSE));
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   250
	return IsHouseCompleted(t) ? 0 : GB(_m[t].m5, 0, 3);
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   251
}
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   252
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   253
/**
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   254
 * Sets the increment stage of a house
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   255
 * It is working with the whole counter + stage 5 bits, making it
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   256
 * easier to work:  the wraparound is automatic.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   257
 * @param t the tile of the house to increment the construction stage of
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   258
 * @pre IsTileType(t, MP_HOUSE)
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   259
 */
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   260
static inline void IncHouseConstructionTick(TileIndex t)
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   261
{
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   262
	assert(IsTileType(t, MP_HOUSE));
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   263
	AB(_m[t].m5, 0, 5, 1);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   264
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   265
	if (GB(_m[t].m5, 3, 2) == TOWN_HOUSE_COMPLETED) {
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   266
		/* House is now completed.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   267
		 * Store the year of construction as well, for newgrf house purpose */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   268
		SetHouseCompleted(t, true);
9722
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   269
		_m[t].m5 = Clamp(_cur_year - ORIGINAL_BASE_YEAR, 0, 0xFF);
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   270
	}
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   271
}
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   272
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   273
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   274
 * Get the year that this house was constructed (between 1920 and 2175).
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   275
 * @param t the tile of this house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   276
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   277
 * @return year
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   278
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   279
static inline Year GetHouseConstructionYear(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   280
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   281
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   282
	return IsHouseCompleted(t) ? _m[t].m5 + ORIGINAL_BASE_YEAR : 0;
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   283
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   284
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   285
/**
9722
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   286
 * Set the random bits for this house.
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   287
 * This is required for newgrf house
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   288
 * @param t      the tile of this house
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   289
 * @param random the new random bits
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   290
 * @pre IsTileType(t, MP_HOUSE)
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   291
 */
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   292
static inline void SetHouseRandomBits(TileIndex t, byte random)
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   293
{
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   294
	assert(IsTileType(t, MP_HOUSE));
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   295
	_m[t].m1 = random;
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   296
}
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   297
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9694
diff changeset
   298
/**
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   299
 * Get the random bits for this house.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   300
 * This is required for newgrf house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   301
 * @param t the tile of this house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   302
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   303
 * @return random bits
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   304
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   305
static inline byte GetHouseRandomBits(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   306
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   307
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   308
	return _m[t].m1;
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   309
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   310
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   311
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   312
 * Set the activated triggers bits for this house.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   313
 * This is required for newgrf house
9574
698395509d12 (svn r9575) [NoAI] -Sync with trunk r9504:9574
glx
parents: 9476
diff changeset
   314
 * @param t        the tile of this house
698395509d12 (svn r9575) [NoAI] -Sync with trunk r9504:9574
glx
parents: 9476
diff changeset
   315
 * @param triggers the activated triggers
9476
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   316
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   317
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   318
static inline void SetHouseTriggers(TileIndex t, byte triggers)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   319
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   320
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   321
	SB(_m[t].m3, 0, 5, triggers);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   322
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   323
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   324
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   325
 * Get the already activated triggers bits for this house.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   326
 * This is required for newgrf house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   327
 * @param t the tile of this house
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   328
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   329
 * @return triggers
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   330
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   331
static inline byte GetHouseTriggers(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   332
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   333
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   334
	return GB(_m[t].m3, 0, 5);
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   335
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   336
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   337
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   338
 * Get the amount of time remaining before the tile loop processes this tile.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   339
 * @param t the house tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   340
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   341
 * @return time remaining
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   342
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   343
static inline byte GetHouseProcessingTime(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   344
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   345
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   346
	return _me[t].m7;
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   347
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   348
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   349
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   350
 * Set the amount of time remaining before the tile loop processes this tile.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   351
 * @param t the house tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   352
 * @param time the time to be set
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   353
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   354
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   355
static inline void SetHouseProcessingTime(TileIndex t, byte time)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   356
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   357
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   358
	_me[t].m7 = time;
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   359
}
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   360
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   361
/**
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   362
 * Decrease the amount of time remaining before the tile loop processes this tile.
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   363
 * @param t the house tile
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   364
 * @pre IsTileType(t, MP_HOUSE)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   365
 */
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   366
static inline void DecHouseProcessingTime(TileIndex t)
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   367
{
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   368
	assert(IsTileType(t, MP_HOUSE));
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   369
	_me[t].m7--;
1d1ed96f32ad (svn r9323) [NoAI] -Sync with trunk r9206:9322
truelight
parents: 6220
diff changeset
   370
}
3432
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   371
507fa7fd189d (svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents: 3426
diff changeset
   372
#endif /* TOWN_MAP_H */