Completed
Push — master ( 025da3...410210 )
by Oleksandr
01:36
created

il2fb.parsers.mission.sections.MDSParser   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Test Coverage

Coverage 100%
Metric Value
dl 0
loc 55
ccs 7
cts 7
cp 1
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
B clean() 0 43 1
A check_section_name() 0 2 1
A parse_line() 0 2 1
1
# -*- coding: utf-8 -*-
2
3 1
from ..converters import to_bool
4 1
from . import ValuesParser
5
6
7 1
class MDSParser(ValuesParser):
8
    """
9
    Parses ``MDS`` section.
10
    View :ref:`detailed description <mds-section>`.
11
    """
12
13 1
    def check_section_name(self, section_name):
14 1
        return section_name == "MDS"
15
16 1
    def parse_line(self, line):
17 1
        super(MDSParser, self).parse_line(line.replace('MDS_', ''))
18
19 1
    def clean(self):
20 1
        return {
21
            'conditions': {
22
                'radar': {
23
                    'advanced_mode': to_bool(self.data['Radar_SetRadarToAdvanceMode']),
24
                    'refresh_interval': int(self.data['Radar_RefreshInterval']),
25
                    'ships': {
26
                        'big': {
27
                            'max_range': int(self.data['Radar_ShipRadar_MaxRange']),
28
                            'min_height': int(self.data['Radar_ShipRadar_MinHeight']),
29
                            'max_height': int(self.data['Radar_ShipRadar_MaxHeight']),
30
                        },
31
                        'small': {
32
                            'max_range': int(self.data['Radar_ShipSmallRadar_MaxRange']),
33
                            'min_height': int(self.data['Radar_ShipSmallRadar_MinHeight']),
34
                            'max_height': int(self.data['Radar_ShipSmallRadar_MaxHeight']),
35
                        },
36
                    },
37
                    'scouts': {
38
                        'max_range': int(self.data['Radar_ScoutRadar_MaxRange']),
39
                        'max_height': int(self.data['Radar_ScoutRadar_DeltaHeight']),
40
                        'alpha': int(self.data['Radar_ScoutGroundObjects_Alpha']),
41
                    },
42
                },
43
                'scouting': {
44
                    'ships_affect_radar': to_bool(self.data['Radar_ShipsAsRadar']),
45
                    'scouts_affect_radar': to_bool(self.data['Radar_ScoutsAsRadar']),
46
                    'only_scouts_complete_targets': to_bool(self.data['Radar_ScoutCompleteRecon']),
47
                },
48
                'communication': {
49
                    'tower_communication': to_bool(self.data['Radar_EnableTowerCommunications']),
50
                    'vectoring': not to_bool(self.data['Radar_DisableVectoring']),
51
                    'ai_radio_silence': to_bool(self.data['Misc_DisableAIRadioChatter']),
52
                },
53
                'home_bases': {
54
                    'hide_ai_aircrafts_after_landing': to_bool(self.data['Misc_DespawnAIPlanesAfterLanding']),
55
                    'hide_unpopulated': to_bool(self.data['Radar_HideUnpopulatedAirstripsFromMinimap']),
56
                    'hide_players_count': to_bool(self.data['Misc_HidePlayersCountOnHomeBase']),
57
                },
58
                'crater_visibility_muptipliers': {
59
                    'le_100kg': float(self.data['Misc_BombsCat1_CratersVisibilityMultiplier']),
60
                    'le_1000kg': float(self.data['Misc_BombsCat2_CratersVisibilityMultiplier']),
61
                    'gt_1000kg': float(self.data['Misc_BombsCat3_CratersVisibilityMultiplier']),
62
                },
63
            },
64
        }
65