123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- import bge
- import ast
- import glob
- import random
- import os
-
- def read_files(own):
-
- file = bge.logic.expandPath('//assets/bsp/bsp_00-00.gob')
-
-
-
- directory = bge.logic.expandPath("//assets/bsp/")
- file_name = directory + "*.gob" # Test directory "Test\\Music\\*.mp3"
- file_list = glob.glob(file_name)
- selected = random.choice(file_list)
- full_path = os.path.join(directory, selected)
- print('glob got', file_list)
-
-
-
- for f in file_list:
- load = open(file, 'r')
- lines = load.readlines()
- load.close()
- blist = []
- for x in lines:
- x = str(x)
- x = x.replace(","," ")
- ostr = str(x.split()[0])
- pX = float(x.split()[1])
- pY = float(x.split()[2])
- pZ = float(x.split()[3])
- pR = float(x.split()[4])
- pS = float(x.split()[5])
- #x = x.replace("'", "")
- #x = ast.literal_eval(x)
- #print(x, pX, pY, pZ)
- blist.append([ostr, pX, pY, pZ, pR, pS])
-
- bn = os.path.basename(f)
- bn = bn[:-4]
- print(bn, 'basename')
- own[bn] = blist
- bna = bn + '_active'
- own[bna] = True
- bno = bn + '_obj'
- own[bno] = []
-
-
-
- # load = open(file, 'r')
- # lines = load.readlines()
- # load.close()
- # #line2 = lines[0]
- # #line = line2.split()
- # #lines = ast.literal_eval(lines)
- # #l2 = lines.split()
- # blist = []
- # for x in lines:
- # x = str(x)
- # x = x.replace(","," ")
- # ostr = str(x.split()[0])
- # pX = float(x.split()[1])
- # pY = float(x.split()[2])
- # pZ = float(x.split()[3])
- # pR = float(x.split()[4])
- # pS = float(x.split()[5])
- # #x = x.replace("'", "")
- # #x = ast.literal_eval(x)
- # #print(x, pX, pY, pZ)
- # blist.append([ostr, pX, pY, pZ, pR, pS])
-
- # own['bsp_00-00'] = blist
- # own['bsp_00-00_active'] = True
- # own['bsp_00-00_obj'] = []
- # #-----------------------
- # file = bge.logic.expandPath('//assets/bsp/bsp_00-01.gob')
-
- # load = open(file, 'r')
- # lines = load.readlines()
- # load.close()
- # #line2 = lines[0]
- # #line = line2.split()
- # #lines = ast.literal_eval(lines)
- # #l2 = lines.split()
- # blist = []
- # for x in lines:
- # x = str(x)
- # x = x.replace(","," ")
- # ostr = str(x.split()[0])
- # pX = float(x.split()[1])
- # pY = float(x.split()[2])
- # pZ = float(x.split()[3])
- # pR = float(x.split()[4])
- # pS = float(x.split()[5])
- # #x = x.replace("'", "")
- # #x = ast.literal_eval(x)
- # #print(x, pX, pY, pZ)
- # blist.append([ostr, pX, pY, pZ, pR, pS])
-
- # own['bsp_00-01'] = blist
- # own['bsp_00-01_active'] = False
- # own['bsp_00-01_obj'] = []
-
- def draw(own, tile):
- scene = bge.logic.getCurrentScene()
- de = scene.objects['dot_empty']
- de.applyRotation((0, 0, 0), False)
- de.scaling = [1, 1, 1]
- yMult = tile[4:6]
- xMult = tile[7:9]
-
- print(yMult, xMult, 'multers')
-
- xOffset = 128 * int(xMult)
- yOffset = 128 * int(yMult)
-
- # if 'bsp_00-03' in tile:
- # xOffset = 128
- # yOffset = 0
- # de.applyRotation((0, 0, 0), False)
- for x in own[tile]:
- objer = tile + '_obj'
- obna = scene.objectsInactive[x[0]]
- #if x[1] != 0 and x[2] != 0:
- de.scaling = [x[5], x[5], x[5]]
- de.applyRotation((0, 0, x[4]), False)
- de.worldPosition.x = x[1] + xOffset
- de.worldPosition.y = x[2] + yOffset
- de.worldPosition.z = x[3]
- #de.applyRotation((0, 0, x[4]), False)
-
- #de.rotation = [x[4], x[4], x[4]]
- obj = scene.addObject(obna, de, 0)
- #obj.applyRotation((x[4], x[4], x[4]), True)
- #obj.scaling = [x[5], x[5], x[5]]
- de.applyRotation((0, 0, -x[4]), False)
- own[objer].append(obj)
-
- def remove_tile(own, tile):
- nm = tile + '_obj'
- for x in own[nm]:
- x.endObject()
- own[nm] = []
-
- def update_position(own):
- pX = own.worldPosition.x
- pY = own.worldPosition.y
- gsize = 128
- size = gsize / 2
- mX = int(pX / size)
- mY = int(pY / size)
- if mX == 1:
- if 'bsp_00-01' in own['active_tiles']:
- pass
- else:
- draw(own, 'bsp_00-01')
- own['bsp_00-01_active'] = True
- own['active_tiles'].append('bsp_00-01')
- print('drawing')
- if mX == 0:
- if 'bsp_00-01' in own['active_tiles']:
- own['bsp_00-01_active'] = False
- own['active_tiles'].remove('bsp_00-01')
- remove_tile(own, 'bsp_00-01')
- print('removing')
- #print('uPos', mX, mY)
-
- sX = round(own .worldPosition.x / gsize ,1)
- sY = round(own.worldPosition.y / gsize, 1)
- own['sX'] = sX
- own['sY'] = sY
- print('sx, sy', sX, sY)
- ssx = str(int(sX))
- if len(ssx) < 2:
- ssx = '0' + ssx
- ssy = str(int(sY))
- if len(ssy) < 2:
- ssy = '0' + ssy
- ct = 'bsp_' + ssx + '-' + ssy
- #print(ct)
- own['current_tile'] = ct
-
- ssxp1 = str(int(sX) + 1)
- if len(ssxp1) < 2: ssxp1 = '0' + ssxp1
- ssxm1 = str(int(sX) - 1)
- if len(ssxm1) < 2: ssxm1 = '0' + ssxm1
-
-
- ssyp1 = str(int(sY) + 1)
- if len(ssyp1) < 2: ssyp1 = '0' + ssyp1
- ssym1 = str(int(sY) - 1)
- if len(ssym1) < 2: ssym1 = '0' + symp1
- nname = 'bsp_' + ssy +'-' + ssxp1
- print(nname)
-
-
- def main(cont):
- own = cont.owner
- if 'draw_inited' not in own:
- own['draw_inited'] = True
- own['active_tiles'] = []
- read_files(own)
-
- draw(own, 'bsp_00-00')
- own['active_tiles'].append('bsp_00-00')
- update_position(own)
-
|