File size: 1,590 Bytes
4ee4376
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import { bin2str } from './common';

export default (data, map) => {
  let view = new DataView(data.buffer, data.byteOffset, data.byteLength);

  for (let i = 0; i < data.byteLength / 2; i++) {
    let bits = view.getUint16(i * 2);
    let altm = {};

    // how many levels below altitude should we display a grey block
    // for a tunnel?
    altm.tunnelLevels    = (((bits >> 8) & 0b11111100) >> 2);

    // related to tunnel?
    // appears to be set to 1 for hydroelectric dams and nearby
    // surface water tiles
    // not used for now
    //altm.unknownBits     = ((bits >> 8) & 0b00000011);

    // level / altitude
    altm.altitude        = (bits & 0b0000000000011111);

    // unknown, not always accurate (rely on XTER value instead)
    // not used for now
    //altm.waterLevel      = (bits & 0b0000000001100000) >> 5;

    // unknown, not always accurate (rely on XTER value instead)
    // not used for now
    //altm.waterCovered    = (bits & 0b0000000010000000) >> 7;

    // raw binary values as strings for research/debug
    altm.binaryText = {
      bits:             bin2str(bits, 16),
      first8bits:       bin2str((bits & 0b1111111100000000) >> 8, 8),
      last8bits:        bin2str((bits & 0b0000000011111111), 8),
      //tunnelLevelsBits: bin2str(altm.tunnelLevels, 8),
      //unknownBits:      bin2str(altm.unknownBits,  8),
      //altitudeBits:     bin2str(altm.altitude,     8),
      //waterLevelBits:   bin2str(altm.waterLevel,   8),
      //waterCoveredBits: bin2str(altm.waterCovered, 8),
    };

    map.cells[i]._segmentData.ALTM = altm;
  }
};