dashcode 1.0.4__tar.gz → 1.1.1__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dashcode
3
- Version: 1.0.4
3
+ Version: 1.1.1
4
4
  Summary: A library for Geometry Dash level generation using .gmd files
5
5
  Author: IWiterI
6
6
  Project-URL: Homepage, https://github.com/ISviterI/dashcode
@@ -0,0 +1,143 @@
1
+ import base64
2
+ import gzip
3
+
4
+ objects = []
5
+ obj_string = ""
6
+ lvlname = ""
7
+
8
+
9
+
10
+ class Dashcode:
11
+ def __init__(self):
12
+ global objects
13
+ self.params = {
14
+ "NoTouch": 13,
15
+ "Hide": 12,
16
+ "Group": 57,
17
+ "TGroup": 51,
18
+ "Duration": 10,
19
+ "Alpha": 11,
20
+ "TouchTrigger": 11,
21
+ "ActivateGroup": 56,
22
+ "ScaleX": 128,
23
+ "ScaleY": 129,
24
+ "Zoom": 107,
25
+ "RotateDegrees": 68,
26
+ "Times360": 69,
27
+ "LockRot": 70,
28
+ }
29
+ self.objects = {
30
+ "block": 1, "spike": 8, "yorb": 36, "coin": 1329,
31
+ "monster": 918, "bush": 128, "cloud": 129,
32
+ "alpha": 1007, "toggle": 1049, "rotate": 1346,
33
+ "zoom": 1913, "reverse": 1912,
34
+ "checkpoint": 2063,
35
+ "end": 3600,
36
+ "p_blue": 10, "p_yellow": 11, "p_green": 2926,
37
+ "p_cube": 12, "p_ship": 13, "p_ball": 47, "p_ufo": 111,
38
+ "p_wave": 660, "p_robot": 745, "p_spider": 1331, "p_swing": 1933
39
+ }
40
+ self.prefabs = {
41
+ "wall": {"Y":0},
42
+ "platform": {"X":0},
43
+ "square": {"SQ":0},
44
+ "corridor": {"X":1},
45
+ }
46
+
47
+ def setobjects(self, objs:dict):
48
+ self.objects = objs
49
+
50
+ def setparams(self, params:dict):
51
+ self.params = params
52
+
53
+ def addobject(self, obj: str, params: dict):
54
+ if len(objects) <= 0:
55
+ objects.append(
56
+ f"1,1,2,{str(-10 * 30)},3,{str(-10 * 30)},12,1,13,1")
57
+ extraparams = ""
58
+ for param, value in params.items():
59
+ if self.params.get(param) is not None:
60
+ pid = self.params[param]
61
+ extraparams += f",{str(pid)},{value}"
62
+ else:
63
+ extraparams += f",{str(param)},{value}"
64
+
65
+ oid = self.objects.get(obj, 1)
66
+ if oid:
67
+ objects.append(
68
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15)},3,{str(params.get('Y') * 30 + 15)}{extraparams}")
69
+ else:
70
+ objects.append(
71
+ f"1,{str(obj)},2,{str(params.get('X') * 30 + 15)},3,{str(params.get('Y') * 30 + 15)}{extraparams}")
72
+ def parse_object_string(self,objstr):
73
+ data = objstr.split(',')
74
+
75
+ obj_dict = {}
76
+ for i in range(0, len(data) - 1, 2):
77
+ key = data[i]
78
+ value = data[i + 1]
79
+ obj_dict[key] = value
80
+
81
+ return obj_dict
82
+ def addprefab(self, obj:str, params:dict, prefab:str):
83
+ global objects
84
+ extraparams = ""
85
+ for param, value in params.items():
86
+ if self.params.get(param) is not None:
87
+ pid = self.params[param]
88
+ extraparams += f",{str(pid)},{value}"
89
+ else:
90
+ extraparams += f",{str(param)},{value}"
91
+
92
+ oid = self.objects.get(obj, 1)
93
+ if prefab:
94
+ #print("1")
95
+ fab = self.prefabs.get(prefab)
96
+ if fab:
97
+ #print(fab)
98
+ #print("2")
99
+ newobjs = []
100
+ if fab.get("X") == 0:
101
+ #print("3")
102
+ for i in range(params.get('EX')):
103
+ newobjs.append(
104
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15 + (i * 30))},3,{str(params.get('Y') * 30 + 15)}{extraparams}")
105
+ if fab.get("Y") == 0:
106
+ #print("3")
107
+ for i in range(params.get('EY')):
108
+ newobjs.append(
109
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15)},3,{str(params.get('Y') * 30 + 15 + (i * 30))}{extraparams}")
110
+ if fab.get("SQ") == 0:
111
+ for i in range(params.get('EX')):
112
+ newobjs.append(
113
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15 + (i * 30))},3,{str(params.get('Y') * 30 + 15)}{extraparams}")
114
+ for v in range(params.get('EY') - 1):
115
+ newobjs.append(
116
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15 + (i * 30))},3,{str(params.get('Y') * 30 + 15 + (v * 30) + 30)}{extraparams}")
117
+ if fab.get("X") == 1:
118
+ for i in range(params.get('EX')):
119
+ newobjs.append(
120
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15 + (i * 30))},3,{str(params.get('Y') * 30 + 15)}{extraparams}")
121
+ for i in range(params.get('EX')):
122
+ newobjs.append(
123
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15 + (i * 30))},3,{str(params.get('Y') * 30 + 15 + params.get("EY") * 30)}{extraparams}")
124
+ if fab.get("Y") == 1:
125
+ for i in range(params.get('EY')):
126
+ newobjs.append(
127
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15)},3,{str(params.get('Y') * 30 + 15 + (i * 30))}{extraparams}")
128
+ for i in range(params.get('EY')):
129
+ newobjs.append(
130
+ f"1,{str(oid)},2,{str(params.get('X') * 30 + 15 + params.get("EX") * 30)},3,{str(params.get('Y') * 30 + 15 + (i * 30))}{extraparams}")
131
+ objects += newobjs
132
+ def create_gmd_file(self, level_name, author_name, objects_string):
133
+ global lvlname
134
+ lvlname = level_name
135
+ final_string_to_pack = objects_string
136
+ gzipped = gzip.compress(final_string_to_pack.encode('utf-8'))
137
+ b64_objects = base64.b64encode(gzipped).decode('utf-8').replace('/', '_').replace('+', '-')
138
+ return f'''<?xml version="1.0"?><plist version="1.0" gjver="2.0"><dict><k>kCEK</k><i>4</i><k>k2</k><s>{level_name}</s><k>k4</k><s>{b64_objects}</s><k>k5</k><s>{author_name}</s><k>k11</k><i>1091</i><k>k16</k><i>1</i><k>k80</k><i>56</i></dict></plist>'''
139
+
140
+ def decode_objects(self):
141
+ global obj_string
142
+ obj_string = ";".join(objects) + ";"
143
+ return obj_string
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dashcode
3
- Version: 1.0.4
3
+ Version: 1.1.1
4
4
  Summary: A library for Geometry Dash level generation using .gmd files
5
5
  Author: IWiterI
6
6
  Project-URL: Homepage, https://github.com/ISviterI/dashcode
@@ -8,7 +8,7 @@ if os.path.exists("README.md"):
8
8
 
9
9
  setup(
10
10
  name="dashcode",
11
- version="1.0.4",
11
+ version="1.1.1",
12
12
  packages=find_packages(),
13
13
  author="IWiterI",
14
14
  description="A library for Geometry Dash level generation using .gmd files",
@@ -1,75 +0,0 @@
1
- import base64
2
- import gzip
3
-
4
- objects = []
5
- obj_string = ""
6
- lvlname = ""
7
-
8
-
9
-
10
- class Dashcode:
11
- def __init__(self):
12
- global objects
13
- self.params = {
14
- "NoTouch": 13,
15
- "Hide": 11,
16
- "Group": 57,
17
- "TGroup": 51,
18
- "Duration": 10,
19
- "Alpha": 11,
20
- "TouchTrigger": 11, # Твой ID из GMD
21
- "ActivateGroup": 56,
22
- "ScaleX": 128,
23
- "ScaleY": 129,
24
- "Zoom": 107,
25
- "RotateDegrees": 68,
26
- "Times360": 69,
27
- "LockRot": 70,
28
- }
29
- self.objects = {
30
- "block": 1, "spike": 8, "yorb": 36, "coin": 1329,
31
- "monster": 918, "bush": 128, "cloud": 129,
32
- "alpha": 1007, "toggle": 1049, "rotate": 1346,
33
- "zoom": 1913, "reverse": 1912,
34
- "checkpoint": 2063,
35
- "end": 3600,
36
- "p_blue": 10, "p_yellow": 11, "p_green": 2926,
37
- "p_cube": 12, "p_ship": 13, "p_ball": 47, "p_ufo": 111,
38
- "p_wave": 660, "p_robot": 745, "p_spider": 1331, "p_swing": 1933
39
- }
40
-
41
- def setobjects(self, objs:dict):
42
- self.objects = objs
43
-
44
- def setparams(self, params:dict):
45
- self.params = params
46
-
47
- def addobject(self, obj: str, params: dict):
48
- extraparams = ""
49
- for param, value in params.items():
50
- if self.params.get(param) is not None:
51
- pid = self.params[param]
52
- extraparams += f",{str(pid)},{value}"
53
- else:
54
- extraparams += f",{str(param)},{value}"
55
-
56
- oid = self.objects.get(obj, 1)
57
- if oid:
58
- objects.append(
59
- f"1,{str(oid)},2,{str(params.get('X') * 30 + 15)},3,{str(params.get('Y') * 30 + 15)}{extraparams}")
60
- else:
61
- objects.append(
62
- f"1,{str(obj)},2,{str(params.get('X') * 30 + 15)},3,{str(params.get('Y') * 30 + 15)}{extraparams}")
63
-
64
- def create_gmd_file(self, level_name, author_name, objects_string):
65
- global lvlname
66
- lvlname = level_name
67
- final_string_to_pack = objects_string
68
- gzipped = gzip.compress(final_string_to_pack.encode('utf-8'))
69
- b64_objects = base64.b64encode(gzipped).decode('utf-8').replace('/', '_').replace('+', '-')
70
- return f'''<?xml version="1.0"?><plist version="1.0" gjver="2.0"><dict><k>kCEK</k><i>4</i><k>k2</k><s>{level_name}</s><k>k4</k><s>{b64_objects}</s><k>k5</k><s>{author_name}</s><k>k11</k><i>1091</i><k>k16</k><i>1</i><k>k80</k><i>56</i></dict></plist>'''
71
-
72
- def decode_objects(self):
73
- global obj_string
74
- obj_string = ";".join(objects) + ";"
75
- return obj_string
File without changes
File without changes
File without changes