mirror of
https://forge.apps.education.fr/blender-edutech/ropy.git
synced 2024-01-27 08:23:20 +01:00
Bugfix : génération du texte de l'aide par bpy (non par bge)
This commit is contained in:
parent
aecb2c9085
commit
ac6f90d245
BIN
ropy-32.blend
BIN
ropy-32.blend
Binary file not shown.
@ -8,8 +8,8 @@
|
|||||||
<worldPosition.z>20.22315788269043</worldPosition.z>
|
<worldPosition.z>20.22315788269043</worldPosition.z>
|
||||||
</cam>
|
</cam>
|
||||||
<screen>
|
<screen>
|
||||||
<width>784</width>
|
<width>1557</width>
|
||||||
<height>441</height>
|
<height>875</height>
|
||||||
<quality>4</quality>
|
<quality>4</quality>
|
||||||
</screen>
|
</screen>
|
||||||
</config>
|
</config>
|
||||||
|
147
rp_doc.py
147
rp_doc.py
@ -246,7 +246,7 @@ rp_python_text=""" Python est un langage de \n programmation interprété open s
|
|||||||
Python vise à être visuellement épuré \n avec une syntaxe clairement séparée \n des mécanismes de bas niveau.\n
|
Python vise à être visuellement épuré \n avec une syntaxe clairement séparée \n des mécanismes de bas niveau.\n
|
||||||
Python possède beaucoup de \n bibliothèques spécialisées.
|
Python possède beaucoup de \n bibliothèques spécialisées.
|
||||||
Multiplateformes et multiparadigme,
|
Multiplateformes et multiparadigme,
|
||||||
il est utilisé dans de nombreux \n contextes : scriptage, calcul numérique, \n prototypage, enseignement, ou encore \n comme langage de commande \n pour de nombreux logiciels."""
|
il est utilisé dans de nombreux \n contextes : scriptage, prototypage, \n calcul numérique, enseignement, ou \n encore comme langage de commande."""
|
||||||
rp_python_url=[["python.org","https://python.org"], ["AFPy","https://www.afpy.org"]]
|
rp_python_url=[["python.org","https://python.org"], ["AFPy","https://www.afpy.org"]]
|
||||||
card_description.update({"python-card" : [rp_python_title, rp_python_text, rp_python_url]})
|
card_description.update({"python-card" : [rp_python_title, rp_python_text, rp_python_url]})
|
||||||
|
|
||||||
@ -291,7 +291,8 @@ def init():
|
|||||||
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
|
# Chargement du texte
|
||||||
text_load()
|
# text_load()
|
||||||
|
text_dynamic_load() # en dynamique
|
||||||
|
|
||||||
# Mémorisation de la position des pages
|
# Mémorisation de la position des pages
|
||||||
for page in chap:
|
for page in chap:
|
||||||
@ -313,7 +314,8 @@ 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)
|
||||||
text_hide()
|
# text_hide()
|
||||||
|
text_dynamic_hide()
|
||||||
|
|
||||||
# Placer le nouveau chapitre
|
# Placer le nouveau chapitre
|
||||||
name_chap = scene.objects['Doc']['page_chap']
|
name_chap = scene.objects['Doc']['page_chap']
|
||||||
@ -362,11 +364,13 @@ def open():
|
|||||||
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_dynamic_show(name_fct)
|
||||||
|
# text_show(name_fct)
|
||||||
else:
|
else:
|
||||||
scene.objects['Doc_title']['Text'] = " "
|
scene.objects['Doc_title']['Text'] = " "
|
||||||
scene.objects['Doc_title'].setVisible(False,True)
|
scene.objects['Doc_title'].setVisible(False,True)
|
||||||
text_hide()
|
text_dynamic_hide()
|
||||||
|
# text_hide()
|
||||||
|
|
||||||
##
|
##
|
||||||
# Fermeture du livre
|
# Fermeture du livre
|
||||||
@ -473,7 +477,8 @@ def chapter(cont):
|
|||||||
scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']].worldPosition.y = scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['init_ly']
|
scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']].worldPosition.y = scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['init_ly']
|
||||||
scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']].worldPosition.z = scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['init_lz']
|
scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']].worldPosition.z = scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['init_lz']
|
||||||
if scene.objects['Doc']['page_chap'] != "general" and scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['page_fct'] !="":
|
if scene.objects['Doc']['page_chap'] != "general" and scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['page_fct'] !="":
|
||||||
text_hide(scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['page_fct'])
|
# text_hide(scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['page_fct'])
|
||||||
|
text_dynamic_hide(scene.objects["Doc_chap-"+scene.objects['Doc']['page_chap']]['page_fct'])
|
||||||
|
|
||||||
# Placer le nouveau chapitre
|
# Placer le nouveau chapitre
|
||||||
name_chap= obj.name[4:-7]
|
name_chap= obj.name[4:-7]
|
||||||
@ -523,66 +528,13 @@ def chapter(cont):
|
|||||||
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_dynamic_show(name_fct)
|
||||||
|
# text_show(name_fct)
|
||||||
else:
|
else:
|
||||||
scene.objects['Doc_title']['Text'] = " "
|
scene.objects['Doc_title']['Text'] = " "
|
||||||
scene.objects['Doc_title'].setVisible(False,True)
|
scene.objects['Doc_title'].setVisible(False,True)
|
||||||
text_hide()
|
text_dynamic_hide()
|
||||||
|
# text_hide()
|
||||||
##
|
|
||||||
# Cacher le texte
|
|
||||||
##
|
|
||||||
|
|
||||||
def text_hide(card=None):
|
|
||||||
if card is None:
|
|
||||||
for card in card_description:
|
|
||||||
for i in range (13):
|
|
||||||
scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].setVisible(False, False)
|
|
||||||
else:
|
|
||||||
for i in range (13):
|
|
||||||
scene.objects['Doc_text-l'+str(i+1)+'-'+card].setVisible(False, False)
|
|
||||||
|
|
||||||
##
|
|
||||||
# Afficher le texte
|
|
||||||
##
|
|
||||||
|
|
||||||
def text_show(card=None):
|
|
||||||
if card is None:
|
|
||||||
for card in card_description:
|
|
||||||
for i in range (13):
|
|
||||||
scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].setVisible(True, False)
|
|
||||||
else:
|
|
||||||
for i in range (13):
|
|
||||||
scene.objects['Doc_text-l'+str(i+1)+'-'+card].setVisible(True, False)
|
|
||||||
|
|
||||||
##
|
|
||||||
# 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:
|
|
||||||
lines = card_description[card][1].split("\n")
|
|
||||||
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)
|
|
||||||
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]
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Afficher les details de la fonction à partir d'une carte
|
# Afficher les details de la fonction à partir d'une carte
|
||||||
@ -598,7 +550,9 @@ def card (cont):
|
|||||||
|
|
||||||
# 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'] !="":
|
||||||
text_hide(scene.objects['Doc_chap-'+name_chap]['page_fct'])
|
# text_dynamic_hide(name_old_fct)
|
||||||
|
# text_hide(scene.objects['Doc_chap-'+name_chap]['page_fct'])
|
||||||
|
text_dynamic_hide(scene.objects['Doc_chap-'+name_chap]['page_fct'])
|
||||||
|
|
||||||
# Placer la carte de la mission active
|
# Placer la carte de la mission active
|
||||||
if scene.objects['Doc_chap-'+name_chap]['page_fct'] == "mission_"+str(scene.objects['Points']['mission'])+"-card":
|
if scene.objects['Doc_chap-'+name_chap]['page_fct'] == "mission_"+str(scene.objects['Points']['mission'])+"-card":
|
||||||
@ -617,7 +571,8 @@ 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_show(name_fct)
|
# text_show(name_fct)
|
||||||
|
text_dynamic_show(name_fct)
|
||||||
|
|
||||||
# URL Python
|
# URL Python
|
||||||
if name_chap == "python":
|
if name_chap == "python":
|
||||||
@ -670,6 +625,68 @@ def python_link (cont):
|
|||||||
i= cont.owner.name[15:-7]
|
i= cont.owner.name[15:-7]
|
||||||
webbrowser.open(card_description[name_fct][2][int(i)][1])
|
webbrowser.open(card_description[name_fct][2][int(i)][1])
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Génération dynamique des pages
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
##
|
||||||
|
# Cacher le texte
|
||||||
|
##
|
||||||
|
|
||||||
|
def text_dynamic_hide(card=None):
|
||||||
|
if card is None:
|
||||||
|
for card in card_description:
|
||||||
|
for i in range (13):
|
||||||
|
scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].setVisible(False, False)
|
||||||
|
else:
|
||||||
|
for i in range (13):
|
||||||
|
scene.objects['Doc_text-l'+str(i+1)+'-'+card].setVisible(False, False)
|
||||||
|
|
||||||
|
##
|
||||||
|
# Afficher le texte
|
||||||
|
##
|
||||||
|
|
||||||
|
def text_dynamic_show(card=None):
|
||||||
|
if card is None:
|
||||||
|
for card in card_description:
|
||||||
|
for i in range (13):
|
||||||
|
scene.objects['Doc_text-l'+str(i+1)+'-'+str(card)].setVisible(True, False)
|
||||||
|
else:
|
||||||
|
for i in range (13):
|
||||||
|
scene.objects['Doc_text-l'+str(i+1)+'-'+card].setVisible(True, False)
|
||||||
|
|
||||||
|
##
|
||||||
|
# Préchargement des textes
|
||||||
|
##
|
||||||
|
|
||||||
|
def text_dynamic_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:
|
||||||
|
lines = card_description[card][1].split("\n")
|
||||||
|
for i in range (13):
|
||||||
|
doc_text= scene.addObject('Doc_text-l'+str(i+1), None, 0.00, True)
|
||||||
|
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)
|
||||||
|
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)].blenderObject.data.body=lines[i] # Bug de la propriétés 'Text' (UPBGE) -> passage par 'body' de bpy (Blender)
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Store
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
##
|
##
|
||||||
# Texte pour le store
|
# Texte pour le store
|
||||||
##
|
##
|
||||||
|
Loading…
Reference in New Issue
Block a user