wave minion put in cache before steering

This commit is contained in:
Philippe Roy 2022-07-07 17:49:08 +02:00
parent 63e55844bf
commit 6ce3116d8e
4 changed files with 35 additions and 12 deletions

BIN
codetower-25.blend Normal file

Binary file not shown.

4
ct.py
View File

@ -193,12 +193,12 @@ def points_maj (cont):
if scene.objects['Points']['level'] == scene.objects['Points']['level_max']: if scene.objects['Points']['level'] == scene.objects['Points']['level_max']:
scene.objects['Level_text'].color = color_text scene.objects['Level_text'].color = color_text
# Ramasse minions perdues ou zombis # Ramassage des minions perdues ou zombis
if scene.objects['Terrain']['run'] == True: # Pas en pause if scene.objects['Terrain']['run'] == True: # Pas en pause
if scene.objects['Points']['tics']%240 == 0: # Toutes les 4 secondes if scene.objects['Points']['tics']%240 == 0: # Toutes les 4 secondes
scene.objects['Points']['minions_lost']=[] scene.objects['Points']['minions_lost']=[]
for obj_i in scene.objects: for obj_i in scene.objects:
if "type_minion" in obj_i.getPropertyNames() and "type_towerminion" not in obj_i.getPropertyNames(): if "type_minion" in obj_i.getPropertyNames() and "type_towerminion" not in obj_i.getPropertyNames() and obj_i.visible==True:
# print ("Minion lost : (dist, dist_old, x, last_x, y, last_y) : ", obj_i.name, obj_i['dist'], obj_i['dist_old'], obj_i.worldPosition.x, obj_i['dist_last_x'], obj_i.worldPosition.y, obj_i['dist_last_y']) # print ("Minion lost : (dist, dist_old, x, last_x, y, last_y) : ", obj_i.name, obj_i['dist'], obj_i['dist_old'], obj_i.worldPosition.x, obj_i['dist_last_x'], obj_i.worldPosition.y, obj_i['dist_last_y'])
if obj_i['dist']==obj_i['dist_old'] and obj_i['dist_new']==False: if obj_i['dist']==obj_i['dist_old'] and obj_i['dist_new']==False:
print ("Minion lost : dist =dist_old (dist, dist_old) : ", obj_i.name, obj_i['dist'], obj_i['dist_old']) print ("Minion lost : dist =dist_old (dist, dist_old) : ", obj_i.name, obj_i['dist'], obj_i['dist_old'])

View File

@ -176,14 +176,14 @@ def sound_play (sound):
# Minion 3d object : body (male,female,old, ...), variante (A,B,C,D, ...), level # Minion 3d object : body (male,female,old, ...), variante (A,B,C,D, ...), level
# Création d'un minion # Création d'un minion
def ct_minion(x,y,cat,level): def ct_minion_create(x,y,cat,level):
category=cat+"-lv"+str(level) category=cat+"-lv"+str(level)
minion_3d= scene.objects['Terrain']['minion_3d'] minion_3d= scene.objects['Terrain']['minion_3d']
body = random.choice(minion_3d[category][0])+"_"+random.choice(minion_3d[category][1])+"_"+random.choice(minion_3d[category][2]) body = random.choice(minion_3d[category][0])+"_"+random.choice(minion_3d[category][1])+"_"+random.choice(minion_3d[category][2])
ct_minion_details(x,y,cat,level,body) return (ct_minion_create_details(x,y,cat,level,body))
# Création d'un minion détaillée # Création d'un minion détaillée
def ct_minion_details(x,y,cat,level,body="Knight_m_A_common"): def ct_minion_create_details(x,y,cat,level,body="Knight_m_A_common"):
category=cat+"-lv"+str(level) category=cat+"-lv"+str(level)
# Pause # Pause
@ -202,6 +202,8 @@ def ct_minion_details(x,y,cat,level,body="Knight_m_A_common"):
minion= scene.addObject(body, scene.objects['Terrain']) minion= scene.addObject(body, scene.objects['Terrain'])
minion.worldScale=[0.25,0.25,0.25] minion.worldScale=[0.25,0.25,0.25]
minion.worldPosition=[x,y,0.1] minion.worldPosition=[x,y,0.1]
minion.suspendPhysics (True)
minion.setVisible(False)
scene.objects['Terrain']['idm']=scene.objects['Terrain']['idm']+1 scene.objects['Terrain']['idm']=scene.objects['Terrain']['idm']+1
minion['id']=scene.objects['Terrain']['idm'] minion['id']=scene.objects['Terrain']['idm']
minion.name="wm("+str(minion['id'])+")" # Wave minion (wm), identifier minion (idm) minion.name="wm("+str(minion['id'])+")" # Wave minion (wm), identifier minion (idm)
@ -237,7 +239,14 @@ def ct_minion_details(x,y,cat,level,body="Knight_m_A_common"):
# Déblocage des autres threads après l'apparition du minion # Déblocage des autres threads après l'apparition du minion
scene.objects['Terrain']['thread_cmd_lock'] = False scene.objects['Terrain']['thread_cmd_lock'] = False
return minion.name
# Activation du minion (steering)
def ct_minion_go(minion_name):
minion=scene.objects[minion_name]
minion.restorePhysics()
minion.setVisible(True)
# Destruction d'un minion # Destruction d'un minion
def scn_minion_dead(cont): def scn_minion_dead(cont):
obj = cont.owner obj = cont.owner

View File

@ -127,39 +127,53 @@ def minion_definition():
# Wave 1 # Wave 1
def wave1(): def wave1():
ct_map_text_wave(1) ct_map_text_wave(1)
wave_minion_name=[]
for i in range (15): for i in range (15):
# ct_minion(14,3,"Orc",1) # ct_minion(14,3,"Orc",1)
ct_minion_details(14,3,"Orc",1, "Orc_A_common") # ct_minion_details(14,3,"Orc",1, "Orc_A_common")
wave_minion_name.append(ct_minion_create_details(14,3,"Orc",1, "Orc_A_common"))
for i in range (len(wave_minion_name)):
ct_minion_go(wave_minion_name[i])
ct_sleep (2) ct_sleep (2)
end() end()
# Wave 2 # Wave 2
def wave2(): def wave2():
ct_map_text_wave(2) ct_map_text_wave(2)
wave_minion_name=[]
for i in range (20): for i in range (20):
ct_minion(14,3,"Orc",1) wave_minion_name.append(ct_minion_create(14,3,"Orc",1))
# ct_minion_details(14,3,"Orc",1, "Orc_A_common") # ct_minion_details(14,3,"Orc",1, "Orc_A_common")
for i in range (len(wave_minion_name)):
ct_minion_go(wave_minion_name[i])
ct_sleep (1) ct_sleep (1)
end() end()
# Wave 3 # Wave 3
def wave3(): def wave3():
ct_map_text_wave(3) ct_map_text_wave(3)
wave_minion_name=[]
for i in range (30): for i in range (30):
ct_minion(14,3,"Orc",1) wave_minion_name.append(ct_minion_create(14,3,"Orc",1))
# ct_minion_details(14,3,"Orc",1, "Orc_A_common") # ct_minion_details(14,3,"Orc",1, "Orc_A_common")
# ct_minion(14,3,"Knight",1) # ct_minion(14,3,"Knight",1)
for i in range (len(wave_minion_name)):
ct_minion_go(wave_minion_name[i])
ct_sleep (1) ct_sleep (1)
end() end()
# Wave 4 # Wave 4
def wave4(): def wave4():
ct_map_text_wave(4) ct_map_text_wave(4)
wave_minion_name_group1=[]
wave_minion_name_group2=[]
for i in range (20): for i in range (20):
# ct_minion(14,3,"Orc",1) # ct_minion(14,3,"Orc",1)
ct_minion(14,2.5,"Orc",1) wave_minion_name_group1.append(ct_minion_create(14,2.5,"Orc",1))
# ct_minion_details(14,3,"Orc",1, "Orc_A_common") wave_minion_name_group2.append(ct_minion_create(14,3,"Knight",1))
ct_minion(14,3,"Knight",1) for i in range (len(wave_minion_name_group1)):
ct_minion_go(wave_minion_name_group1[i])
ct_minion_go(wave_minion_name_group2[i])
ct_sleep (0.5) ct_sleep (0.5)
end() end()
@ -192,7 +206,7 @@ def tower_definition():
# Map # Map
############################################################################### ###############################################################################
# Initialization # Initialization
def map_init(): def map_init():
# Base # Base