scripting.coop_scripting   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 82
dl 0
loc 103
rs 10
c 0
b 0
f 0
wmc 7

5 Functions

Rating   Name   Duplication   Size   Complexity  
A fill_coop_entrant_lists() 0 7 1
B script_coop_settings() 0 50 1
A fill_entrant_list() 0 7 3
A coop_toggled() 0 5 1
A script_update_coop_settings() 0 17 1
1
import gettext
2
import os
3
4
import obspython as obs
5
from rtgg_obs import RacetimeObs
6
from . import fill_source_list
7
8
9
def script_coop_settings(props, rtgg_obs: RacetimeObs):
10
    lang = gettext.translation(
11
        "racetime-obs", localedir=os.environ['LOCALEDIR'])
12
    _ = lang.gettext
13
14
    p = obs.obs_properties_add_bool(
15
        props, "use_coop", _("Display coop information?"))
16
    obs.obs_property_set_modified_callback(p, coop_toggled)
17
    coop_group = obs.obs_properties_create()
18
    obs.obs_properties_add_group(
19
        props, "coop_group", _("Co-op Mode"), obs.OBS_GROUP_NORMAL, coop_group
20
    )
21
    obs.obs_property_set_visible(
22
        obs.obs_properties_get(props, "coop_group"), rtgg_obs.coop.enabled)
23
    p = obs.obs_properties_add_list(
24
        coop_group, "coop_partner", _("Co-op Partner"),
25
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING
26
    )
27
    p = obs.obs_properties_add_list(
28
        coop_group, "coop_opponent1", _("Co-op Rival 1"),
29
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING
30
    )
31
    p = obs.obs_properties_add_list(
32
        coop_group, "coop_opponent2", _("Co-op Rival 2"),
33
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING
34
    )
35
    fill_coop_entrant_lists(props, rtgg_obs)
36
    p = obs.obs_properties_add_list(
37
        coop_group, "coop_our_source", _("Our Team's Timer"),
38
        obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING
39
    )
40
    obs.obs_property_set_long_description(p, (
41
        _("This text source will display your team's timer when you finish.")
42
    ))
43
    fill_source_list(p)
44
    p = obs.obs_properties_add_list(
45
        coop_group, "coop_opponent_source", "Rival Team's Timer",
46
        obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING
47
    )
48
    obs.obs_property_set_long_description(p, (_(
49
        "This text source will be use to display your rival's timer when "
50
        "they finish")
51
    ))
52
    obs.obs_properties_add_color(
53
        coop_group, "coop_winner_color", _("Winner Color:"))
54
    obs.obs_properties_add_color(
55
        coop_group, "coop_loser_color", _("Loser Color:"))
56
    obs.obs_properties_add_color(
57
        coop_group, "coop_undetermined_color", _("Winner Undetermined Color"))
58
    fill_source_list(p)
59
60
61
def coop_toggled(props, prop, settings):
62
    vis = obs.obs_data_get_bool(settings, "use_coop")
63
    obs.obs_property_set_visible(
64
        obs.obs_properties_get(props, "coop_group"), vis)
65
    return True
66
67
68
def fill_coop_entrant_lists(props, rtgg_obs: RacetimeObs):
69
    fill_entrant_list(
70
        rtgg_obs.race, obs.obs_properties_get(props, "coop_partner"))
71
    fill_entrant_list(rtgg_obs.race, obs.obs_properties_get(
72
        props, "coop_opponent1"))
73
    fill_entrant_list(rtgg_obs.race, obs.obs_properties_get(
74
        props, "coop_opponent2"))
75
76
77
def fill_entrant_list(race, entrant_list):
78
    obs.obs_property_list_clear(entrant_list)
79
    obs.obs_property_list_add_string(entrant_list, "", "")
80
    if race is not None:
81
        for entrant in race.entrants:
82
            obs.obs_property_list_add_string(
83
                entrant_list, entrant.user.full_name, entrant.user.full_name)
84
85
86
def script_update_coop_settings(settings, rtgg_obs: RacetimeObs):
87
    rtgg_obs.coop.enabled = obs.obs_data_get_bool(settings, "use_coop")
88
    rtgg_obs.coop.partner = obs.obs_data_get_string(settings, "coop_partner")
89
    rtgg_obs.coop.opponent1 = obs.obs_data_get_string(
90
        settings, "coop_opponent1")
91
    rtgg_obs.coop.opponent2 = obs.obs_data_get_string(
92
        settings, "coop_opponent2")
93
    rtgg_obs.coop.our_time_source = (
94
        obs.obs_data_get_string(settings, "coop_our_source"))
95
    rtgg_obs.coop.opponent_time_source = obs.obs_data_get_string(
96
        settings, "coop_opponent_source")
97
    rtgg_obs.coop.winner_color = obs.obs_data_get_int(
98
        settings, "coop_winner_color")
99
    rtgg_obs.coop.loser_color = obs.obs_data_get_int(
100
        settings, "coop_loser_color")
101
    rtgg_obs.coop.still_racing_color = obs.obs_data_get_int(
102
        settings, "coop_undetermined_color")
103