home *** CD-ROM | disk | FTP | other *** search
/ Mobiclic 46 / Mobiclic46.iso / pc / DATA / COMMUNS / MOBICLIC_MENUS.CST / 00221_Script_SCRIPTS_GENE_JLM < prev    next >
Text File  |  2002-08-21  |  35KB  |  841 lines

  1. --scripts gΘnΘraux pour Mobiclic by ⌐Time line/jl moreau 2001
  2. -------------------------------------------------
  3. on turndizstuff_Mob WADSPRITE, WADWAY
  4.   case(WADWAY) of
  5.     "ON":
  6.       if sprite(WADSPRITE).left >= 640 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH - 800
  7.     "OFF":
  8.       if sprite(WADSPRITE).left < 640 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH + 800
  9.   end case
  10. end
  11. ------------------------------------------------- 
  12. on turndizstuff  WADSPRITE, WADWAY
  13.   case(WADWAY) of
  14.     "ON":
  15.       if sprite(WADSPRITE).left >= 800 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH - 800
  16.     "OFF":
  17.       if sprite(WADSPRITE).left < 800 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH + 800
  18.   end case
  19. end
  20. ------------------------------------------------- 
  21. on gimme2digits ZENOMBRE
  22.   case(ZENOMBRE) <10 of
  23.     1:
  24.       reponse = "0"&string(ZENOMBRE)
  25.     0:
  26.       reponse = string(ZENOMBRE)
  27.   end case
  28.   return reponse
  29. end
  30. -------------------------------------------------
  31. on gimmezeAlphabet_No WATCHAR
  32.   u = chartoNum(WATCHAR)
  33.   case(u>64 and u < 91) of
  34.     1:-- si c'est une capitale
  35.       reponse = u - 64
  36.     0:
  37.       case(u>96 and u < 123) of
  38.         1: -- si c'est un voyelle
  39.           reponse = u - 96
  40.         0:
  41.           reponse = 0
  42.       end case
  43.   end case
  44.   return reponse
  45. end
  46. -----------------------------------
  47. on gimmezelowcaseletter WATNoAlpha
  48.   case(WATNoAlpha>96 and WATNoAlpha < 123) of
  49.     1:
  50.       reponse = numtoChar(WATNoAlpha)
  51.     0:
  52.       reponse = "erreur sur lettre"
  53.   end case
  54.   return reponse
  55. end
  56. -----------------------
  57. on MAJ_DB_FRISE
  58.   global gdizDB,gcheminDB
  59.   gdizDB = New(Xtra "V12dbe",gcheminDB&"FRISE_DB.V12", "ReadOnly", "") 
  60.   --1--) crΘation de l'instance d'une table V12 pour la table "INVENTIONS" 
  61.   gdizTable = New(Xtra "V12table",mGetRef(gdizDB),"INVENTIONS")
  62.   mSelect(gdizTable)
  63.   --2--) remplissage de la liste tampon par pΘriode et ventilation dans des acteurs champs
  64.   Lresult = [[],[],[],[],[],[],[]]
  65.   repeat with i = 1 to 7
  66.     mSetCriteria(gdizTable, "REF_PERIODE", "=", i)
  67.     mOrderBy(gdizTable,"NO_INVENT")
  68.     mSelect(gdizTable)
  69.     Nb_enreg = mSelectCount(gdizTable)
  70.     Lresult[i] = mGetSelection(gdizTable,"list",1,Nb_enreg,"NO_INVENT","DATE_AFFICHEE", "DATE_REPERE", "TITRE_PICTO")
  71.     Nb = count( Lresult[i])
  72.     repeat with j = 1 to Nb
  73.       u = Lresult[i][j][2]
  74.       L = length(u)
  75.       Lresult[i][j][2] = u.char[2..L-1]
  76.     end repeat
  77.     member("localdata_FRISE_"&gimme2digits(i)).text = string(Lresult[i])
  78.   end repeat
  79.   gdizTable = 0
  80.   gdizDB = 0
  81. end
  82. ------------------------------------------
  83. on JINGLE WATTRACK,WATSOUND, WATMODE
  84.   --joue un son du dossier JINGLES, soit en "direct from disk" (WATMODE = OUT),
  85.   --soit α partir de la distribution JINGLE (WATMODE = IN)
  86.   put "son jingle jouΘ:"& WATSOUND
  87.   case(WATMODE) of
  88.     "IN":
  89.       puppetSound WATTRACK, WATSOUND
  90.     "OUT":
  91.       sound playFile WATTRACK, "@//COMMUNS/MOBICLIC_JINGLES/"&WATSOUND&".aif"
  92.   end case
  93. end
  94. -----------------------------------------
  95. on gimmeQDraw_Center ZESPRITENo
  96.   --retourne le centre d'une forme QUICKDRAW situΘ sur la piste n░ ZESPRITENo
  97.   return point( (sprite(ZESPRITENo).right+sprite(ZESPRITENo).left )/2, (sprite(ZESPRITENo).Top + sprite(ZESPRITENo).Bottom)/2)
  98. end
  99. ----------------------------------------
  100. on locate_QDraw_bycenter ZESPRITENo, WATPLACE
  101.   -- positionne le centre d'un QuickDraw 
  102.   zedelta = point(sprite(ZESPRITENo).width/2, sprite(ZESPRITENo).height/2)
  103.   sprite(ZESPRITENo).loc = WATPLACE - zedelta
  104. end
  105. -----------------------------
  106. on lien 
  107.   if the platform contains "Win" then
  108.     reponse = "/"
  109.   else
  110.     reponse = ":"
  111.   end if 
  112.   return reponse
  113. end
  114. -------------------------------
  115. on zizik WATMUS
  116.   num = char 6 to 7 of the movieName
  117.   sound(1).volume = 50
  118.   sound(1).play(member(WATMUS))
  119. end
  120. ------------------------
  121. on REL2ABS STRINGNoCYBER -- donne le n░ du cyber dans la classification tenant compte des cybers rΘcurents
  122.   global gL_transcoCyber
  123.   -- pour Θviter toute erreur on impose un chaine de la forme "XX" si par erreur l'argument passΘ est un nombre
  124.   --  ex: 5 au lieu de "05"
  125.   STRINGNoCYBER = gimme2digits(value(STRINGNoCYBER))
  126.   return gimme2digits(gL_transcoCyber.getProp("C"&STRINGNoCYBER))
  127. end
  128. --------------------
  129. on ABS2REL STRINGNoCYBER-- donne le n░ du cyber dans l'ordre imposΘ chaquemois
  130.   global gL_transcoCyber
  131.   temp = 0
  132.   repeat with i = 1 to count(gL_transcoCyber)
  133.     if gL_transcoCyber[i] = STRINGNoCYBER then
  134.       temp = i
  135.       exit repeat
  136.     end if
  137.   end repeat
  138.   return gimme2digits(gL_transcoCyber.getPropAt(temp)).char[2..3]
  139. end
  140. --------------------
  141. on getInfo_titre_module
  142.   global gL_Type_module, gNo_cyber, gL_recres, gNo_Mobi,gL_transcoCyber, gNoABS_cyber
  143.   niveauSon
  144.   gL_transcoCyber = value(member("RUBRIQUES").line[10])
  145.   if  gNo_Mobi = VOID then gNo_Mobi = value(member("RUBRIQUES").line[8])
  146.   zenom = the movieName
  147.   case(zenom contains "calen") of
  148.     1: --on a affaire α un cybercalendrier
  149.       if gL_recres = VOID then
  150.         --        temp = value(member("RUBRIQUES").line[6])
  151.         --        gL_recres = []
  152.         --        repeat with i = 1 to count(temp)
  153.         --          gL_recres.add(value(REL2ABS(gimme2digits(temp[i]))))
  154.         --        end repeat
  155.         gL_recres = value(member("RUBRIQUES").line[6])
  156.       end if
  157.       gL_Type_module = ["CYBER", "NOP"]
  158.       case(zenom = "CALEND") of
  159.         1:--c'est le menu des cyber
  160.           gNoABS_cyber = "00"
  161.           gNo_cyber  = "00"
  162.         0:--c'estun cyber 
  163.           gNoABS_cyber =  zenom.char[6..7] -- on renseigne le n░ABSOLU de cyber(sous forme d'une chaine de 2 caractΦres ex "07"
  164.           gNo_cyber = ABS2REL(zenom.char[6..7])-- on renseigne le n░relatif de cyber(sous forme d'une chaine de 2 caractΦres ex "07"
  165.           member("No_MODULE").text = gNo_cyber 
  166.           member("TITRE_MODULE").text = member("selectMenus").line[6]-- on renseigne le titre du cyber de cyber
  167.       end case
  168.     0: -- on a affaire α une rubrique
  169.       tampon = value(member("selectMenus").line[6])
  170.       member("TITRE_MODULE").text = tampon[2]-- on renseigne le titre du cyber de cyber
  171.       member("No_MODULE").text = EMPTY -- le texte contenant le n░ est vidΘ
  172.       gL_Type_module = ["RUB",tampon[1]]
  173.       --tampon[1] contient "HIS" pour histoire, "SCI" pour ClicSciences, "GEO" pour gΘographie, "QUI" pour le Quiz...
  174.   end case
  175. end
  176. ----------------
  177. on compte_objets_GLI_DEPO RACINENOMOBJET, WATMODE
  178.   global gNb_Objets,gL_Objects_Home, gMode_GLI_DEPO
  179.   -- dans un jeu glisser-dΘposer" cette procΘdure:
  180.   -- compte le nombre d'objets α dΘplacer
  181.   -- RAZ la liste des positions de retour Θlastique des objets
  182.   -- initialise la variable de mode de jeu glisser-dΘposer :
  183.   -- 0 pour rΘbus, 1 pour retour si non bien placΘ;  2 pour Θchange possible des objets placΘs, 3 pour utilisation d'un "distributeur"
  184.   
  185.   --on compte le nombre d'objets dΘplaτables
  186.   Nb_acteurs = the number of members of castLib 1
  187.   compteur = 0
  188.   repeat with i = 1 to Nb_acteurs
  189.     ZENOM = member(i).name
  190.     if ZENOM contains RACINENOMOBJET and not(ZENOM contains "_R") and not(ZENOM contains "_S") and not(ZENOM contains "_I") then
  191.       L = length(ZENOM)
  192.       ZENo = value(ZENOM.char[L-1..L])
  193.       compteur = max(compteur, ZENo)
  194.     end if
  195.   end repeat
  196.   gNb_Objets = compteur
  197.   gL_Objects_Home = []
  198.   gMode_GLI_DEPO = WATMODE
  199. end
  200. ---------------------
  201. on compte_Mots()
  202.   Nb_acteurs = the number of members of castLib 1
  203.   compteur = 0
  204.   repeat with i = 1 to Nb_acteurs
  205.     ZENOM = member(i).name
  206.     if ZENOM contains "MOT" and not(ZENOM contains "_R") and not(ZENOM contains "_S") and not(ZENOM contains "_I") then
  207.       L = length(ZENOM)
  208.       ZENo = value(ZENOM.char[L-1..L])
  209.       compteur = max(compteur, ZENo)
  210.     end if
  211.   end repeat
  212.   return compteur
  213. end
  214. -------------
  215. on clic_zap ZETARGET, ZESOUNDTRACK
  216.   puppetSound ZESOUNDTRACK, 0
  217.   go ZETARGET
  218. end
  219. -------------------
  220. on siestoune NBSECONDES
  221.   top_depart = the timer
  222.   top_arrivee = top_depart + 60*NBSECONDES
  223.   repeat while the timer < top_arrivee
  224.   end repeat
  225. end
  226. ---------------
  227. on getInfo_bandeauTitre
  228.   global gpiste_BandeauTitre, gEtatBandeau, gTitreFinalPos, gL_BandeauTitre_HomeH, gL_Type_module, gNb_cybers
  229.   if gNb_cybers = VOID then gNb_cybers = value(member("RUBRIQUES").line[4])
  230.   if gL_BandeauTitre_HomeH = VOID then gL_BandeauTitre_HomeH = [point(0,0),point(0,0), point(0,0)] 
  231.   gL_BandeauTitre_HomeH[1] = sprite(gpiste_BandeauTitre).locH
  232.   gL_BandeauTitre_HomeH[2] = sprite(gpiste_BandeauTitre+1).locH
  233.   gL_BandeauTitre_HomeH[3] = sprite(gpiste_BandeauTitre+2).locH
  234.   gEtatBandeau = "KO"
  235.   largeurbandeau = sprite(gpiste_BandeauTitre).member.width
  236.   largeurActeurTitre = sprite(gpiste_BandeauTitre+ 1).width
  237.   gaucheduTitreCyber = member("TITRE_MODULE").charPosToLoc(1)
  238.   droiteBandeau = sprite(gpiste_BandeauTitre).right
  239.   droiteActeurTitre = sprite(gpiste_BandeauTitre+ 1).right
  240.   gTitreFinalPos = droiteBandeau - droiteActeurTitre + largeurActeurTitre - gaucheduTitreCyber - largeurbandeau/2 + 10
  241.   if gL_Type_module[1] = "RUB" then
  242.     sprite(gpiste_BandeauTitre).member = "BD_TITRE_"&gL_Type_module[2] -- on remplace le bandeau standars par le bandeau de rubrique adΘquat
  243.   end if 
  244. end
  245. ------------------------
  246. on show_title
  247.   global gpiste_BandeauTitre, gEtatBandeau, gTitreFinalPos, gL_BandeauTitre_HomeH
  248.   gEtatBandeau = "OK"
  249.   delta = gTitreFinalPos[1] - gL_BandeauTitre_HomeH[1]
  250.   sprite(gpiste_BandeauTitre).locH = gTitreFinalPos[1]
  251.   sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2] + float(delta)/2
  252.   sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3] + float(delta)/2
  253.   updateStage
  254.   sprite(gpiste_BandeauTitre).locH = gTitreFinalPos[1]
  255.   sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2] + delta
  256.   sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3] + delta
  257.   updateStage
  258. end
  259. --------------------------
  260. on hide_title
  261.   global gpiste_BandeauTitre, gEtatBandeau,  gL_BandeauTitre_HomeH, gTitreFinalPos
  262.   sprite(gpiste_BandeauTitre).blend = 60
  263.   case(gEtatBandeau = "OK") of
  264.     1:
  265.       gEtatBandeau = "KO"
  266.       delta = gTitreFinalPos[1] - gL_BandeauTitre_HomeH[1]
  267.       sprite(gpiste_BandeauTitre).locH = gTitreFinalPos[1]
  268.       sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2] + float(delta)/2
  269.       sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3] + float(delta)/2
  270.       updateStage
  271.       sprite(gpiste_BandeauTitre).locH = gL_BandeauTitre_HomeH[1]
  272.       sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2]
  273.       sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3]
  274.       updateStage
  275.     0:
  276.       nothing
  277.   end case
  278.   -------------------------
  279. on faire_bonne_impression  WATMODE, WATTYPE,WATSTUFF,TITRE, PIED_DE_PAGE
  280.   -- WATMODE indique si on est en mode aperτu (1) ou en mode impression (0)
  281.   -- WATMEDIA indique le type de fichier α imprimer : acteur (nom d'acteur) ou Θcran ("E")
  282.   -- crΘation d'une instance de l'xtra d'impression----------------------------------------------------------
  283.   doc = new(xtra "PrintOMatic")
  284.   if not objectP(doc) then exit
  285.   -- rΘglages des marges
  286.   setPrintableMargins (doc)
  287.   setMargins doc, rect(42,42,42,42)
  288.   -- crΘation de la page
  289.   if (doPageSetup(doc)) then
  290.     newPage doc
  291.     -- initialisation des variables de format page
  292.     L_Page=getPageWidth(doc)
  293.     H_Page=getPageHeight(doc)
  294.     --initialisation de la police
  295.     setTextFont doc,"Dream of me *"
  296.     
  297.     case(WATTYPE) of
  298.       "E": --impression d'Θcran
  299.         
  300.       "M":--impression d'acteur
  301.         ---------------- TETE DE LA PAGE -------------------
  302.         --        -- ligne horizontale haut de page
  303.         --        drawLine doc,point(0,10),point(L_Page,10)
  304.         --        -- titre
  305.         --        setTextJust doc,"centered"
  306.         --        setTextStyle doc,"bold"
  307.         --        setTextSize doc,14
  308.         --        drawText doc,TITRE ,point(L_Page/2, 25)
  309.         ---------------- CORPS DE LA PAGE -------------------
  310.         -- placement du schΘma (taille propre, ramenΘe autoritairement α largeur max = L_Page
  311.         -- ou α la hauteur de page disponible(H_Page) si l'une des deux dimensions est trop grande
  312.         --        if ECONOMIE = 1 then
  313.         --        WATSTUFF = WATSTUFF&"_LIGHT"
  314.         --        end if
  315.         L = float(member(WATSTUFF).width)
  316.         H = float(member(WATSTUFF).height)
  317.         coef  = H/L
  318.         case(L>=H) of
  319.           1:
  320.             L_schema = min(L, L_Page)
  321.             H_schema = (L_schema)*coef
  322.           0:
  323.             H_schema = min(H,H_Page-50)
  324.             L_schema = H_schema/coef
  325.         end case
  326.         drawPicture doc,member(WATSTUFF),rect(0,0,L_schema,H_schema)
  327.         ----------------- PIED DE PAGE -------------------
  328.         -- ligne horizontale bas de page
  329.         --        drawLine doc,point(0,H_Page-30),point(L_Page,H_Page-30)
  330.         setTextJust doc,"left"
  331.         setTextStyle doc,"plain"
  332.         setTextSize doc,16
  333.         drawText doc,PIED_DE_PAGE,point(L_Page- 255,H_Page-15)
  334.         -- logo  GF
  335.         drawPicture doc,member("LOGO_MILAN"),rect(L_Page- 41,H_Page-41,L_Page-1,H_Page-1)
  336.         setTextSize doc,8
  337.     end case
  338.     -- lancement de l'impression-----------------------------------------------------------
  339.     case(WATMODE) of
  340.       1:-- si on est en mode aperτu on affiche l'aperτu
  341.         printPreview doc
  342.       0:-- sinon on imprime
  343.         setProgressMsg doc, "Impression de la fiche "&TITRE&" en cours... "
  344.         if doJobSetup(doc) then print doc
  345.     end case
  346.   end if
  347. end
  348. ------------------------------------------------------------------------------
  349. on Eker_BG_JLM
  350.   global gpiste_Infos, gpisteDico, gpisteFond_Dico, gpisteFond_Infos, gpisteFond_infos, pisteAideRub, gNoABS_cyber
  351.   global gNo_cyber
  352.   L_taches = value(member("selectMenus").line[3]) -- on charge la liste des taches locales de l'Θquerre bleue
  353.   zestuff = the movieName
  354.   case(zestuff contains "CALEN") of
  355.     1: --c'est un cyber calend
  356.       if L_taches[2] = 1 then
  357.         zegoud_aide = "aide"&gNo_cyber
  358.         sprite(pisteAideRub + 1).member = zegoud_aide -- s'l y a appel au l'aide rubrique on charge le bon texte d'aide
  359.         sprite(pisteAideRub).member = "FOND_AIDE"
  360.         updateStage
  361.         zegoud_aide_H = sprite(pisteAideRub + 1).height
  362.         sprite(pisteAideRub + 1).locV = 480 - zegoud_aide_H -10
  363.         sprite(pisteAideRub).locV = 480 - zegoud_aide_H -70 + member("FOND_AIDE").height/2
  364.       end if
  365.       if L_taches[3] = 1 then
  366.         zegoud_dico = "dico"&gNo_cyber
  367.         sprite(gpisteDico).member = zegoud_dico -- s'l y a appel au dico on charge le bon texte dico
  368.         updateStage
  369.         zegoud_dico_H = sprite(gpisteDico).height
  370.         sprite(gpisteDico).locV = 480 - zegoud_dico_H -10
  371.         sprite(gpisteFond_Dico).locV = 480 - zegoud_dico_H -70 + member("FOND_DICO").height/2
  372.       end if
  373.       if L_taches[4] = 1 then
  374.         zegoud_infos = "infos"&gNo_cyber
  375.         sprite(gpiste_Infos).member = zegoud_infos -- s'l y a appel aux infos on charge le bon texte info
  376.         updateStage
  377.         zegoud_infos_H = sprite(gpiste_Infos).height
  378.         sprite(gpiste_Infos).locV = 480 - zegoud_infos_H -10
  379.         sprite(gpisteFond_Infos).locV = 480 - zegoud_infos_H -90 +member("FOND_INFOS").height/2
  380.       end if
  381.     0:
  382.       case(zestuff contains "LAN") of
  383.         1: -- c'est une rubrique langue
  384.           nothing
  385.         0: --c'est une rubrique ou.....
  386.           L = length(zestuff)
  387.           zeshortName = zestuff.char[1..L-4] --ex "FRISE" pour le movie "FRISE.dir"
  388.           if L_taches[2] = 1 then
  389.             zegoud_aide = "aide"&zeshortName
  390.             sprite(pisteAideRub + 1).member = zegoud_aide -- s'l y a appel au l'aide rubrique on charge le bon texte d'aide
  391.             sprite(pisteAideRub).member = "FOND_AIDE"
  392.             updateStage
  393.             zegoud_aide_H = sprite(pisteAideRub + 1).height
  394.             sprite(pisteAideRub + 1).locV = 480 - zegoud_aide_H -10
  395.             sprite(pisteAideRub).locV = 480 - zegoud_aide_H -70 + member("FOND_AIDE").height/2
  396.           end if
  397.           if L_taches[3] = 1 then
  398.             zegoud_dico = "dico"&zeshortName
  399.             sprite(gpisteDico).member = zegoud_dico -- s'l y a appel au dico on charge le bon texte dico
  400.             updateStage
  401.             zegoud_dico_H = sprite(gpisteDico).height
  402.             sprite(gpisteDico).locV = 480 - zegoud_dico_H -10
  403.             sprite(gpisteFond_Dico).locV = 480 - zegoud_dico_H -70 + member("FOND_DICO").height/2
  404.           end if
  405.           if L_taches[4] = 1 then
  406.             zegoud_infos = "infos"&zeshortName
  407.             sprite(gpiste_Infos).member = zegoud_infos -- s'l y a appel aux infos on charge le bon texte info
  408.             updateStage
  409.             zegoud_infos_H = sprite(gpiste_Infos).height
  410.             sprite(gpiste_Infos).locV = 480 - zegoud_infos_H -10
  411.             sprite(gpisteFond_Infos).locV = 480 - zegoud_infos_H -90 +member("FOND_INFOS").height/2
  412.           end if
  413.       end case
  414.   end case
  415. end
  416. -----------------
  417. on compte_Famille RACINE_NOM
  418.   Nb_acteurs = the number of members of castLib 1
  419.   reponse = 0
  420.   repeat with i = 1 to Nb_acteurs
  421.     if member(i).name contains RACINE_NOM then
  422.       reponse = reponse + 1
  423.     end if
  424.   end repeat
  425.   return reponse
  426. end
  427. --------------------
  428. on RAZ_pistes_son
  429.   coupeson(2)
  430.   coupeson(3)
  431. end
  432. -------------------
  433. on gimmezeDroite ZE2POINTS
  434.   x1 = ZE2POINTS[1][1]
  435.   y1 = ZE2POINTS[1][2]
  436.   x2 = ZE2POINTS[2][1]
  437.   y2 = ZE2POINTS[2][2]
  438.   if abs(x1-x2) < 2 then 
  439.     x2 = x1
  440.   else
  441.     if abs(y1-y2) < 2 then
  442.       y2 = y1
  443.     end if
  444.   end if
  445.   case(x1<>x2 and y1 <> y2) of
  446.     1:
  447.       -- cas gΘnΘral
  448.       a = float(y2 - y1)/(x2 - x1)
  449.       b = y1 - a*x1
  450.       reponse = [a,b]
  451.     0:
  452.       case(x1 = x2) of
  453.         1: --droite verticale
  454.           
  455.           reponse = ["V", x1]
  456.         0: -- droite horizontale
  457.           reponse = ["H", y1]
  458.       end case
  459.   end case
  460.   return reponse
  461. end
  462. ---------------------
  463. on extractNo ZETEXT
  464.   L = length(ZETEXT)
  465.   reponse = value(ZETEXT.char[L-1..L])
  466.   return reponse
  467. end
  468. --------------------
  469. on debut_cyber
  470.   go movie "@/calend"
  471. end
  472. -------------
  473. on revoir_cyber
  474.   initFilm
  475.   go to movie(the movieName)
  476. end
  477. ---------------
  478. on suite_cyber
  479.   global gNo_cyber, gNb_cybers, gL_recres
  480.   zeNo = value(gNo_cyber)
  481.   case(member("selectMenus").line[6] contains "Cyberlecteur" or member("selectMenus").line[6] contains "Questionlecteur") of
  482.     1:--si on est dans un cyberlecteur (dΘcouplΘ en deux fichiers calenXX.dir et calenXX_1.dir)
  483.       case(the movieName contains "_1") of
  484.         0:-- si on est dans le premier des deux fichiers
  485.           go movie "@/calen"&REL2ABS(zeNo)&"_1"-- on va au second (exactement α son adresse absolue)
  486.         1:-- si on est dans le second
  487.           if zeNo < gNb_cybers then -- si ce n'est pas le dernier cyber du mois
  488.             case(gL_recres.getPos(zeNo + 1)) of
  489.               0:------------------ si le cyber suivant n'est pas une rΘcrΘ
  490.                 go movie "@/calen"&REL2ABS(zeNo + 1)-- on va au cyber suivant (exactement α son adresse absolue)
  491.               otherwise:---------- si le  cyber suivant est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  492.                 
  493.                 if zeNo + 2 >  gNb_cybers then-----si le  rang de ce cyber + 2 dΘpasse le nombre de cybers du mois
  494.                   go movie "@/calen"&REL2ABS("O1") -- on va au cyber n░1 (exactement α son adresse absolue)
  495.                 else
  496.                   go movie "@/calen"&REL2ABS(zeNo + 2)-- sinon, on va au cyber de rang courant  + 2 (exactement α son adresse absolue)
  497.                 end if
  498.             end case
  499.           else --si c'est le dernier cyber du mois
  500.             case(gL_recres.getPos(1)) of
  501.               0:-- si le premier cyber du mois n'est pas une rΘcrΘ
  502.                 go movie "@/calen"&REL2ABS(1)-- on va au premier cyber(exactement α son adresse absolue)
  503.               1:-- si le premier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  504.                 go movie "@/calen"&REL2ABS(2)-- on va au 2Φme cyber(exactement α son adresse absolue)
  505.             end case 
  506.           end if
  507.       end case
  508.     0:--si on n'est pas dans un cyberlecteur
  509.       if zeNo < gNb_cybers then -- si ce n'est pas le dernier cyber du mois
  510.         case(gL_recres.getPos(zeNo + 1)) of
  511.           0:------------------ si le cyber suivant n'est pas une rΘcrΘ
  512.             go movie "@/calen"&REL2ABS(zeNo + 1)-- on va au cyber suivant (exactement α son adresse absolue)
  513.           otherwise:---------- si le  cyber suivant est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  514.             if zeNo + 2 >  gNb_cybers then-----si le  rang courant ce cyber + 2 dΘpasse le nombre de cybers du mois
  515.               go movie "@/calen"&REL2ABS(1) -- on va au cyber n░1 (exactement α son adresse absolue)
  516.             else
  517.               go movie "@/calen"&REL2ABS(zeNo + 2)-- sinon, on va au cyber de rang courant  + 2 (exactement α son adresse absolue)
  518.             end if
  519.         end case
  520.       else --si c'est le dernier cyber du mois
  521.         case(gL_recres.getPos(1)) of
  522.           0:-- si le premier cyber du mois n'est pas une rΘcrΘ
  523.             go movie "@/calen"&REL2ABS(1)-- on va au premier cyber(exactement α son adresse absolue)
  524.           1:-- si le premier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  525.             go movie "@/calen"&REL2ABS(2)-- on va au 2Φme cyber(exactement α son adresse absolue)
  526.         end case
  527.       end if
  528.   end case
  529. end
  530. --------------
  531. on retour_cyber
  532.   global gNo_cyber, gNb_cybers, gL_recres
  533.   zeNo = value(gNo_cyber)
  534.   put zeno
  535.   case(member("selectMenus").line[6] contains "Cyberlecteur" or member("selectMenus").line[6] contains "Questionlecteur") of
  536.     1:--si on est dans un cyberlecteur (dΘcouplΘ en deux fichiers calenXX.dir et calenXX_1.dir)
  537.       case(the movieName contains "_1") of
  538.         1:-- si on est dans le 2Φme des deux fichiers
  539.           go frame "ATTENTE" of movie "@/calen"&REL2ABS(zeNo)-- on va au Premier (exactement α son adresse absolue)
  540.         0:-- si on est dans le premier
  541.           if zeNo > 1 then --si ce n'est pas le premier cyber du mois
  542.             case(gL_recres.getPos(zeNo - 1)) of
  543.               0:------------------ si le cyber prΘcΘdent n'est pas une rΘcrΘ
  544.                 go movie "@/calen"&REL2ABS(zeNo - 1)-- on va au cyber prΘcΘdent (exactement α son adresse absolue)
  545.               otherwise:---------- si le  cyber prΘcΘdent est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  546.                 if zeNo - 2 <  1 then-----si le  rang courant ce cyber - 2 est plus petit que 1
  547.                   go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyberdu mois (exactement α son adresse absolue)
  548.                 else
  549.                   go movie "@/calen"&REL2ABS(zeNo - 2)-- sinon, on va au cyber de rang courant  - 2 (exactement α son adresse absolue)
  550.                 end if
  551.             end case
  552.           else-- si c'est le premier cyber du mois
  553.             case(gL_recres.getPos(zeNo - 1)) of
  554.               0:-- si le dernier cyber du mois n'est pas une rΘcrΘ
  555.                 go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyber du mois (exactement α son adresse absolue)
  556.               1:-- si le dernier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  557.                 go movie "@/calen"&REL2ABS(gNb_cybers-1)-- on va α l'avant- dernier cyber du mois (exactement α son adresse absolue) 
  558.             end case
  559.           end if
  560.       end case
  561.     0:--si on n'est pas dans un cyberlecteur
  562.       if zeNo > 1 then --si ce n'est pas le premier cyber du mois
  563.         put gL_recres.getPos(zeNo - 1)
  564.         case(gL_recres.getPos(zeNo - 1)) of
  565.           0:------------------ si le cyber prΘcΘdent n'est pas une rΘcrΘ
  566.             go movie "@/calen"&REL2ABS(zeNo - 1)-- on va au cyber prΘcΘdent (exactement α son adresse absolue)
  567.           otherwise:---------- si le  cyber prΘcΘdent est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  568.             if zeNo - 2 <  1 then-----si le  rang courant ce cyber - 2 est plus petit que 1
  569.               go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyberdu mois (exactement α son adresse absolue)
  570.             else
  571.               go movie "@/calen"&REL2ABS(zeNo - 2)-- sinon, on va au cyber de rang courant  - 2 (exactement α son adresse absolue)
  572.             end if
  573.         end case
  574.       else-- si c'est le premier cyber du mois
  575.         case(gL_recres.getPos(zeNo - 1)) of
  576.           0:-- si le dernier cyber du mois n'est pas une rΘcrΘ
  577.             go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyber du mois (exactement α son adresse absolue)
  578.           1:-- si le dernier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  579.             go movie "@/calen"&REL2ABS(gNb_cybers-1)-- on va α l'avant- dernier cyber du mois (exactement α son adresse absolue) 
  580.         end case
  581.       end if
  582.   end case
  583. end
  584. ---------------
  585. on localdata Noligne--extrait la ligne Noligne du champ localdata
  586.   return value(member("localdata").line[Noligne])
  587. end 
  588. -----------------------
  589. on jump_intro ZEGOUDLABEL
  590.   global L_gmemPassage
  591.   if L_gmemPassage = VOID then L_gmemPassage = []
  592.   zemoovy_nem = the movieName.char[1..length(the movieName)-4]
  593.   if L_gmemPassage.getPos(zemoovy_nem) > 0 then
  594.     go ZEGOUDLABEL
  595.     spritesMenus()
  596.     hide_title()
  597.   else 
  598.     L_gmemPassage.add(zemoovy_nem)
  599.   end if
  600. end
  601. ---------------------
  602. on sous_titrage --message envoyΘ par l'Θquerre bleue α sa fermeture aprΦs clic sur item 5("voir/masquer sous-titres")
  603.   global gFlag_soustitrage, gLMem_MagicWindoz_lok
  604.   if gLMem_MagicWindoz_lok = VOID or gLMem_MagicWindoz_lok = [] then RAZ_magicWindoz_lok()
  605.   IF gFlag_soustitrage = VOID then gFlag_soustitrage = 0
  606.   case(gFlag_soustitrage) of
  607.     0:
  608.       gFlag_soustitrage = 1
  609.       if   windowpresent("SOUS_TITRE") = 0 then
  610.         member("SOUS_TITRAGE").text = EMPTY
  611.         window("SOUS_TITRE").rect = gLMem_MagicWindoz_lok[1]
  612.         window("SOUS_TITRE").filename = "@//COMMUNS/MOBICLIC_SOUS_TITRAGE"
  613.         window("SOUS_TITRE").windowType = 2
  614.         window("SOUS_TITRE").modal = 0
  615.         window("SOUS_TITRE").visible = 1
  616.         window("SOUS_TITRE").open()
  617.       end if
  618.     1:
  619.       gFlag_soustitrage = 0
  620.       if windowpresent("SOUS_TITRE") = 1 then
  621.         member("SOUS_TITRAGE").text = EMPTY
  622.         window("SOUS_TITRE").forget()
  623.       end if 
  624.   end case
  625. end 
  626. ----------------------
  627. on gere_soustitrage ID_SON-- procΘdure lancΘe dans les procΘdures "joueson()"
  628.   global gFlag_soustitrage
  629.   if ID_SON contains "sons" then
  630.     L = length(ID_SON)
  631.     ID_SON =ID_SON.char[6..L]
  632.   end if
  633.   temp = trouve_soustitre(ID_SON)
  634.   if temp > 0 then
  635.     member("SOUS_TITRAGE").text = member("LISTE_SOUS_TITRES").LINE[temp]
  636.   end if
  637. end
  638. -----------------------
  639. on trouve_soustitre CHAINE
  640.   global gNb_soustitres_Mobiclic
  641.   if gNb_soustitres_Mobiclic = VOID then gNb_soustitres_Mobiclic = member("LISTE_SONS_POUR_SOUSTITRAGE").line.count
  642.   No_ligne = 0
  643.   repeat with i = 1 to gNb_soustitres_Mobiclic
  644.     if member("LISTE_SONS_POUR_SOUSTITRAGE").line[i] = CHAINE then
  645.       No_ligne = i
  646.       exit repeat 
  647.     end if
  648.   end repeat
  649.   return No_ligne
  650. end
  651. -----------------------
  652. --on exitFrame
  653. --  global gFlag_soustitrage
  654. --  if gFlag_soustitrage = 1 and soundBusy(3) = 0 then member("SOUS_TITRAGE").text = EMPTY
  655. --  pass
  656. --end
  657. -----------------------
  658. on RAZ_magicWindoz_lok
  659.   global gLMem_MagicWindoz_lok, gL_MagicWindoz_lok, gL_magicWindowscolors
  660.   x0 = the stageLeft
  661.   y0 = the stageTop
  662.   x1 = the stageRight
  663.   y1 = the stageBottom
  664.   if gL_magicWindowscolors = VOID then gL_magicWindowscolors = ["YELLOW","GREEN","RED","BLUE"]
  665.   --  if gLMem_MagicWindoz_lok = VOID then
  666.   gLMem_MagicWindoz_lok= [[],[],[],[],[],[]]
  667.   gLMem_MagicWindoz_lok[1] = rect( x0, y0 ,x0 + 430 ,y0 + 68) -- position initiale dela fenΩtre "yellow window"
  668.   gLMem_MagicWindoz_lok[2] = rect(x1-72, y0 ,x1 , y0 +250) -- position initiale dela fenΩtre "green window"
  669.   gLMem_MagicWindoz_lok[3] = rect(x1-312, y1-62 ,x1 , y1) -- position initiale dela fenΩtre "red window"
  670.   gLMem_MagicWindoz_lok[4] = rect(x0 ,y1-280 ,x0 + 74,y1) -- position initiale dela fenΩtre "blue window"
  671.   gLMem_MagicWindoz_lok[5] = rect(x0, y1 ,x0+640 , y1 +80) -- position initiale dela fenΩtre commentaires
  672.   --  end if 
  673.   case(the paramCount) of
  674.     0:
  675.       gL_MagicWindoz_lok = gLMem_MagicWindoz_lok.duplicate()
  676.     1:
  677.       gL_MagicWindoz_lok[param(1)] = gLMem_MagicWindoz_lok[param(1)]
  678.   end case
  679. end
  680. -----------------------
  681. on manage_magicWindow COLOR, MODE
  682.   global gL_cornerwindows_Flags,gL_MagicWindoz_lok, gL_magicWindowscolors
  683.   if gL_MagicWindoz_lok = VOID then RAZ_magicWindoz_lok()
  684.   if gL_cornerwindows_Flags = VOID then gL_cornerwindows_Flags = [0,0,0,0] --coin HG(jaune), coin HD(vert), coin BD(rouge), coin BG(bleu)
  685.   temp = magicW_No(COLOR)
  686.   case(gL_cornerwindows_Flags[temp]) of
  687.     0:--si la fenΩtre-Θquerre n'est pas dΘployΘe
  688.       gL_cornerwindows_Flags[temp]= 1
  689.       if   windowpresent(COLOR&"_WINDOW") = 0 then -- si la fenΩtre n'a pas dΘja ΘtΘ ouverte au moins 1 fois
  690.         window(COLOR&"_WINDOW").rect = gL_MagicWindoz_lok[temp]
  691.         window(COLOR&"_WINDOW").filename = "@//COMMUNS/M_"&COLOR&"_WINDOW"
  692.         window(COLOR&"_WINDOW").windowType = member(COLOR&"_WINDOW_MASK")--ceci n'opΦre qu'en mode runtime
  693.         window(COLOR&"_WINDOW").modal = 0
  694.         window(COLOR&"_WINDOW").visible = 1
  695.       else
  696.         window(COLOR&"_WINDOW").rect = gL_MagicWindoz_lok[temp]
  697.       end if
  698.       window(COLOR&"_WINDOW").open()
  699.     1:--si la fenΩtre-Θquerre  est dΘployΘe
  700.       gL_cornerwindows_Flags[temp] = 0
  701.       if windowpresent(COLOR&"_WINDOW") = 1 then
  702.         close_magicWindow(COLOR,MODE)
  703.       end if 
  704.   end case
  705. end
  706. ----------------------
  707. on magicW_No ZECOLOR
  708.   global gL_magicWindowscolors
  709.   return gL_magicWindowscolors.getPos(ZECOLOR)
  710. end 
  711. ------------------
  712. on close_magicWindow COLOR,MODE
  713.   global gL_cornerwindows_Flags, gL_MagicWindoz_lok, gLmem_MagicWindoz_lok
  714.   temp = magicW_No(COLOR)
  715.   gL_cornerwindows_Flags[temp] = 0
  716.   test = (MODE = "SPE" and intersect(gL_MagicWindoz_lok[temp], gLmem_MagicWindoz_lok[temp]) <> rect(0,0,0,0) or MODE = "STD")
  717.   if  test = 1 then 
  718.     RAZ_magicWindoz_lok(temp)
  719.   end if
  720.   window(COLOR&"_WINDOW").close()
  721. end
  722. ----------------------
  723. on RAZ_MAGIC_WINDOW COLOR
  724.   temp = COLOR&"_WINDOW"
  725.   if windowPresent(temp) then 
  726.     tell window temp
  727.       go to frame "RAZ_params"
  728.     end tell
  729.   end if
  730. end
  731. --------------
  732. on imprimer_laBd  WATMODE, WATTYPE,TITRE, PIED_DE_PAGE, VERSION,COLORMODE
  733.   global gL_printdispo
  734.   -- WATMODE indique si on est en mode aperτu (1) ou en mode impression (0)
  735.   -- WATMEDIA indique le type de fichier α imprimer : acteur (nom d'acteur) ou Θcran ("E")
  736.   -- crΘation d'une instance de l'xtra d'impression----------------------------------------------------------
  737.   doc = new(xtra "PrintOMatic")
  738.   if not objectP(doc) then exit
  739.   -- rΘglages des marges
  740.   setPrintableMargins (doc)
  741.   setMargins doc, rect(42,42,42,42)
  742.   -- crΘation de la page
  743.   if (doPageSetup(doc)) then
  744.     newPage doc
  745.     -- initialisation des variables de format page
  746.     L_Page=getPageWidth(doc)
  747.     H_Page=getPageHeight(doc)
  748.     --initialisation de la police
  749.     setTextFont doc,"Arial"
  750.     
  751.     case(WATTYPE) of
  752.       "E": --impression d'Θcran
  753.         
  754.       "M":--impression d'acteur
  755.         ---------------- TETE DE LA PAGE -------------------
  756.         --        -- ligne horizontale haut de page
  757.         --                drawLine doc,point(0,10),point(L_Page,10)
  758.         --        -- titre
  759.         setTextJust doc,"center"
  760.         setTextStyle doc,"bold"
  761.         setTextSize doc,14
  762.         drawText doc,TITRE ,point(L_Page/2, 0)
  763.         ---------------- CORPS DE LA PAGE -------------------
  764.         case(VERSION) of
  765.           "enfant":
  766.             x0 = -20
  767.             y0 = 10
  768.             caleGauche = x0
  769.             caleHaut = y0
  770.             repeat with i = 1 to count(gL_printdispo)
  771.               repeat with j = 1 to count(gL_printdispo[i])
  772.                 W = member("TYPECASE_"&gimme2digits(gL_printdispo[i][j])).width
  773.                 H = member("TYPECASE_"&gimme2digits(gL_printdispo[i][j])).height
  774.                 drawPicture doc,member("MINIATURE_"&gimme2digits(calculNolineaire(gL_printdispo,i,j))),rect(calegauche,caleHaut,calegauche + W,caleHaut + H)
  775.                 calegauche =  calegauche + W + 7
  776.               end repeat
  777.               caleGauche = x0
  778.               caleHaut = caleHaut + H + 16
  779.             end repeat
  780.             otherwise:
  781.             ------rΘglage couleur
  782.             case(COLORMODE) of
  783.               "NOIR":
  784.                 NOM = VERSION&"_N"
  785.               "COULEUR":
  786.                 NOM = VERSION&"_C"
  787.             end case
  788.             -- placement du schΘma (taille propre, ramenΘe autoritairement α largeur max = L_Page
  789.             -- ou α la hauteur de page disponible(H_Page) si l'une des deux dimensions est trop grande
  790.             L = float(member(NOM).width)
  791.             H = float(member(NOM).height)
  792.             coef  = H/L
  793.             case(L>=H) of
  794.               1:
  795.                 L_schema = min(L, L_Page)
  796.                 H_schema = (L_schema)*coef
  797.               0:
  798.                 H_schema = min(H,H_Page-50)
  799.                 L_schema = H_schema/coef
  800.             end case
  801.             x0 = 0
  802.             y0 = 10
  803.             drawPicture doc,member(NOM),rect(x0,y0,x0 +  L_schema,y0 + H_schema)
  804.         end case
  805.     end case
  806.     ----------------- PIED DE PAGE -------------------
  807.     -- ligne horizontale bas de page
  808.     --        drawLine doc,point(0,H_Page-30),point(L_Page,H_Page-30)
  809.     setTextJust doc,"left"
  810.     setTextStyle doc,"plain"
  811.     setTextSize doc,16
  812.     --    drawText doc,PIED_DE_PAGE,point(L_Page- 300,H_Page-5)
  813.     -- logo  GF
  814.     --    drawPicture doc,member("LOGO_MILAN"),rect(L_Page- 40,H_Page-41,L_Page ,H_Page-1)
  815.     setTextSize doc,8
  816.   end if
  817.   
  818.   -- lancement de l'impression-----------------------------------------------------------
  819.   case(WATMODE) of
  820.     1:-- si on est en mode aperτu on affiche l'aperτu
  821.       printPreview doc
  822.     0:-- sinon on imprime
  823.       setProgressMsg doc, "Impression de la fiche "&TITRE&" en cours... "
  824.       if doJobSetup(doc) then
  825.         print doc
  826.       end if
  827.   end case
  828. end
  829.  
  830. -------------------------
  831. on calculNolineaire ZELISTE,MoSOUSLISTE, NoELEMENTSOUSLISTE
  832.   --dans une liste de listes renvoie le n░ linΘaire d'un ΘlΘment d'une dzes sous-listes
  833.   temp = 0
  834.   repeat with i = 1 to MoSOUSLISTE-1
  835.     temp = temp + count(ZELISTE[i])
  836.   end repeat
  837.   return temp + NoELEMENTSOUSLISTE
  838. end 
  839.  
  840.  
  841.