Passed
Pull Request — master (#2)
by manny
01:42
created

scripting.coop_scripting.script_coop_settings()   B

Complexity

Conditions 1

Size

Total Lines 46
Code Lines 37

Duplication

Lines 0
Ratio 0 %

Importance

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