Loading

Revision differences

Old revision #p6z7gacvtNew revision #pwme4lx6r
1            Slope tileh_end_aqueduct = GetTileSlope(tile_end);  1            Slope tileh_north_aqueduct = GetTileSlope(tile_start);
2            if (tileh_end_aqueduct != ComplementSlope(tileh_start)) {  2            if (tileh_north_aqueduct != ComplementSlope(tileh_end)) {
3                switch (tileh_start) {  3                Slope tileh_north_result;
   4                switch (tileh_end) {
4                    case SLOPE_NE:  5                    case SLOPE_NE:  
5                        switch (tileh_end_aqueduct) {  5                        switch (tileh_north_aqueduct) {
6                            case SLOPE_S:  7                            case SLOPE_S:  
7                            case SLOPE_STEEP_S:  8                            case SLOPE_STEEP_S:  
8                                tileh_end_aqueduct = SLOPE_W;  8                                tileh_north_result = SLOPE_W;
9                                break;  10                                break;  
10                            case SLOPE_W:  11                            case SLOPE_W:  
11                            case SLOPE_STEEP_W:  12                            case SLOPE_STEEP_W:  
12                                tileh_end_aqueduct = SLOPE_S;  12                                tileh_north_result = SLOPE_S;
13                                break;  14                                break;  
14                            default: NOT_REACHED();  15                            default: NOT_REACHED();  
15                        }  16                        }  
  17                        break;  
  18  
16                    case SLOPE_NW:  19                    case SLOPE_NW:  
17                        switch (tileh_end_aqueduct) {  17                        switch (tileh_north_aqueduct) {
18                            case SLOPE_E:  21                            case SLOPE_E:  
19                            case SLOPE_STEEP_E:  22                            case SLOPE_STEEP_E:  
20                                tileh_end_aqueduct = SLOPE_S;  20                                tileh_north_result = SLOPE_S;
21                                break;  24                                break;  
22                            case SLOPE_S:  25                            case SLOPE_S:  
23                            case SLOPE_STEEP_S:  26                            case SLOPE_STEEP_S:  
24                                tileh_end_aqueduct = SLOPE_E;  27                                tileh_north_result = SLOPE_E;
   28                                break;
   29                            default: NOT_REACHED();
   30                    }
   31                    break;
   32
   33                    case SLOPE_SW:
   34                        switch (tileh_north_aqueduct) {
   35                            case SLOPE_N:
   36                            case SLOPE_STEEP_N:
   37                                tileh_north_result = SLOPE_E;
   38                                break;
   39                            case SLOPE_E:
   40                            case SLOPE_STEEP_E:
   41                                tileh_north_result = SLOPE_N;
25                                break;  42                                break;  
26                            default: NOT_REACHED();  43                            default: NOT_REACHED();  
27                        }  44                        }  
28                    case SLOPE_SW:  45                        break;
29                        switch (tileh_end_aqueduct) {  46
   47                    case SLOPE_SE:
   48                        switch (tileh_north_aqueduct) {
   49                            case SLOPE_W:
   50                            case SLOPE_STEEP_W:
   51                                tileh_north_result = SLOPE_N;
   52                                break;
30                            case SLOPE_N:  53                            case SLOPE_N:  
31                            case SLOPE_STEEP_N:  54                            case SLOPE_STEEP_N:  
32                                tileh_end_aqueduct = SLOPE_E;  32                                tileh_north_result = SLOPE_W;
33                                break;    
34                            case SLOPE_E:    
35                            case SLOPE_STEEP_E:    
36                                tileh_end_aqueduct = SLOPE_N;    
37                                break;  56                                break;  
38                            default: NOT_REACHED();  57                            default: NOT_REACHED();  
39                        }  58                        }  
40                    case SLOPE_SE:  40                        break;
41                        switch (tileh_end_aqueduct) {  41
42                            case SLOPE_W:    
43                            case SLOPE_STEEP_W:    
44                                tileh_end_aqueduct = SLOPE_N;    
45                                break;    
46                            case SLOPE_N:    
47                            case SLOPE_STEEP_N:    
48                                tileh_end_aqueduct = SLOPE_W;    
49                                break;    
50                            default: NOT_REACHED();    
51                        }    
52                    default: NOT_REACHED();  61                    default: NOT_REACHED();  
53                }  53                }
54                /* Mark the tile as already cleared for the terraform command.    
55                * Do this for all tiles (like trees), not only objects. */    
56                ClearedObjectArea *coa = FindClearedObject(tile_end);    
57                if (coa == NULL) {    
58                    coa = _cleared_object_areas.Append();    
59                    coa->first_tile = tile_end;    
60                    coa->area = TileArea(tile_end, 1, 1);    
61                }    
62    
63                /* Hide the tile from the terraforming command */    
64                TileIndex old_first_tile = coa->first_tile;    
65                coa->first_tile = INVALID_TILE;    
66                ret = DoCommand(tile_end, tileh_end_aqueduct, 1, flags, CMD_TERRAFORM_LAND);    
67                coa->first_tile = old_first_tile;    
68                if (ret.Failed()) return_cmd_error(STR_ERROR_UNABLE_TO_EXCAVATE_LAND);    
69                cost.AddCost(ret);    
70            }