Passed
Pull Request — master (#7)
by manny
04:09
created

season_or_mode_changed()   A

Complexity

Conditions 1

Size

Total Lines 4
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nop 4
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
import asyncio
2
from enum import Enum, auto
3
from gadgets.ladder_timer import LadderTimer
4
5
import obspython as obs
6
from scripting import fill_source_list
7
8
9
def _(message):
10
    return message
11
12
13
class LadderProperties(str, Enum):
14
    ladder_group = auto()
15
    ladder_name = auto()
16
    ladder_season = auto()
17
    ladder_mode = auto()
18
    all_seasons = auto()
19
    current_season = auto()
20
    all_modes = auto()
21
    current_mode = auto()
22
    stats_source = auto()
23
    show_season_name = auto()
24
    show_mode_name = auto()
25
    show_rating = auto()
26
    show_rank = auto()
27
    show_change = auto()
28
    show_win_loss_tie = auto()
29
    pre_color = auto()
30
    racing_color = auto()
31
    winner_color = auto()
32
    loser_color = auto()
33
    ff_color = auto()
34
35
36
lp = LadderProperties
37
ladder_timer: LadderTimer = None
38
39
40
def script_ladder_settings(props):
41
    ladder_group = obs.obs_properties_create()
42
    obs.obs_properties_add_group(
43
        props, lp.ladder_group, _("Ladder Settings"), obs.OBS_GROUP_NORMAL,
44
        ladder_group)
45
    p = obs.obs_properties_add_text(
46
        ladder_group, lp.ladder_name, _("Ladder Name"), obs.OBS_TEXT_DEFAULT)
47
    obs.obs_property_set_modified_callback(p, name_modified)
48
    obs.obs_properties_add_color(
49
        ladder_group, lp.pre_color, _("Color Pre-Race"))
50
    obs.obs_properties_add_color(
51
        ladder_group, lp.racing_color, _("Still Racing Color"))
52
    obs.obs_properties_add_color(
53
        ladder_group, lp.winner_color, _("Winner Color"))
54
    obs.obs_properties_add_color(
55
        ladder_group, lp.loser_color, _("Loser Color"))
56
    obs.obs_properties_add_color(
57
        ladder_group, lp.ff_color, _("Forfeit Color"))
58
    p = obs.obs_properties_add_list(
59
            ladder_group, lp.stats_source, _("Ladder Stats Source"),
60
            obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING
61
        )
62
    fill_source_list(p)
63
    obs.obs_properties_add_bool(
64
        ladder_group, lp.show_season_name, _("Show Season Name")
65
    )
66
    obs.obs_properties_add_bool(
67
        ladder_group, lp.show_mode_name, _("Show Mode Name")
68
    )
69
    obs.obs_properties_add_bool(
70
        ladder_group, lp.show_rating, _("Show Rating")
71
    )
72
    obs.obs_properties_add_bool(
73
        ladder_group, lp.show_rank, _("Show Rank")
74
    )
75
    obs.obs_properties_add_bool(
76
        ladder_group, lp.show_change, _("Show Change")
77
    )
78
    obs.obs_properties_add_bool(
79
        ladder_group, lp.show_win_loss_tie, _("Show Win/Loss/Tie Record")
80
    )
81
    p = obs.obs_properties_add_list(
82
        ladder_group, lp.ladder_season, _("Season for Stats"),
83
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING
84
    )
85
    obs.obs_property_set_modified_callback(p, season_or_mode_changed)
86
    obs.obs_property_list_add_string(p, _("Lifetime"), "0")
87
    obs.obs_property_list_add_string(p, _("Current Season"), "-1")
88
    p = obs.obs_properties_add_list(
89
        ladder_group, lp.ladder_mode, _("Mode for Stats"),
90
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING
91
    )
92
    obs.obs_property_set_modified_callback(p, season_or_mode_changed)
93
    obs.obs_property_list_add_string(p, _("Global"), "0")
94
    obs.obs_property_list_add_string(p, _("Current Mode"), "-1")
95
96
97
def script_update_ladder_settings(settings):
98
    user_name = obs.obs_data_get_string(settings, lp.ladder_name)
99
    lt = ladder_timer
100
    lt.update_settings(user_name)
101
    lt.pre_color = obs.obs_data_get_int(settings, lp.pre_color)
102
    lt.racing_color = obs.obs_data_get_int(settings, lp.racing_color)
103
    lt.winner_color = obs.obs_data_get_int(settings, lp.winner_color)
104
    lt.loser_color = obs.obs_data_get_int(settings, lp.loser_color)
105
    lt.ff_color = obs.obs_data_get_int(settings, lp.ff_color)
106
    lt.stats_source = obs.obs_data_get_string(settings, lp.stats_source)
107
    lt.show_season_name = obs.obs_data_get_bool(settings, lp.show_season_name)
108
    lt.show_mode_name = obs.obs_data_get_bool(settings, lp.show_mode_name)
109
    lt.show_rating = obs.obs_data_get_bool(settings, lp.show_rating)
110
    lt.show_rank = obs.obs_data_get_bool(settings, lp.show_rank)
111
    lt.show_change = obs.obs_data_get_bool(settings, lp.show_change)
112
    lt.show_win_loss_tie = obs.obs_data_get_bool(
113
        settings, lp.show_win_loss_tie)
114
    lt.season_for_stats = int(
115
        obs.obs_data_get_string(settings, lp.ladder_season))
116
    lt.mode_for_stats = int(
117
        obs.obs_data_get_string(settings, lp.ladder_mode))
118
119
120
def name_modified(props, prop, *args, **kwargs):
121
    racer_name = obs.obs_data_get_string(args[0], lp.ladder_name)
122
    p = obs.obs_properties_get(props, lp.ladder_name)
123
    if ladder_timer.update_settings(racer_name):
124
        obs.obs_property_set_description(p, _("Ladder Name ✅"))
125
    else:
126
        obs.obs_property_set_description(p, _("Ladder Name ❌"))
127
    return True
128
129
130
def season_or_mode_changed(proprs, prop, *args, **kwargs):
131
    loop = asyncio.new_event_loop()
132
    loop.run_until_complete(ladder_timer.update_stats())
133
    loop.close()
134