[go: up one dir, main page]

File: power.h

package info (click to toggle)
lincity 1.13.1-15
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye
  • size: 7,244 kB
  • sloc: ansic: 32,745; sh: 8,578; makefile: 584; perl: 445; yacc: 316; sed: 16
file content (73 lines) | stat: -rw-r--r-- 1,847 bytes parent folder | download | duplicates (8)
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
#ifndef _POWER_H
#define _POWER_H

#undef DEBUG_POWER

struct grid_struct {
  int power_lines;
  long total_power; 
  long avail_power; /* Capacity available */
  long max_power;
  long demand;
  short powered;
};

typedef struct grid_struct Grid;

/* public */
#define MAX_GRIDS 128 // How many grids in the array, not how many to allocate
extern Grid * grid[MAX_GRIDS];

void map_power_grid(void);
int get_power (int x, int y, int power, int block_industry);
void do_windmill(int x, int y);
void do_power_substation(int x, int y);
void do_power_source(int x, int y);
void do_power_source_coal(int x, int y);
void do_power_line(int x, int y);
void power_time_step ();

/* intended private */
void recurse_power_grid (int startx, int starty, int steps);
int check_grid(int x, int y, int xi, int yi);
void project_power(int x, int y);

/* #ifdef POWER_LINE_CAPACITY
#undef POWER_LINE_CAPACITY
#endif */

#define POWER_LINE_LOSS 1 /* one KW */
#define POWER_MODULUS 25 /* Controls how often we see a packet in anim */

#define WEST 1
#define NORTH 2
#define EAST 3
#define SOUTH 4

#define XY_IS_GRID(x,y) \
((MP_GROUP(x,y) == GROUP_COAL_POWER) ||\
 (MP_GROUP(x,y) == GROUP_WINDMILL) || \
 (MP_GROUP(x,y) == GROUP_POWER_LINE) || \
 (MP_GROUP(x,y) == GROUP_SOLAR_POWER) || \
 (MP_GROUP(x,y) == GROUP_SUBSTATION))

#define XY_IS_WATER(x,y) (MP_GROUP(x,y) == GROUP_WATER)

#define IS_POWER_SOURCE(x,y) \
((MP_GROUP(x,y) == GROUP_COAL_POWER) || \
 (MP_GROUP(x,y) == GROUP_SOLAR_POWER) || \
 (MP_GROUP(x,y) == GROUP_WINDMILL))

#define IS_POWER_LINE(x,y) (MP_GROUP(x,y) == GROUP_POWER_LINE)

#define IS_OLD_WINDMILL(x,y) \
((MP_GROUP(x,y) == GROUP_WINDMILL) && \
 (MP_TYPE(x,y) != CST_USED) && \
 (MP_INFO(x,y).int_2 < MODERN_WINDMILL_TECH))

#define GRID_CURRENT(x,y) (MP_INFO(x,y).int_7 == grid_inc)

/*** JOBS ***/
#define SOLAR_POWER_JOBS 50

#endif