Bugfix : affichage du texte de la documentation : duplication complète des objets

This commit is contained in:
Philippe Roy 2022-11-25 18:07:23 +01:00
parent 70e02bd59f
commit b51099e1ac
7 changed files with 172 additions and 63 deletions

Binary file not shown.

BIN
ropy-30.blend1 Normal file

Binary file not shown.

BIN
ropy-31.blend Normal file

Binary file not shown.

8
rp.py
View File

@ -133,7 +133,9 @@ def points_maj (cont):
# Initialisation lors du chargement du terrain # Initialisation lors du chargement du terrain
## ##
def terrain_init (): def terrain_init (cont):
if cont.sensors['Init'].positive == False:
return False
# Ajout du Hud # Ajout du Hud
scene.active_camera = scene.objects["Camera"] scene.active_camera = scene.objects["Camera"]
@ -391,7 +393,9 @@ color_cmd_hl = (0.8, 0.619, 0.021, 1) # Jaune
# Init # Init
## ##
def cmd_init(): def cmd_init(cont):
if cont.sensors['Init'].positive == False:
return False
# Taille de la fenêtre # Taille de la fenêtre
# Read config (screen size : data/config/screen/width-> [0][3][0].text) # Read config (screen size : data/config/screen/width-> [0][3][0].text)

View File

@ -3,9 +3,9 @@
<speed>1.0</speed> <speed>1.0</speed>
<sound>False</sound> <sound>False</sound>
<cam> <cam>
<worldPosition.x>-1.8592177629470825</worldPosition.x> <worldPosition.x>0.0057830810546875</worldPosition.x>
<worldPosition.y>-33.43065643310547</worldPosition.y> <worldPosition.y>-26.440298080444336</worldPosition.y>
<worldPosition.z>27.0482177734375</worldPosition.z> <worldPosition.z>20.22315788269043</worldPosition.z>
</cam> </cam>
<screen> <screen>
<width>1280</width> <width>1280</width>

218
rp_doc.py
View File

@ -1,6 +1,7 @@
import bge # Bibliothèque Blender Game Engine (UPBGE) import bge # Bibliothèque Blender Game Engine (UPBGE)
import rp_map1 # Map definition import rp_map1 # Map definition
import webbrowser import webbrowser
import time
############################################################################### ###############################################################################
# rp_doc.py # rp_doc.py
@ -256,6 +257,10 @@ def init():
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-icon"].color = color_doc_mission scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-icon"].color = color_doc_mission
scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-text"].color = color_doc_mission scene.objects["mission_"+str(scene.objects['Points']['mission'])+"-card-text"].color = color_doc_mission
# Chargement du texte
text_load()
text_load2()
# Mémorisation de la position des pages # Mémorisation de la position des pages
chap=("general", "missions", "rover", "python") chap=("general", "missions", "rover", "python")
for page in chap: for page in chap:
@ -277,10 +282,6 @@ def open():
scene.objects['Doc'].worldPosition = [0, -21, 15.8] scene.objects['Doc'].worldPosition = [0, -21, 15.8]
scene.objects['Doc_close'].color = color_doc_chap scene.objects['Doc_close'].color = color_doc_chap
scene.objects['Doc'].setVisible(True,True) scene.objects['Doc'].setVisible(True,True)
scene.objects['Doc_title']['Text'] = " "
text_clear()
scene.objects['Doc_title'].setVisible(False,True)
text_hide()
# Placer le nouveau chapitre # Placer le nouveau chapitre
name_chap = scene.objects['Doc']['page_chap'] name_chap = scene.objects['Doc']['page_chap']
@ -289,6 +290,9 @@ def open():
scene.objects['Doc_chap-'+name_chap].worldPosition = scene.objects['Doc'].worldPosition scene.objects['Doc_chap-'+name_chap].worldPosition = scene.objects['Doc'].worldPosition
scene.objects['Doc_chap-'+name_chap].setVisible(True,True) scene.objects['Doc_chap-'+name_chap].setVisible(True,True)
# scene.objects['Doc_text-l1-forward-card'].setVisible(True, False)
# scene.objects['Doc_text-l1-ref'].setVisible(True, False)
# Affichage ou pas du bouton de selection de la mission # Affichage ou pas du bouton de selection de la mission
if name_chap == "missions": if name_chap == "missions":
name_fct = scene.objects['Doc_chap-missions']['page_fct'] name_fct = scene.objects['Doc_chap-missions']['page_fct']
@ -325,22 +329,62 @@ def open():
scene.objects['Book_python_url'+str(i)].setVisible(True,True) scene.objects['Book_python_url'+str(i)].setVisible(True,True)
# Afficher le texte de la carte active # Afficher le texte de la carte active
if name_chap != "general": if name_chap != "general" and scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="": name_fct = scene.objects['Doc_chap-'+name_chap]['page_fct']
name_fct = scene.objects['Doc_chap-'+name_chap]['page_fct'] scene.objects['Doc_title']['Text'] = card_description[name_fct][0]
scene.objects['Doc_title']['Text'] = card_description[name_fct][0] scene.objects['Doc_title'].setVisible(True, False)
scene.objects['Doc_title'].setVisible(True, False) text_show(name_fct)
text_update(card_description[name_fct][1])
else:
scene.objects['Doc_title'].setVisible(False,True)
text_hide()
else: else:
if name_chap != "missions": scene.objects['Doc_title']['Text'] = " "
scene.objects['Doc_title'].setVisible(False,True) scene.objects['Doc_title'].setVisible(False,True)
text_hide() text_hide()
else:
scene.objects['Doc_title'].setVisible(False,True) scene.objects['Doc_text-l1-ref'].setVisible(True, False)
text_hide() print (scene.objects['Doc_text-l1-forward-card']['Text'])
scene.objects['Doc_text-l1-forward-card'].setVisible(True, False)
scene.objects['Doc_text-l1-forward-card'].worldPosition.x = scene.objects['Doc_text-l1-ref'].worldPosition.x
scene.objects['Doc_text-l1-forward-card'].worldPosition.y = scene.objects['Doc_text-l1-ref'].worldPosition.y
scene.objects['Doc_text-l1-forward-card'].worldPosition.z = scene.objects['Doc_text-l1-ref'].worldPosition.z
# text_load2()
# scene.objects['Doc_text-l1-forward-card']['text_def']= scene.objects['Doc_text-l1-forward-card']['Text']
# scene.objects['Doc_text-l1-forward-card']['redraw']=True
# print (scene.objects['Doc_text-l1-forward-card']['Text'])
# old_text=scene.objects['Doc_text-l1-forward-card']['Text']
# print (old_text)
# scene.objects['Doc_text-l1-forward-card']['Text']="eeee"
# scene.objects['Doc_text-l1-forward-card']['Text']=old_text
# scene.objects['Doc_text-l1-forward-card']['Text']=" rp_avancer()"
# scene.objects['Doc_text-l1-forward-card']['Text']=old_text
# doc_tempo (0.1)
# scene.objects['Doc_text-l1-forward-card'].setVisible(False, False)
# rp_tempo(0.1)
# scene.objects['Doc_text-l1-forward-card'].setVisible(False, False)
# scene.objects['Doc_text-l1-forward-card']['Text']="eeee"
def text_redraw(cont):
print ("text_redraw")
obj = cont.owner
print (obj['text_def'] +":" + obj['Text'])
obj['Text']= obj['text_def']
obj.setVisible(True, False)
print (obj['Text'])
scene.objects['Doc_text-l1-forward-card']['redraw']=False
scene.objects['Doc_text-l1-sleep-card']['Text']="rr"
# scene.objects['Doc_text-l1-forward-card']['Text']="eeee"
# if card is None:
# for card in card_description:
# print ("hide:", card)
# for i in range (13):
# scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].setVisible(False, False)
# else:
# print ("hide:", card)
# for i in range (13):
# scene.objects['Doc_text-l'+str(i+1)+'-'+card].setVisible(False, False)
## ##
# Fermeture du livre # Fermeture du livre
@ -439,7 +483,6 @@ def chapter(cont):
# sound_play (sndbuff_book_flip) # sound_play (sndbuff_book_flip)
obj = cont.owner obj = cont.owner
scene.objects['Doc_title']['Text'] = " " scene.objects['Doc_title']['Text'] = " "
text_clear()
# Enlever l'ancien chapitre # Enlever l'ancien chapitre
scene.objects['Doc-'+scene.objects['Doc']['page_chap']].color = color_doc_chap scene.objects['Doc-'+scene.objects['Doc']['page_chap']].color = color_doc_chap
@ -492,16 +535,13 @@ def chapter(cont):
scene.objects['Book_python_url'+str(i)].setVisible(True,True) scene.objects['Book_python_url'+str(i)].setVisible(True,True)
# Afficher le texte de la carte active # Afficher le texte de la carte active
if name_chap != "general": if name_chap != "general" and scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="": name_fct = scene.objects['Doc_chap-'+name_chap]['page_fct']
name_fct = scene.objects['Doc_chap-'+name_chap]['page_fct'] scene.objects['Doc_title']['Text'] = card_description[name_fct][0]
scene.objects['Doc_title']['Text'] = card_description[name_fct][0] scene.objects['Doc_title'].setVisible(True, False)
scene.objects['Doc_title'].setVisible(True, False) text_show(name_fct)
text_update(card_description[name_fct][1])
else:
scene.objects['Doc_title'].setVisible(False,True)
text_hide()
else: else:
scene.objects['Doc_title']['Text'] = " "
scene.objects['Doc_title'].setVisible(False,True) scene.objects['Doc_title'].setVisible(False,True)
text_hide() text_hide()
@ -509,35 +549,85 @@ def chapter(cont):
# Cacher le texte # Cacher le texte
## ##
def text_hide(): def text_hide(card=None):
for i in range (13): if card is None:
scene.objects['Doc_text-l'+str(i+1)].setVisible(False, False) for card in card_description:
print ("hide:", card)
## for i in range (13):
# Effacer le texte scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].setVisible(False, False)
## else:
print ("hide:", card)
def text_clear(): for i in range (13):
for i in range (13): scene.objects['Doc_text-l'+str(i+1)+'-'+card].setVisible(False, False)
scene.objects['Doc_text-l'+str(i+1)]['Text'] = ""
## ##
# Afficher le texte # Afficher le texte
## ##
def text_update(text): def text_show(card=None):
lines = text.split("\n") if card is None:
for i in range (13): for card in card_description:
if i >= len(lines): # print ("show:", card)
scene.objects['Doc_text-l'+str(i+1)]['Text'] = "" for i in range (13):
scene.objects['Doc_text-l'+str(i+1)].setVisible(False, False) scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].setVisible(True, False)
else: else:
if len(lines[i]) ==0: # print ("show:", card)
scene.objects['Doc_text-l'+str(i+1)]['Text'] = "" lines = card_description[card][1].split("\n")
scene.objects['Doc_text-l'+str(i+1)].setVisible(False, False) for i in range (13):
# print ("show avant:", scene.objects['Doc_text-l'+str(i+1)+'-'+card].name, scene.objects['Doc_text-l'+str(i+1)+'-'+card]['Text'])
if i >= len(lines):
text=""
else: else:
scene.objects['Doc_text-l'+str(i+1)]['Text'] = lines[i] if len(lines[i]) ==0:
scene.objects['Doc_text-l'+str(i+1)].setVisible(True, False) text=""
else:
text=lines[i]
# if scene.objects['Doc_text-l'+str(i+1)+'-'+card]['Text'] != text:
# scene.objects['Doc_text-l'+str(i+1)+'-'+card]['Text'] = text
print ("text", text)
# text="hh"
idcard="Doc_text-l"+str(i+1)+"-"+card
scene.objects[idcard]['Text'] = str(text)
scene.objects[idcard].setVisible(True, False)
# print ("show après:", scene.objects['Doc_text-l'+str(i+1)+'-'+card].name, scene.objects['Doc_text-l'+str(i+1)+'-'+card]['Text'])
##
# Préchargement des textes
##
def text_load():
# for i in range (13):
# scene.objects['Doc_text-l'+str(i+1)+'-ref']['Text'] = ""
# Création des objets 3D
for card in card_description:
print ("create:", card)
for i in range (13):
doc_text= scene.addObject('Doc_text-l'+str(i+1), None, 0.00, True)
# doc_text= scene.addObject('Doc_text-l'+str(i+1), scene.objects['Terrain'])
# doc_text= scene.addObject('Doc_text-l'+str(i+1), scene.objects['Doc'] )
doc_text.setParent(scene.objects['Doc'])
doc_text.name = 'Doc_text-l'+str(i+1)+'-'+str(card)
doc_text.worldPosition.x = scene.objects['Doc_text-l'+str(i+1)+'-ref'].worldPosition.x
doc_text.worldPosition.y = scene.objects['Doc_text-l'+str(i+1)+'-ref'].worldPosition.y
doc_text.worldPosition.z = scene.objects['Doc_text-l'+str(i+1)+'-ref'].worldPosition.z
doc_text.setVisible(False, False)
print ("create:", doc_text.name)
def text_load2():
for card in card_description:
lines = card_description[card][1].split("\n")
print ("load:", lines)
for i in range (13):
if i >= len(lines):
scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)]['Text']=""
else:
if len(lines[i]) ==0:
scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)]['Text']=""
else:
scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)]['Text']=lines[i]
# scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)]['Text']=str(card)
print ("load:", scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].name, scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)]['Text'])
## ##
# Afficher les details de la fonction à partir d'une carte # Afficher les details de la fonction à partir d'une carte
@ -550,7 +640,6 @@ def card (cont):
name_chap = scene.objects['Doc']['page_chap'] name_chap = scene.objects['Doc']['page_chap']
name_fct= obj.name[:-7] name_fct= obj.name[:-7]
scene.objects['Doc_title']['Text'] = " " scene.objects['Doc_title']['Text'] = " "
text_clear()
# Enlever l'ancienne carte # Enlever l'ancienne carte
if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="": if scene.objects['Doc_chap-'+name_chap]['page_fct'] !="":
@ -572,7 +661,7 @@ def card (cont):
scene.objects[name_fct+'-text'].color = color_doc_activate scene.objects[name_fct+'-text'].color = color_doc_activate
scene.objects['Doc_title']['Text'] = card_description[name_fct][0] scene.objects['Doc_title']['Text'] = card_description[name_fct][0]
scene.objects['Doc_title'].setVisible(True, False) scene.objects['Doc_title'].setVisible(True, False)
text_update(card_description[name_fct][1]) text_show(name_fct)
# URL Python # URL Python
if name_chap == "python": if name_chap == "python":
@ -643,9 +732,26 @@ def upgrade_talk (card):
else: else:
return "" return ""
##
###############################################################################
# Temporisation
###############################################################################
# Temporisation basée sur l'horloge de l'OS
def doc_sleep (duration):
time.sleep(duration)
# Temporisation basée par l'horloge de UPBGE
def doc_tempo (duration):
# time.sleep(duration*(1/scene.objects['Commands']['speed']))
scene.objects['Commands']['time']=0
while scene.objects['Commands']['time']<duration*(1/scene.objects['Commands']['speed']):
print (scene.objects['Commands']['time'])
# time.sleep(0.001)
###############################################################################
# Sounds # Sounds
## ###############################################################################
def sound_play (sound): def sound_play (sound):
pass # FIXME pass # FIXME

View File

@ -1096,10 +1096,9 @@ def rp_sleep (duration):
# Temporisation basée par l'horloge de UPBGE # Temporisation basée par l'horloge de UPBGE
def rp_tempo (duration): def rp_tempo (duration):
# time.sleep(duration*(1/scene.objects['Commands']['speed']))
scene.objects['Commands']['time']=0 scene.objects['Commands']['time']=0
while scene.objects['Commands']['time']<duration*(1/scene.objects['Commands']['speed']): while scene.objects['Commands']['time']<duration*(1/scene.objects['Commands']['speed']):
# print("Temporization commands :",scene.objects['Terrain']['delay_cmd']) # print (scene.objects['Commands']['time']
time.sleep(0.001) time.sleep(0.001)
############################################################################### ###############################################################################