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