sonolus.py 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sonolus.py might be problematic. Click here for more details.
- sonolus/__init__.py +0 -0
- sonolus/backend/__init__.py +0 -0
- sonolus/backend/allocate.py +51 -0
- sonolus/backend/blocks.py +756 -0
- sonolus/backend/excepthook.py +37 -0
- sonolus/backend/finalize.py +69 -0
- sonolus/backend/flow.py +92 -0
- sonolus/backend/interpret.py +333 -0
- sonolus/backend/ir.py +89 -0
- sonolus/backend/mode.py +24 -0
- sonolus/backend/node.py +40 -0
- sonolus/backend/ops.py +197 -0
- sonolus/backend/optimize.py +9 -0
- sonolus/backend/passes.py +6 -0
- sonolus/backend/place.py +90 -0
- sonolus/backend/simplify.py +30 -0
- sonolus/backend/utils.py +48 -0
- sonolus/backend/visitor.py +880 -0
- sonolus/build/__init__.py +0 -0
- sonolus/build/cli.py +170 -0
- sonolus/build/collection.py +293 -0
- sonolus/build/compile.py +90 -0
- sonolus/build/defaults.py +32 -0
- sonolus/build/engine.py +149 -0
- sonolus/build/level.py +23 -0
- sonolus/build/node.py +43 -0
- sonolus/build/project.py +94 -0
- sonolus/py.typed +0 -0
- sonolus/script/__init__.py +0 -0
- sonolus/script/archetype.py +651 -0
- sonolus/script/array.py +241 -0
- sonolus/script/bucket.py +192 -0
- sonolus/script/callbacks.py +105 -0
- sonolus/script/comptime.py +146 -0
- sonolus/script/containers.py +247 -0
- sonolus/script/debug.py +70 -0
- sonolus/script/effect.py +132 -0
- sonolus/script/engine.py +101 -0
- sonolus/script/globals.py +234 -0
- sonolus/script/graphics.py +141 -0
- sonolus/script/icon.py +73 -0
- sonolus/script/internal/__init__.py +5 -0
- sonolus/script/internal/builtin_impls.py +144 -0
- sonolus/script/internal/context.py +365 -0
- sonolus/script/internal/descriptor.py +17 -0
- sonolus/script/internal/error.py +15 -0
- sonolus/script/internal/generic.py +197 -0
- sonolus/script/internal/impl.py +69 -0
- sonolus/script/internal/introspection.py +14 -0
- sonolus/script/internal/native.py +38 -0
- sonolus/script/internal/value.py +144 -0
- sonolus/script/interval.py +98 -0
- sonolus/script/iterator.py +211 -0
- sonolus/script/level.py +52 -0
- sonolus/script/math.py +92 -0
- sonolus/script/num.py +382 -0
- sonolus/script/options.py +194 -0
- sonolus/script/particle.py +158 -0
- sonolus/script/pointer.py +30 -0
- sonolus/script/project.py +17 -0
- sonolus/script/range.py +58 -0
- sonolus/script/record.py +293 -0
- sonolus/script/runtime.py +526 -0
- sonolus/script/sprite.py +332 -0
- sonolus/script/text.py +404 -0
- sonolus/script/timing.py +42 -0
- sonolus/script/transform.py +118 -0
- sonolus/script/ui.py +160 -0
- sonolus/script/values.py +43 -0
- sonolus/script/vec.py +48 -0
- sonolus_py-0.1.0.dist-info/METADATA +10 -0
- sonolus_py-0.1.0.dist-info/RECORD +75 -0
- sonolus_py-0.1.0.dist-info/WHEEL +4 -0
- sonolus_py-0.1.0.dist-info/entry_points.txt +2 -0
- sonolus_py-0.1.0.dist-info/licenses/LICENSE +21 -0
sonolus/script/text.py
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
class StandardText:
|
|
2
|
+
Post = "#POST"
|
|
3
|
+
Playlist = "#PLAYLIST"
|
|
4
|
+
Level = "#LEVEL"
|
|
5
|
+
Skin = "#SKIN"
|
|
6
|
+
Background = "#BACKGROUND"
|
|
7
|
+
Effect = "#EFFECT"
|
|
8
|
+
Particle = "#PARTICLE"
|
|
9
|
+
Engine = "#ENGINE"
|
|
10
|
+
Replay = "#REPLAY"
|
|
11
|
+
Room = "#ROOM"
|
|
12
|
+
Grade = "#GRADE"
|
|
13
|
+
ArcadeScore = "#ARCADE_SCORE"
|
|
14
|
+
AccuracyScore = "#ACCURACY_SCORE"
|
|
15
|
+
Combo = "#COMBO"
|
|
16
|
+
Perfect = "#PERFECT"
|
|
17
|
+
Great = "#GREAT"
|
|
18
|
+
Good = "#GOOD"
|
|
19
|
+
Miss = "#MISS"
|
|
20
|
+
Keywords = "#KEYWORDS"
|
|
21
|
+
Name = "#NAME"
|
|
22
|
+
Rating = "#RATING"
|
|
23
|
+
RatingMinimum = "#RATING_MINIMUM"
|
|
24
|
+
RatingMaximum = "#RATING_MAXIMUM"
|
|
25
|
+
Title = "#TITLE"
|
|
26
|
+
Subtitle = "#SUBTITLE"
|
|
27
|
+
Artists = "#ARTISTS"
|
|
28
|
+
Time = "#TIME"
|
|
29
|
+
Author = "#AUTHOR"
|
|
30
|
+
Genre = "#GENRE"
|
|
31
|
+
Type = "#TYPE"
|
|
32
|
+
Category = "#CATEGORY"
|
|
33
|
+
Language = "#LANGUAGE"
|
|
34
|
+
Difficulty = "#DIFFICULTY"
|
|
35
|
+
Version = "#VERSION"
|
|
36
|
+
Length = "#LENGTH"
|
|
37
|
+
LengthMinimum = "#LENGTH_MINIMUM"
|
|
38
|
+
LengthMaximum = "#LENGTH_MAXIMUM"
|
|
39
|
+
AdditionalInformation = "#ADDITIONAL_INFORMATION"
|
|
40
|
+
Timezone = "#TIMEZONE"
|
|
41
|
+
Region = "#REGION"
|
|
42
|
+
Content = "#CONTENT"
|
|
43
|
+
Comment = "#COMMENT"
|
|
44
|
+
Review = "#REVIEW"
|
|
45
|
+
Reply = "#REPLY"
|
|
46
|
+
Message = "#MESSAGE"
|
|
47
|
+
Role = "#ROLE"
|
|
48
|
+
Permission = "#PERMISSION"
|
|
49
|
+
User = "#USER"
|
|
50
|
+
Speed = "#SPEED"
|
|
51
|
+
Mirror = "#MIRROR"
|
|
52
|
+
Random = "#RANDOM"
|
|
53
|
+
Hidden = "#HIDDEN"
|
|
54
|
+
JudgmentStrict = "#JUDGMENT_STRICT"
|
|
55
|
+
JudgmentLoose = "#JUDGMENT_LOOSE"
|
|
56
|
+
EffectAuto = "#EFFECT_AUTO"
|
|
57
|
+
Stage = "#STAGE"
|
|
58
|
+
StagePosition = "#STAGE_POSITION"
|
|
59
|
+
StageSize = "#STAGE_SIZE"
|
|
60
|
+
StageRotation = "#STAGE_ROTATION"
|
|
61
|
+
StageDirection = "#STAGE_DIRECTION"
|
|
62
|
+
StageAlpha = "#STAGE_ALPHA"
|
|
63
|
+
StageAnimation = "#STAGE_ANIMATION"
|
|
64
|
+
StageTilt = "#STAGE_TILT"
|
|
65
|
+
StageCoverVertical = "#STAGE_COVER_VERTICAL"
|
|
66
|
+
StageCoverHorizontal = "#STAGE_COVER_HORIZONTAL"
|
|
67
|
+
StageCoverAlpha = "#STAGE_COVER_ALPHA"
|
|
68
|
+
StageAspectratioLock = "#STAGE_ASPECTRATIO_LOCK"
|
|
69
|
+
StageEffect = "#STAGE_EFFECT"
|
|
70
|
+
StageEffectPosition = "#STAGE_EFFECT_POSITION"
|
|
71
|
+
StageEffectSize = "#STAGE_EFFECT_SIZE"
|
|
72
|
+
StageEffectRotation = "#STAGE_EFFECT_ROTATION"
|
|
73
|
+
StageEffectDirection = "#STAGE_EFFECT_DIRECTION"
|
|
74
|
+
StageEffectAlpha = "#STAGE_EFFECT_ALPHA"
|
|
75
|
+
Lane = "#LANE"
|
|
76
|
+
LanePosition = "#LANE_POSITION"
|
|
77
|
+
LaneSize = "#LANE_SIZE"
|
|
78
|
+
LaneRotation = "#LANE_ROTATION"
|
|
79
|
+
LaneDirection = "#LANE_DIRECTION"
|
|
80
|
+
LaneAlpha = "#LANE_ALPHA"
|
|
81
|
+
LaneAnimation = "#LANE_ANIMATION"
|
|
82
|
+
LaneEffect = "#LANE_EFFECT"
|
|
83
|
+
LaneEffectPosition = "#LANE_EFFECT_POSITION"
|
|
84
|
+
LaneEffectSize = "#LANE_EFFECT_SIZE"
|
|
85
|
+
LaneEffectRotation = "#LANE_EFFECT_ROTATION"
|
|
86
|
+
LaneEffectDirection = "#LANE_EFFECT_DIRECTION"
|
|
87
|
+
LaneEffectAlpha = "#LANE_EFFECT_ALPHA"
|
|
88
|
+
Judgeline = "#JUDGELINE"
|
|
89
|
+
JudgelinePosition = "#JUDGELINE_POSITION"
|
|
90
|
+
JudgelineSize = "#JUDGELINE_SIZE"
|
|
91
|
+
JudgelineRotation = "#JUDGELINE_ROTATION"
|
|
92
|
+
JudgelineDirection = "#JUDGELINE_DIRECTION"
|
|
93
|
+
JudgelineAlpha = "#JUDGELINE_ALPHA"
|
|
94
|
+
JudgelineAnimation = "#JUDGELINE_ANIMATION"
|
|
95
|
+
JudgelineEffect = "#JUDGELINE_EFFECT"
|
|
96
|
+
JudgelineEffectPosition = "#JUDGELINE_EFFECT_POSITION"
|
|
97
|
+
JudgelineEffectSize = "#JUDGELINE_EFFECT_SIZE"
|
|
98
|
+
JudgelineEffectRotation = "#JUDGELINE_EFFECT_ROTATION"
|
|
99
|
+
JudgelineEffectDirection = "#JUDGELINE_EFFECT_DIRECTION"
|
|
100
|
+
JudgelineEffectAlpha = "#JUDGELINE_EFFECT_ALPHA"
|
|
101
|
+
Slot = "#SLOT"
|
|
102
|
+
SlotPosition = "#SLOT_POSITION"
|
|
103
|
+
SlotSize = "#SLOT_SIZE"
|
|
104
|
+
SlotRotation = "#SLOT_ROTATION"
|
|
105
|
+
SlotDirection = "#SLOT_DIRECTION"
|
|
106
|
+
SlotAlpha = "#SLOT_ALPHA"
|
|
107
|
+
SlotAnimation = "#SLOT_ANIMATION"
|
|
108
|
+
SlotEffect = "#SLOT_EFFECT"
|
|
109
|
+
SlotEffectPosition = "#SLOT_EFFECT_POSITION"
|
|
110
|
+
SlotEffectSize = "#SLOT_EFFECT_SIZE"
|
|
111
|
+
SlotEffectRotation = "#SLOT_EFFECT_ROTATION"
|
|
112
|
+
SlotEffectDirection = "#SLOT_EFFECT_DIRECTION"
|
|
113
|
+
SlotEffectAlpha = "#SLOT_EFFECT_ALPHA"
|
|
114
|
+
Note = "#NOTE"
|
|
115
|
+
NoteSpeed = "#NOTE_SPEED"
|
|
116
|
+
NoteSpeedRandom = "#NOTE_SPEED_RANDOM"
|
|
117
|
+
NotePosition = "#NOTE_POSITION"
|
|
118
|
+
NoteSize = "#NOTE_SIZE"
|
|
119
|
+
NoteRotation = "#NOTE_ROTATION"
|
|
120
|
+
NoteDirection = "#NOTE_DIRECTION"
|
|
121
|
+
NoteColor = "#NOTE_COLOR"
|
|
122
|
+
NoteAlpha = "#NOTE_ALPHA"
|
|
123
|
+
NoteAnimation = "#NOTE_ANIMATION"
|
|
124
|
+
NoteEffect = "#NOTE_EFFECT"
|
|
125
|
+
NoteEffectPosition = "#NOTE_EFFECT_POSITION"
|
|
126
|
+
NoteEffectSize = "#NOTE_EFFECT_SIZE"
|
|
127
|
+
NoteEffectRotation = "#NOTE_EFFECT_ROTATION"
|
|
128
|
+
NoteEffectDirection = "#NOTE_EFFECT_DIRECTION"
|
|
129
|
+
NoteEffectColor = "#NOTE_EFFECT_COLOR"
|
|
130
|
+
NoteEffectAlpha = "#NOTE_EFFECT_ALPHA"
|
|
131
|
+
Marker = "#MARKER"
|
|
132
|
+
MarkerPosition = "#MARKER_POSITION"
|
|
133
|
+
MarkerSize = "#MARKER_SIZE"
|
|
134
|
+
MarkerRotation = "#MARKER_ROTATION"
|
|
135
|
+
MarkerDirection = "#MARKER_DIRECTION"
|
|
136
|
+
MarkerColor = "#MARKER_COLOR"
|
|
137
|
+
MarkerAlpha = "#MARKER_ALPHA"
|
|
138
|
+
MarkerAnimation = "#MARKER_ANIMATION"
|
|
139
|
+
Connector = "#CONNECTOR"
|
|
140
|
+
ConnectorPosition = "#CONNECTOR_POSITION"
|
|
141
|
+
ConnectorSize = "#CONNECTOR_SIZE"
|
|
142
|
+
ConnectorRotation = "#CONNECTOR_ROTATION"
|
|
143
|
+
ConnectorDirection = "#CONNECTOR_DIRECTION"
|
|
144
|
+
ConnectorColor = "#CONNECTOR_COLOR"
|
|
145
|
+
ConnectorAlpha = "#CONNECTOR_ALPHA"
|
|
146
|
+
ConnectorAnimation = "#CONNECTOR_ANIMATION"
|
|
147
|
+
Simline = "#SIMLINE"
|
|
148
|
+
SimlinePosition = "#SIMLINE_POSITION"
|
|
149
|
+
SimlineSize = "#SIMLINE_SIZE"
|
|
150
|
+
SimlineRotation = "#SIMLINE_ROTATION"
|
|
151
|
+
SimlineDirection = "#SIMLINE_DIRECTION"
|
|
152
|
+
SimlineColor = "#SIMLINE_COLOR"
|
|
153
|
+
SimlineAlpha = "#SIMLINE_ALPHA"
|
|
154
|
+
SimlineAnimation = "#SIMLINE_ANIMATION"
|
|
155
|
+
None_ = "#NONE"
|
|
156
|
+
Any = "#ANY"
|
|
157
|
+
All = "#ALL"
|
|
158
|
+
Others = "#OTHERS"
|
|
159
|
+
Short = "#SHORT"
|
|
160
|
+
Long = "#LONG"
|
|
161
|
+
High = "#HIGH"
|
|
162
|
+
Mid = "#MID"
|
|
163
|
+
Low = "#LOW"
|
|
164
|
+
Small = "#SMALL"
|
|
165
|
+
Medium = "#MEDIUM"
|
|
166
|
+
Large = "#LARGE"
|
|
167
|
+
Left = "#LEFT"
|
|
168
|
+
Right = "#RIGHT"
|
|
169
|
+
Up = "#UP"
|
|
170
|
+
Down = "#DOWN"
|
|
171
|
+
Front = "#FRONT"
|
|
172
|
+
Back = "#BACK"
|
|
173
|
+
Center = "#CENTER"
|
|
174
|
+
Top = "#TOP"
|
|
175
|
+
Bottom = "#BOTTOM"
|
|
176
|
+
TopLeft = "#TOP_LEFT"
|
|
177
|
+
TopCenter = "#TOP_CENTER"
|
|
178
|
+
TopRight = "#TOP_RIGHT"
|
|
179
|
+
CenterLeft = "#CENTER_LEFT"
|
|
180
|
+
CenterRight = "#CENTER_RIGHT"
|
|
181
|
+
BottomLeft = "#BOTTOM_LEFT"
|
|
182
|
+
BottomCenter = "#BOTTOM_CENTER"
|
|
183
|
+
BottomRight = "#BOTTOM_RIGHT"
|
|
184
|
+
Clockwise = "#CLOCKWISE"
|
|
185
|
+
Counterclockwise = "#COUNTERCLOCKWISE"
|
|
186
|
+
Forward = "#FORWARD"
|
|
187
|
+
Backward = "#BACKWARD"
|
|
188
|
+
Default = "#DEFAULT"
|
|
189
|
+
Neutral = "#NEUTRAL"
|
|
190
|
+
Red = "#RED"
|
|
191
|
+
Green = "#GREEN"
|
|
192
|
+
Blue = "#BLUE"
|
|
193
|
+
Yellow = "#YELLOW"
|
|
194
|
+
Purple = "#PURPLE"
|
|
195
|
+
Cyan = "#CYAN"
|
|
196
|
+
Simple = "#SIMPLE"
|
|
197
|
+
Easy = "#EASY"
|
|
198
|
+
Normal = "#NORMAL"
|
|
199
|
+
Hard = "#HARD"
|
|
200
|
+
Expert = "#EXPERT"
|
|
201
|
+
Master = "#MASTER"
|
|
202
|
+
Pro = "#PRO"
|
|
203
|
+
Technical = "#TECHNICAL"
|
|
204
|
+
Special = "#SPECIAL"
|
|
205
|
+
KeywordsPlaceholder = "#KEYWORDS_PLACEHOLDER"
|
|
206
|
+
NamePlaceholder = "#NAME_PLACEHOLDER"
|
|
207
|
+
RatingPlaceholder = "#RATING_PLACEHOLDER"
|
|
208
|
+
RatingMinimumPlaceholder = "#RATING_MINIMUM_PLACEHOLDER"
|
|
209
|
+
RatingMaximumPlaceholder = "#RATING_MAXIMUM_PLACEHOLDER"
|
|
210
|
+
TitlePlaceholder = "#TITLE_PLACEHOLDER"
|
|
211
|
+
SubtitlePlaceholder = "#SUBTITLE_PLACEHOLDER"
|
|
212
|
+
ArtistsPlaceholder = "#ARTISTS_PLACEHOLDER"
|
|
213
|
+
TimePlaceholder = "#TIME_PLACEHOLDER"
|
|
214
|
+
AuthorPlaceholder = "#AUTHOR_PLACEHOLDER"
|
|
215
|
+
GenrePlaceholder = "#GENRE_PLACEHOLDER"
|
|
216
|
+
TypePlaceholder = "#TYPE_PLACEHOLDER"
|
|
217
|
+
CategoryPlaceholder = "#CATEGORY_PLACEHOLDER"
|
|
218
|
+
LanguagePlaceholder = "#LANGUAGE_PLACEHOLDER"
|
|
219
|
+
DifficultyPlaceholder = "#DIFFICULTY_PLACEHOLDER"
|
|
220
|
+
LengthPlaceholder = "#LENGTH_PLACEHOLDER"
|
|
221
|
+
LengthMinimumPlaceholder = "#LENGTH_MINIMUM_PLACEHOLDER"
|
|
222
|
+
LengthMaximumPlaceholder = "#LENGTH_MAXIMUM_PLACEHOLDER"
|
|
223
|
+
AdditionalInformationPlaceholder = "#ADDITIONAL_INFORMATION_PLACEHOLDER"
|
|
224
|
+
TimezonePlaceholder = "#TIMEZONE_PLACEHOLDER"
|
|
225
|
+
RegionPlaceholder = "#REGION_PLACEHOLDER"
|
|
226
|
+
ContentPlaceholder = "#CONTENT_PLACEHOLDER"
|
|
227
|
+
CommentPlaceholder = "#COMMENT_PLACEHOLDER"
|
|
228
|
+
ReviewPlaceholder = "#REVIEW_PLACEHOLDER"
|
|
229
|
+
ReplyPlaceholder = "#REPLY_PLACEHOLDER"
|
|
230
|
+
MessagePlaceholder = "#MESSAGE_PLACEHOLDER"
|
|
231
|
+
RolePlaceholder = "#ROLE_PLACEHOLDER"
|
|
232
|
+
PermissionPlaceholder = "#PERMISSION_PLACEHOLDER"
|
|
233
|
+
UserPlaceholder = "#USER_PLACEHOLDER"
|
|
234
|
+
PercentageUnit = "#PERCENTAGE_UNIT"
|
|
235
|
+
SecondUnit = "#SECOND_UNIT"
|
|
236
|
+
MillisecondUnit = "#MILLISECOND_UNIT"
|
|
237
|
+
Tap = "#TAP"
|
|
238
|
+
TapHold = "#TAP_HOLD"
|
|
239
|
+
TapRelease = "#TAP_RELEASE"
|
|
240
|
+
TapFlick = "#TAP_FLICK"
|
|
241
|
+
TapSlide = "#TAP_SLIDE"
|
|
242
|
+
Hold = "#HOLD"
|
|
243
|
+
HoldSlide = "#HOLD_SLIDE"
|
|
244
|
+
HoldFollow = "#HOLD_FOLLOW"
|
|
245
|
+
Release = "#RELEASE"
|
|
246
|
+
Flick = "#FLICK"
|
|
247
|
+
Slide = "#SLIDE"
|
|
248
|
+
SlideFlick = "#SLIDE_FLICK"
|
|
249
|
+
Avoid = "#AVOID"
|
|
250
|
+
Jiggle = "#JIGGLE"
|
|
251
|
+
Newest = "#NEWEST"
|
|
252
|
+
Oldest = "#OLDEST"
|
|
253
|
+
Recommended = "#RECOMMENDED"
|
|
254
|
+
Popular = "#POPULAR"
|
|
255
|
+
Featured = "#FEATURED"
|
|
256
|
+
Competitive = "#COMPETITIVE"
|
|
257
|
+
Holiday = "#HOLIDAY"
|
|
258
|
+
Limited = "#LIMITED"
|
|
259
|
+
Following = "#FOLLOWING"
|
|
260
|
+
Announcement = "#ANNOUNCEMENT"
|
|
261
|
+
Information = "#INFORMATION"
|
|
262
|
+
Help = "#HELP"
|
|
263
|
+
Maintenance = "#MAINTENANCE"
|
|
264
|
+
Event = "#EVENT"
|
|
265
|
+
Update = "#UPDATE"
|
|
266
|
+
Search = "#SEARCH"
|
|
267
|
+
Advanced = "#ADVANCED"
|
|
268
|
+
Related = "#RELATED"
|
|
269
|
+
SameAuthor = "#SAME_AUTHOR"
|
|
270
|
+
SameArtists = "#SAME_ARTISTS"
|
|
271
|
+
SameRating = "#SAME_RATING"
|
|
272
|
+
SameCategory = "#SAME_CATEGORY"
|
|
273
|
+
SameDifficulty = "#SAME_DIFFICULTY"
|
|
274
|
+
SameGenre = "#SAME_GENRE"
|
|
275
|
+
SameVersion = "#SAME_VERSION"
|
|
276
|
+
OtherAuthors = "#OTHER_AUTHORS"
|
|
277
|
+
OtherArtists = "#OTHER_ARTISTS"
|
|
278
|
+
OtherRatings = "#OTHER_RATINGS"
|
|
279
|
+
OtherCategories = "#OTHER_CATEGORIES"
|
|
280
|
+
OtherDifficulties = "#OTHER_DIFFICULTIES"
|
|
281
|
+
OtherGenres = "#OTHER_GENRES"
|
|
282
|
+
OtherVersions = "#OTHER_VERSIONS"
|
|
283
|
+
Draft = "#DRAFT"
|
|
284
|
+
Reviewing = "#REVIEWING"
|
|
285
|
+
Published = "#PUBLISHED"
|
|
286
|
+
Verifying = "#VERIFYING"
|
|
287
|
+
Verified = "#VERIFIED"
|
|
288
|
+
Removed = "#REMOVED"
|
|
289
|
+
Public = "#PUBLIC"
|
|
290
|
+
Private = "#PRIVATE"
|
|
291
|
+
Locked = "#LOCKED"
|
|
292
|
+
Pop = "#POP"
|
|
293
|
+
Rock = "#ROCK"
|
|
294
|
+
Hiphop = "#HIPHOP"
|
|
295
|
+
Country = "#COUNTRY"
|
|
296
|
+
Electronic = "#ELECTRONIC"
|
|
297
|
+
Metal = "#METAL"
|
|
298
|
+
Classical = "#CLASSICAL"
|
|
299
|
+
Folk = "#FOLK"
|
|
300
|
+
Indie = "#INDIE"
|
|
301
|
+
Anime = "#ANIME"
|
|
302
|
+
Vocaloid = "#VOCALOID"
|
|
303
|
+
Remix = "#REMIX"
|
|
304
|
+
Instrumental = "#INSTRUMENTAL"
|
|
305
|
+
ShortVersion = "#SHORT_VERSION"
|
|
306
|
+
LongVersion = "#LONG_VERSION"
|
|
307
|
+
LiveVersion = "#LIVE_VERSION"
|
|
308
|
+
Report = "#REPORT"
|
|
309
|
+
Reason = "#REASON"
|
|
310
|
+
IllegalActivities = "#ILLEGAL_ACTIVITIES"
|
|
311
|
+
Cheating = "#CHEATING"
|
|
312
|
+
Afk = "#AFK"
|
|
313
|
+
Spamming = "#SPAMMING"
|
|
314
|
+
VerbalAbuse = "#VERBAL_ABUSE"
|
|
315
|
+
InappropriateLanguage = "#INAPPROPRIATE_LANGUAGE"
|
|
316
|
+
NegativeAttitude = "#NEGATIVE_ATTITUDE"
|
|
317
|
+
Dnf = "#DNF"
|
|
318
|
+
Suggestions = "#SUGGESTIONS"
|
|
319
|
+
SuggestionsPerPlayer = "#SUGGESTIONS_PER_PLAYER"
|
|
320
|
+
MatchScoring = "#MATCH_SCORING"
|
|
321
|
+
MatchTiebreaker = "#MATCH_TIEBREAKER"
|
|
322
|
+
MatchCount = "#MATCH_COUNT"
|
|
323
|
+
MatchLimit = "#MATCH_LIMIT"
|
|
324
|
+
RoundScoring = "#ROUND_SCORING"
|
|
325
|
+
RoundTiebreaker = "#ROUND_TIEBREAKER"
|
|
326
|
+
RoundCount = "#ROUND_COUNT"
|
|
327
|
+
RoundLimit = "#ROUND_LIMIT"
|
|
328
|
+
TeamScoring = "#TEAM_SCORING"
|
|
329
|
+
TeamTiebreaker = "#TEAM_TIEBREAKER"
|
|
330
|
+
TeamCount = "#TEAM_COUNT"
|
|
331
|
+
TeamLimit = "#TEAM_LIMIT"
|
|
332
|
+
Qualified = "#QUALIFIED"
|
|
333
|
+
Disqualified = "#DISQUALIFIED"
|
|
334
|
+
Ranking = "#RANKING"
|
|
335
|
+
Score = "#SCORE"
|
|
336
|
+
Player = "#PLAYER"
|
|
337
|
+
Spectator = "#SPECTATOR"
|
|
338
|
+
Referee = "#REFEREE"
|
|
339
|
+
Eliminated = "#ELIMINATED"
|
|
340
|
+
Finalist = "#FINALIST"
|
|
341
|
+
Finished = "#FINISHED"
|
|
342
|
+
Winner = "#WINNER"
|
|
343
|
+
GoldMedal = "#GOLD_MEDAL"
|
|
344
|
+
SilverMedal = "#SILVER_MEDAL"
|
|
345
|
+
BronzeMedal = "#BRONZE_MEDAL"
|
|
346
|
+
Team1 = "#TEAM_1"
|
|
347
|
+
Team2 = "#TEAM_2"
|
|
348
|
+
Team3 = "#TEAM_3"
|
|
349
|
+
Team4 = "#TEAM_4"
|
|
350
|
+
Team5 = "#TEAM_5"
|
|
351
|
+
Team6 = "#TEAM_6"
|
|
352
|
+
Team7 = "#TEAM_7"
|
|
353
|
+
Team8 = "#TEAM_8"
|
|
354
|
+
TeamRed = "#TEAM_RED"
|
|
355
|
+
TeamGreen = "#TEAM_GREEN"
|
|
356
|
+
TeamBlue = "#TEAM_BLUE"
|
|
357
|
+
TeamYellow = "#TEAM_YELLOW"
|
|
358
|
+
TeamPurple = "#TEAM_PURPLE"
|
|
359
|
+
TeamCyan = "#TEAM_CYAN"
|
|
360
|
+
TeamWhite = "#TEAM_WHITE"
|
|
361
|
+
TeamBlack = "#TEAM_BLACK"
|
|
362
|
+
Upload = "#UPLOAD"
|
|
363
|
+
Submit = "#SUBMIT"
|
|
364
|
+
Edit = "#EDIT"
|
|
365
|
+
Like = "#LIKE"
|
|
366
|
+
Liked = "#LIKED"
|
|
367
|
+
Dislike = "#DISLIKE"
|
|
368
|
+
Disliked = "#DISLIKED"
|
|
369
|
+
Bookmark = "#BOOKMARK"
|
|
370
|
+
Bookmarked = "#BOOKMARKED"
|
|
371
|
+
Delete = "#DELETE"
|
|
372
|
+
Restore = "#RESTORE"
|
|
373
|
+
Confirm = "#CONFIRM"
|
|
374
|
+
Cancel = "#CANCEL"
|
|
375
|
+
Increase = "#INCREASE"
|
|
376
|
+
Decrease = "#DECREASE"
|
|
377
|
+
Upvote = "#UPVOTE"
|
|
378
|
+
Upvoted = "#UPVOTED"
|
|
379
|
+
Downvote = "#DOWNVOTE"
|
|
380
|
+
Downvoted = "#DOWNVOTED"
|
|
381
|
+
Agree = "#AGREE"
|
|
382
|
+
Agreed = "#AGREED"
|
|
383
|
+
Disagree = "#DISAGREE"
|
|
384
|
+
Disagreed = "#DISAGREED"
|
|
385
|
+
Lock = "#LOCK"
|
|
386
|
+
Unlock = "#UNLOCK"
|
|
387
|
+
Pin = "#PIN"
|
|
388
|
+
Unpin = "#UNPIN"
|
|
389
|
+
Follow = "#FOLLOW"
|
|
390
|
+
Unfollow = "#UNFOLLOW"
|
|
391
|
+
Subscribe = "#SUBSCRIBE"
|
|
392
|
+
Unsubscribe = "#UNSUBSCRIBE"
|
|
393
|
+
Publish = "#PUBLISH"
|
|
394
|
+
Unpublish = "#UNPUBLISH"
|
|
395
|
+
Show = "#SHOW"
|
|
396
|
+
Hide = "#HIDE"
|
|
397
|
+
Allow = "#ALLOW"
|
|
398
|
+
Disallow = "#DISALLOW"
|
|
399
|
+
Approve = "#APPROVE"
|
|
400
|
+
Deny = "#DENY"
|
|
401
|
+
Accept = "#ACCEPT"
|
|
402
|
+
Reject = "#REJECT"
|
|
403
|
+
Star = "#STAR"
|
|
404
|
+
Starred = "#STARRED"
|
sonolus/script/timing.py
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from sonolus.backend.ops import Op
|
|
2
|
+
from sonolus.script.internal.native import native_function
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@native_function(Op.BeatToBPM)
|
|
6
|
+
def beat_to_bpm(beat: float) -> float:
|
|
7
|
+
raise NotImplementedError
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@native_function(Op.BeatToTime)
|
|
11
|
+
def beat_to_time(beat: float) -> float:
|
|
12
|
+
raise NotImplementedError
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@native_function(Op.BeatToStartingBeat)
|
|
16
|
+
def beat_to_starting_beat(beat: float) -> float:
|
|
17
|
+
raise NotImplementedError
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@native_function(Op.BeatToStartingTime)
|
|
21
|
+
def beat_to_starting_time(beat: float) -> float:
|
|
22
|
+
raise NotImplementedError
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@native_function(Op.TimeToScaledTime)
|
|
26
|
+
def time_to_scaled_time(time: float) -> float:
|
|
27
|
+
raise NotImplementedError
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@native_function(Op.TimeToStartingScaledTime)
|
|
31
|
+
def time_to_starting_scaled_time(time: float) -> float:
|
|
32
|
+
raise NotImplementedError
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@native_function(Op.TimeToStartingTime)
|
|
36
|
+
def time_to_starting_time(time: float) -> float:
|
|
37
|
+
raise NotImplementedError
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@native_function(Op.TimeToTimeScale)
|
|
41
|
+
def time_to_timescale(time: float) -> float:
|
|
42
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# fmt: off
|
|
2
|
+
from typing import Self
|
|
3
|
+
|
|
4
|
+
from sonolus.script.graphics import Quad
|
|
5
|
+
from sonolus.script.math import cos, sin
|
|
6
|
+
from sonolus.script.record import Record
|
|
7
|
+
from sonolus.script.vec import Vec2
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Transform2d(Record):
|
|
11
|
+
a00: float
|
|
12
|
+
a01: float
|
|
13
|
+
a02: float
|
|
14
|
+
a10: float
|
|
15
|
+
a11: float
|
|
16
|
+
a12: float
|
|
17
|
+
a20: float
|
|
18
|
+
a21: float
|
|
19
|
+
|
|
20
|
+
@classmethod
|
|
21
|
+
def new(cls) -> Self:
|
|
22
|
+
return cls(
|
|
23
|
+
1, 0, 0,
|
|
24
|
+
0, 1, 0,
|
|
25
|
+
0, 0,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def _compose(self,
|
|
29
|
+
b00: float, b01: float, b02: float,
|
|
30
|
+
b10: float, b11: float, b12: float,
|
|
31
|
+
b20: float, b21: float,
|
|
32
|
+
) -> Self:
|
|
33
|
+
"""Multiply the matrix with another matrix on the left."""
|
|
34
|
+
a00 = self.a00 * b00 + self.a10 * b01 + self.a20 * b02
|
|
35
|
+
a01 = self.a01 * b00 + self.a11 * b01 + self.a21 * b02
|
|
36
|
+
a02 = self.a02 * b00 + self.a12 * b01 + b02
|
|
37
|
+
a10 = self.a00 * b10 + self.a10 * b11 + self.a20 * b12
|
|
38
|
+
a11 = self.a01 * b10 + self.a11 * b11 + self.a21 * b12
|
|
39
|
+
a12 = self.a02 * b10 + self.a12 * b11 + b12
|
|
40
|
+
a20 = self.a00 * b20 + self.a10 * b21 + b20
|
|
41
|
+
a21 = self.a01 * b20 + self.a11 * b21 + b21
|
|
42
|
+
a22 = self.a02 * b20 + self.a12 * b21 + 1
|
|
43
|
+
self.a00 = a00 / a22
|
|
44
|
+
self.a01 = a01 / a22
|
|
45
|
+
self.a02 = a02 / a22
|
|
46
|
+
self.a10 = a10 / a22
|
|
47
|
+
self.a11 = a11 / a22
|
|
48
|
+
self.a12 = a12 / a22
|
|
49
|
+
self.a20 = a20 / a22
|
|
50
|
+
self.a21 = a21 / a22
|
|
51
|
+
return self
|
|
52
|
+
|
|
53
|
+
def translate(self, x: float = 0, y: float = 0) -> Self:
|
|
54
|
+
return self._compose(
|
|
55
|
+
1, 0, x,
|
|
56
|
+
0, 1, y,
|
|
57
|
+
0, 0,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
def scale(self, x: float = 1, y: float = 1) -> Self:
|
|
61
|
+
return self._compose(
|
|
62
|
+
x, 0, 0,
|
|
63
|
+
0, y, 0,
|
|
64
|
+
0, 0,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
def rotate(self, angle: float) -> Self:
|
|
68
|
+
c = cos(angle)
|
|
69
|
+
s = sin(angle)
|
|
70
|
+
return self._compose(
|
|
71
|
+
c, -s, 0,
|
|
72
|
+
s, c, 0,
|
|
73
|
+
0, 0,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
def shear_x(self, m: float) -> Self:
|
|
77
|
+
"""Shear along the x-axis."""
|
|
78
|
+
return self._compose(
|
|
79
|
+
1, m, 0,
|
|
80
|
+
0, 1, 0,
|
|
81
|
+
0, 0,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
def shear_y(self, m: float) -> Self:
|
|
85
|
+
"""Shear along the y-axis."""
|
|
86
|
+
return self._compose(
|
|
87
|
+
1, 0, 0,
|
|
88
|
+
m, 1, 0,
|
|
89
|
+
0, 0,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
def perspective_vanish_y(self, y: float) -> Self:
|
|
93
|
+
return self._compose(
|
|
94
|
+
1, 0, 0,
|
|
95
|
+
0, 1, 0,
|
|
96
|
+
0, 1 / y,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
def compose(self, other: Self) -> Self:
|
|
100
|
+
return self._compose(
|
|
101
|
+
other.a00, other.a01, other.a02,
|
|
102
|
+
other.a10, other.a11, other.a12,
|
|
103
|
+
other.a20, other.a21,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def transform_vec(self, v: Vec2) -> Vec2:
|
|
107
|
+
x = self.a00 * v.x + self.a01 * v.y + self.a02
|
|
108
|
+
y = self.a10 * v.x + self.a11 * v.y + self.a12
|
|
109
|
+
w = self.a20 * v.x + self.a21 * v.y + 1
|
|
110
|
+
return Vec2(x / w, y / w)
|
|
111
|
+
|
|
112
|
+
def transform_quad(self, quad: Quad) -> Quad:
|
|
113
|
+
return Quad(
|
|
114
|
+
bl=self.transform_vec(quad.bl),
|
|
115
|
+
br=self.transform_vec(quad.br),
|
|
116
|
+
tl=self.transform_vec(quad.tl),
|
|
117
|
+
tr=self.transform_vec(quad.tr),
|
|
118
|
+
)
|