pyjallib 0.1.16__py3-none-any.whl → 0.1.17__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.
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ """
5
+ Progress Event System - 범용 진행 상황 이벤트 시스템
6
+
7
+ 모든 pyjallib 모듈에서 사용할 수 있는 범용 이벤트 기반 진행 상황 추적 시스템
8
+ """
9
+
10
+ from typing import Callable, List
11
+
12
+
13
+ class ProgressEvent:
14
+ """단순한 프로그레스 이벤트 클래스"""
15
+
16
+ def __init__(self):
17
+ """프로그레스 이벤트 초기화"""
18
+ self.eventListeners: List[Callable[[str, int, int], None]] = []
19
+ self.isCancelled = False
20
+
21
+ def add_listener(self, inListener: Callable[[str, int, int], None]) -> None:
22
+ """
23
+ 프로그레스 리스너 추가
24
+
25
+ Args:
26
+ inListener: 프로그레스 업데이트를 받을 콜백 함수 (taskName, currentStep, totalSteps)
27
+ """
28
+ if inListener not in self.eventListeners:
29
+ self.eventListeners.append(inListener)
30
+
31
+ def remove_listener(self, inListener: Callable[[str, int, int], None]) -> None:
32
+ """
33
+ 프로그레스 리스너 제거
34
+
35
+ Args:
36
+ inListener: 제거할 콜백 함수
37
+ """
38
+ if inListener in self.eventListeners:
39
+ self.eventListeners.remove(inListener)
40
+
41
+ def clear_listeners(self) -> None:
42
+ """모든 프로그레스 리스너 제거"""
43
+ self.eventListeners.clear()
44
+
45
+ def update_progress(self, inTaskName: str, inCurrentStep: int, inTotalSteps: int) -> None:
46
+ """
47
+ 프로그레스 업데이트 이벤트 발생
48
+
49
+ Args:
50
+ inTaskName: 현재 작업명
51
+ inCurrentStep: 현재 단계
52
+ inTotalSteps: 전체 단계 수
53
+ """
54
+ # 모든 리스너에게 이벤트 전달
55
+ for listener in self.eventListeners:
56
+ try:
57
+ listener(inTaskName, inCurrentStep, inTotalSteps)
58
+ except Exception as e:
59
+ # 리스너 에러는 로그만 남기고 무시 (안정성 보장)
60
+ print(f"Progress listener error: {e}")
61
+
62
+ def cancel_progress(self) -> None:
63
+ """진행 상황 취소 요청"""
64
+ self.isCancelled = True
65
+
66
+ def is_cancelled(self) -> bool:
67
+ """취소 상태 확인"""
68
+ return self.isCancelled
69
+
70
+ def reset_cancel_state(self) -> None:
71
+ """취소 상태 초기화"""
72
+ self.isCancelled = False
73
+
74
+
75
+
@@ -0,0 +1,487 @@
1
+ {
2
+ "paddingNum": 1,
3
+ "partOrder": [
4
+ "AssetType",
5
+ "CharacterRole",
6
+ "Species",
7
+ "Gender",
8
+ "AnimStatus",
9
+ "AnimMainCategory",
10
+ "RealName",
11
+ "Index"
12
+ ],
13
+ "nameParts": [
14
+ {
15
+ "name": "AssetType",
16
+ "predefinedValues": [
17
+ "SK",
18
+ "SM",
19
+ "SKEL",
20
+ "MI",
21
+ "T",
22
+ "A"
23
+ ],
24
+ "weights": [
25
+ 5,
26
+ 10,
27
+ 15,
28
+ 20,
29
+ 25,
30
+ 30
31
+ ],
32
+ "type": "PREFIX",
33
+ "descriptions": [
34
+ "SkeletalMesh",
35
+ "StaticMesh",
36
+ "Skeleton",
37
+ "Material",
38
+ "Texture",
39
+ "Animation"
40
+ ],
41
+ "koreanDescriptions": [
42
+ "스켈레탈 메쉬",
43
+ "스태틱 메쉬",
44
+ "스켈레톤",
45
+ "매테리얼",
46
+ "텍스쳐",
47
+ "애니메이션"
48
+ ],
49
+ "isDirection": false
50
+ },
51
+ {
52
+ "name": "CharacterRole",
53
+ "predefinedValues": [
54
+ "Mn",
55
+ "Nc",
56
+ "Nm",
57
+ "Bm",
58
+ "Em",
59
+ "Sh"
60
+ ],
61
+ "weights": [
62
+ 5,
63
+ 10,
64
+ 15,
65
+ 20,
66
+ 25,
67
+ 30
68
+ ],
69
+ "type": "PREFIX",
70
+ "descriptions": [
71
+ "Main",
72
+ "NPC",
73
+ "NormalMonster",
74
+ "BossMonster",
75
+ "EliteMonster",
76
+ "Shared"
77
+ ],
78
+ "koreanDescriptions": [
79
+ "메인캐릭터",
80
+ "NPC",
81
+ "일반몬스터",
82
+ "보스몬스터",
83
+ "정예몬스터",
84
+ "공유"
85
+ ],
86
+ "isDirection": false
87
+ },
88
+ {
89
+ "name": "Species",
90
+ "predefinedValues": [
91
+ "KimDokja",
92
+ "LeeGilyeong",
93
+ "JeongHuiwon",
94
+ "LeeHyeonseong",
95
+ "CheonInho",
96
+ "YuJunghyeok",
97
+ "HanMyeongoh",
98
+ "YuSangah",
99
+ "Bihyeong",
100
+ "Biryu",
101
+ "CatIgnir",
102
+ "GHDtBully",
103
+ "Mantishopper",
104
+ "GroundRat",
105
+ "Human"
106
+ ],
107
+ "weights": [
108
+ 5,
109
+ 10,
110
+ 15,
111
+ 20,
112
+ 25,
113
+ 30,
114
+ 35,
115
+ 40,
116
+ 45,
117
+ 50,
118
+ 55,
119
+ 60,
120
+ 65,
121
+ 70,
122
+ 75
123
+ ],
124
+ "type": "PREFIX",
125
+ "descriptions": [
126
+ "KimDokja",
127
+ "LeeGilyeong",
128
+ "JeongHuiwon",
129
+ "LeeHyeonseong",
130
+ "CheonInho",
131
+ "YuJunghyeok",
132
+ "HanMyeongoh",
133
+ "YuSangah",
134
+ "Bihyeong",
135
+ "Biryu",
136
+ "CatastrophicIgnir",
137
+ "GumhoDistrictBully",
138
+ "Mantishopper",
139
+ "GroundRat",
140
+ "Human"
141
+ ],
142
+ "koreanDescriptions": [
143
+ "김독자",
144
+ "이길영",
145
+ "정희원",
146
+ "이현성",
147
+ "천인호",
148
+ "유중혁",
149
+ "한명오",
150
+ "유상아",
151
+ "비형",
152
+ "비류",
153
+ "재앙 이그니르",
154
+ "금호동 불량배",
155
+ "메뚜귀",
156
+ "땅강아쥐",
157
+ "인간"
158
+ ],
159
+ "isDirection": false
160
+ },
161
+ {
162
+ "name": "Gender",
163
+ "predefinedValues": [
164
+ "M",
165
+ "F",
166
+ "N",
167
+ "CM",
168
+ "CF"
169
+ ],
170
+ "weights": [
171
+ 5,
172
+ 10,
173
+ 15,
174
+ 20,
175
+ 25
176
+ ],
177
+ "type": "PREFIX",
178
+ "descriptions": [
179
+ "Male",
180
+ "Female",
181
+ "NonBinary",
182
+ "Male-Child",
183
+ "Female-Child"
184
+ ],
185
+ "koreanDescriptions": [
186
+ "남",
187
+ "녀",
188
+ "성별없음",
189
+ "남(아동)",
190
+ "여(아동)"
191
+ ],
192
+ "isDirection": false
193
+ },
194
+ {
195
+ "name": "AnimStatus",
196
+ "predefinedValues": [
197
+ "Battle",
198
+ "Neutral",
199
+ "Death",
200
+ "BattleKnife",
201
+ "BattleFist",
202
+ "BattlePipe",
203
+ "Bicycle",
204
+ "Gamble",
205
+ "SittingCrossArmsLegs",
206
+ "StandingHandOnHip",
207
+ "StandingLeanOneArm",
208
+ "Standing",
209
+ "FallenBackward",
210
+ "StandingHeroPose",
211
+ "SittingSlumped",
212
+ "Sitting",
213
+ "GroundSitting",
214
+ "Lying",
215
+ "LyingProne",
216
+ "LayerUpper"
217
+ ],
218
+ "weights": [
219
+ 5,
220
+ 10,
221
+ 15,
222
+ 20,
223
+ 25,
224
+ 30,
225
+ 35,
226
+ 40,
227
+ 45,
228
+ 50,
229
+ 55,
230
+ 60,
231
+ 65,
232
+ 70,
233
+ 75,
234
+ 80,
235
+ 85,
236
+ 90,
237
+ 95,
238
+ 100
239
+ ],
240
+ "type": "PREFIX",
241
+ "descriptions": [
242
+ "Battle",
243
+ "Neutral",
244
+ "Death",
245
+ "BattleKnife",
246
+ "BattleFist",
247
+ "BattlePipe",
248
+ "Bicycle",
249
+ "Gamble",
250
+ "SittingCrossArmsLegs",
251
+ "StandingHandOnHip",
252
+ "StandingLeanOneArm",
253
+ "Standing",
254
+ "FallenBackward",
255
+ "StandingHeroPose",
256
+ "SittingSlumped",
257
+ "Sitting",
258
+ "GroundSitting",
259
+ "Lying",
260
+ "LyingProne",
261
+ "LayerUpper"
262
+ ],
263
+ "koreanDescriptions": [
264
+ "전투",
265
+ "기본",
266
+ "죽음",
267
+ "전투(나이프)",
268
+ "전투(격투)",
269
+ "전투(파이프)",
270
+ "탈것(자전거)",
271
+ "도박(금호역)",
272
+ "등의자/다리꼼/팔짱",
273
+ "스탠딩/한손허리",
274
+ "스탠딩/허리굽힘/한팔짚기",
275
+ "스탠딩",
276
+ "쓰러짐",
277
+ "스탠딩/양손허리",
278
+ "의자/좌절",
279
+ "앉기(의자)",
280
+ "앉기(바닥)",
281
+ "눕기",
282
+ "엎드리기",
283
+ "레이어(상체)"
284
+ ],
285
+ "isDirection": false
286
+ },
287
+ {
288
+ "name": "AnimMainCategory",
289
+ "predefinedValues": [
290
+ "CommandSkill",
291
+ "ActiveSkill",
292
+ "Run",
293
+ "Walk",
294
+ "Sprint",
295
+ "Idle",
296
+ "Draw",
297
+ "Sheath",
298
+ "Hit",
299
+ "Down",
300
+ "Knockdown",
301
+ "Airborne",
302
+ "TwistKnockdown",
303
+ "GetUp",
304
+ "Fall",
305
+ "IntFall",
306
+ "Turn",
307
+ "MonsterSkill",
308
+ "Guard",
309
+ "PartsBreak",
310
+ "PhaseSwitch",
311
+ "Mount",
312
+ "Idle",
313
+ "Ride",
314
+ "Dismount",
315
+ "Groggy",
316
+ "Turninplace",
317
+ "Hitreaction",
318
+ "FlopPhase",
319
+ "any",
320
+ "PlayingPhase",
321
+ "ShowdownPhase",
322
+ "Gesture",
323
+ "StoryTelling",
324
+ "Pair",
325
+ "Gaze",
326
+ "Transition",
327
+ "Pose",
328
+ "Belonging",
329
+ "Figet",
330
+ "Reading",
331
+ "Search"
332
+ ],
333
+ "weights": [
334
+ 5,
335
+ 10,
336
+ 15,
337
+ 20,
338
+ 25,
339
+ 30,
340
+ 35,
341
+ 40,
342
+ 45,
343
+ 50,
344
+ 55,
345
+ 60,
346
+ 65,
347
+ 70,
348
+ 75,
349
+ 80,
350
+ 85,
351
+ 90,
352
+ 95,
353
+ 100,
354
+ 105,
355
+ 110,
356
+ 115,
357
+ 120,
358
+ 125,
359
+ 130,
360
+ 135,
361
+ 140,
362
+ 145,
363
+ 150,
364
+ 155,
365
+ 160,
366
+ 165,
367
+ 170,
368
+ 175,
369
+ 180,
370
+ 185,
371
+ 190,
372
+ 195,
373
+ 200,
374
+ 205,
375
+ 210
376
+ ],
377
+ "type": "PREFIX",
378
+ "descriptions": [
379
+ "CommandSkill",
380
+ "ActiveSkill",
381
+ "Run",
382
+ "Walk",
383
+ "Sprint",
384
+ "Idle",
385
+ "Draw",
386
+ "Sheath",
387
+ "Hit",
388
+ "Down",
389
+ "Knockdown",
390
+ "Airborne",
391
+ "TwistKnockdown",
392
+ "GetUp",
393
+ "Fall",
394
+ "Interaction Fall",
395
+ "Turn",
396
+ "MonsterSkill",
397
+ "Guard",
398
+ "PartsBreak",
399
+ "PhaseSwitch",
400
+ "Mount",
401
+ "Idle",
402
+ "Ride",
403
+ "Dismount",
404
+ "Groggy",
405
+ "Turninplace",
406
+ "Hitreaction",
407
+ "FlopPhase",
408
+ "anyPhase",
409
+ "PlayingPhase",
410
+ "ShowdownPhase",
411
+ "Gesture",
412
+ "StoryTelling",
413
+ "Pair",
414
+ "Gaze",
415
+ "Transition",
416
+ "Pose",
417
+ "Belonging",
418
+ "Figet",
419
+ "Reading",
420
+ "Search"
421
+ ],
422
+ "koreanDescriptions": [
423
+ "커맨드 스킬",
424
+ "액티브 스킬",
425
+ "달리기",
426
+ "걷기",
427
+ "질주",
428
+ "아이들",
429
+ "발도",
430
+ "납도",
431
+ "히트(피격)",
432
+ "다운",
433
+ "넉다운",
434
+ "에어본",
435
+ "트위스트 넉다운",
436
+ "기상",
437
+ "떨어지기",
438
+ "떨어지기(인터렉션)",
439
+ "선회",
440
+ "스킬(몬스터)",
441
+ "방어",
442
+ "부위파괴 리액션(파괴)",
443
+ "페이즈 전환",
444
+ "탑승",
445
+ "대기",
446
+ "주행",
447
+ "하차",
448
+ "그로기",
449
+ "제자리돌기",
450
+ "지정공격 리액션",
451
+ "플랍페이즈",
452
+ "페이즈무관",
453
+ "플레잉페이즈",
454
+ "쇼다운페이즈",
455
+ "제스쳐",
456
+ "스토리진행",
457
+ "페어액션",
458
+ "주목",
459
+ "전환",
460
+ "포즈",
461
+ "소지품",
462
+ "습관행동",
463
+ "읽기",
464
+ "찾기"
465
+ ],
466
+ "isDirection": false
467
+ },
468
+ {
469
+ "name": "RealName",
470
+ "predefinedValues": [],
471
+ "weights": [],
472
+ "type": "REALNAME",
473
+ "descriptions": [],
474
+ "koreanDescriptions": [],
475
+ "isDirection": false
476
+ },
477
+ {
478
+ "name": "Index",
479
+ "predefinedValues": [],
480
+ "weights": [],
481
+ "type": "INDEX",
482
+ "descriptions": [],
483
+ "koreanDescriptions": [],
484
+ "isDirection": false
485
+ }
486
+ ]
487
+ }