FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
KGF_dll - nouvelles versions - Page 24 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
KGF_dll - nouvelles versions - Page 24 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
KGF_dll - nouvelles versions - Page 24 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
KGF_dll - nouvelles versions - Page 24 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
KGF_dll - nouvelles versions - Page 24 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
KGF_dll - nouvelles versions - Page 24 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
KGF_dll - nouvelles versions - Page 24 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
KGF_dll - nouvelles versions - Page 24 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 24 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
KGF_dll - nouvelles versions - Page 24 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
KGF_dll - nouvelles versions - Page 24 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
KGF_dll - nouvelles versions - Page 24 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
KGF_dll - nouvelles versions - Page 24 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
KGF_dll - nouvelles versions - Page 24 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
KGF_dll - nouvelles versions - Page 24 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-29%
Le deal à ne pas rater :
DYSON V8 Origin – Aspirateur balai sans fil
269.99 € 379.99 €
Voir le deal

 

 KGF_dll - nouvelles versions

Aller en bas 
+8
JL35
Marc
papydall
Jicehel
Yannick
pascal10000
Minibug
Klaus
12 participants
Aller à la page : Précédent  1 ... 13 ... 23, 24, 25 ... 32 ... 40  Suivant
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 9:01

Bonjour,

@Klaus,
J'ai des soucis:

Tu vas trouver sur mon webdev un ZIP nommé "gloutonPK01.zip"
Tu lances le code "essai1_PK2D.bas"
Patiente une grosse seconde et regarde ce qui se passe.

première interrogation: j'ai défini en ligne 45 une zone de contact pour la barrière. Il semble que ce n'est pas respecté.
deuxième interrogation: j'ai aussi défini une zone de contact pour le glouton en ligne 61, mais je suis contraint de shunter cette ligne pour que le sprite bouge. Essai avec et sans cette ligne 61.


Autrement: pour la couleur de transparence, ça marche.


A+

PS: il y a aussi un problème avec Z-order, peut-être que je n'ai pas compris le fonctionnement.
J'ai été contraint de déplacer la création du sprite glouton après celle de la barrière pour que la collision soit éffective. Avant j'avais tenté de regler Z-order, mais sans succès.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 9:47

Ok, je vais regarder cela.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 11:35

KGF.dll V6.59 du 06/05/2016

Nouveautés:
- Scene2D: correction d'un bug dans le mécanisme de déplacement des sprites

Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

@Jean Claude:
Ca devrait marcher mieux ainsi...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 13:45

Testé et approuvé.

J'ai pu replacer la création des sprites dans l'ordre, en bricolant sur la résistance.
J'ai également remis en service la ligne 61, qui redéfinie les zones de contact du glouton.

Donc tout va bien !

Une proposition d'amélioration:
Pourrais-tu bricoler un truc pour que l'on puisse voir en visuel les zones de contact d'un sprite car ce n'est pas de le tarte à faire.
Un petit commentaire (tuto) sur la résistance, serait également bienvenue car ce n'est pas facile à appréhender.

J'ai remis à jour sur mon webdev, si tu souhaites voir le résultat.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 14:02

Je suis content que la correction soit efficace.

Citation :
Pourrais-tu bricoler un truc pour que l'on puisse voir en visuel les zones de contact d'un sprite
Oui? Je vais faire une option pour rendre visible les zones de contact (par des rectangles rouges dessinés dans le sprite).

Citation :
Un petit commentaire (tuto) sur la résistance, serait également bienvenu
C'est assez simple. Cela décrit comment un sprite A en mouvement se comporte en rencontrant un autre sprite B fixe (ou mouvant aussi, peu importe).

A a la résitance RA. B a la résistance RB.

Si RA>RB, alors A continue son chemin.
Si RA<=RB alors il y a collision qui est signalée. Dans ce cas:
- si B est pénétrable, alors A continue son chemin
- si B est impénétrable, alors A reste bloqué sans effectuer son mouvement.

Cela te permet de définir des sprites fixes représentant des éléments de décor. Certains peuvent représenter des "passages" laissant passer certains sprites mobiles (ceux dont la résistance est supérieure) et pas d'autres (portes réservées à certains personnages, ...). D'autres peuvent avoir une résistance de 0 et servir juste de décoration. D'autres encore peuvent avoir une résistance très haute (comme 30000 par exemple) et servir de mur infranchissable, etc. Tu imagines l'utilisation que tu veux en faire.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 14:04

Une légère version du programme de démo des Scene2D, avec un sprite animé dès le départ. Pour cela, telecharger le fichier shokunin.ilb de mon WebDav, dossier Jeux\test_Sprites:
Code:
' test_Scene2D_Klaus.bas

label arriere, avant, cacher, cachertout, montrertout
label event, fixe, mobile, mobiletout, zoomplus, zoommoins
label changerimg, imagelist, changerilb
label deplacer, info1, info2, panit, mosaic, enrfond, enrsp2, actdepl

dim res%, SC2D%, SC2D_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")

dim M1% : M1% = 0 - 1
dim bl$ : bl$ = string$(5," ")
dim back$ : back$ = "SC2D_fond.jpg"
dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp"
dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp"
dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
dim sprite3$ : sprite3$ = "crane.bmp"
dim marcheur$ : marcheur$ = "shokunin.ilb"

width 0,1000 : height 0,700

dll_on "KGF.dll"
iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$))
res% = dll_call1("KGFdllVersion",adr(kversion$))
caption 0,trim$(sversion$)+" dans "+kversion$

button  1 : top  1 ,10 : left  1,10  : caption  1,"En arrière"    : on_click  1,arriere
button  2 : top  2, 10 : left  2,100 : caption  2,"En avant"      : on_click  2,avant
button  3 : top  3, 10 : left  3,190 : caption  3,"Cacher"        : on_click  3,cacher
button  4 : top  4, 10 : left  4,280 : caption  4,"Cacher tout"  : on_click  4,cachertout
button  5 : top  5, 10 : left  5,370 : caption  5,"Montrer tout"  : on_click  5,montrertout
button  6 : top  6, 10 : left  6,460 : caption  6,"Fixe"          : on_click  6,fixe
button  7 : top  7, 10 : left  7,550 : caption  7,"Mobile"        : on_click  7,mobile
button  8 : top  8, 10 : left  8,640 : caption  8,"Mobile tout"  : on_click  8,mobiletout

button  9 : top  9, 40 : left  9,640 : caption  9,"Déplacer"      : on_click  9,deplacer
button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +"        : on_click 10,zoomplus
button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -"        : on_click 11,zoommoins
button 12 : top 12,130 : left 12,640 : caption 12,"Changer img"  : on_click 12,changerimg
button 13 : top 13,160 : left 13,640 : caption 13,"ImageList"    : on_click 13,imagelist
button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb"  : on_click 14,changerilb
button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D"  : on_click 15,info1
button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite"  : on_click 16,info2
button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond"  : on_click 17,panit
button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic
button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond"    : on_click 19,enrfond
button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp2
button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl

memo 96 : top 96,10 : left 96,730 : width 96,220 : height 96,400
  font_name 96,"Courier" : font_size 96,8
open_dialog 97
edit  98 : hide 98 : on_change 98,event
alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"

dim titre$, mes$
titre$ = "Choix de la couleur de transparence"
mes$ = "Couleur de transparence (défaut: blanc):"
dim lib$ : lib$ = "OK;*;*;Blanc;Noir"
dim img$ : img$ = ""
res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$))
trans% = int(res%/8)
if trans%=0 then trans% = 1

SC2D% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,0,0,0)
end_if
SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0)
dim SC2D_Panoramic%(SC2D_PS%)
SC2D_Panoramic%(0) = SC2D_PS%
SC2D_Panoramic%(1) = handle(98)
SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%))
res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))

res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,350,30,0,200,adr(sprite3$))

res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)

IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
res% = dll_call2("LoadImageList",IL%,adr(f$))

  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(marcheur$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,3,1,IL%)
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,3,2,1)
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,3,3,190)

' activer les 2 lignes suivantes pour tester la suppression d'un sprite !
' message "Taper RETURN pour continuer..."
' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)

' activer les 2 lignes suivantes pour tester la suppression du Scene2D !
' message "Taper RETURN pour continuer..."
' res% = dll_call1("DeleteScene2D",SC2D%)

end

' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%)
'  id%  = identifiant du Scene2D
'  ind% = indice du sprite (1,2,3)
'          ou 0 pour sprite sélectionné
'          ou -1 pour tous les sprites, uniquement pour la visibilité
'  vis% = 0 pour invisible ou 1 pour visible
'  sel% = 0 pour non sélectionnable et 1 pour sélectionnable
'  mov% = 0 pour non déplaçable et 1 pour déplaçable
'  ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
'

event:
  if text$(98)="status"
    caption 99,"sprite "+str$(SC2D_Panoramic%(2))+"  à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+"  dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+"  collision: "+str$(SC2D_Panoramic%(7))+"  contact: "+str$(SC2D_Panoramic%(8))
  end_if
 
  return


arriere:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%)
  return
 
avant:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1)
  return
 
cacher:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0)
  return
 
cachertout:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0)
  return

montrertout:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0)
  return

fixe:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0)
  return
 
mobile:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0)
  return

mobiletout:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0)
  return

deplacer:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220)
  return
 
zoomplus:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic%(5)*3)/2
  h% = (SC2D_Panoramic%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%)
  return
 
zoommoins:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic%(5)*2)/3
  h% = (SC2D_Panoramic%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%)
  return
 
changerimg:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,0,adr(f$))
  return
 
imagelist:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,1,IL%)
  return

changerilb:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,3,190)
  return
 
info1:
  clear 96
  sInfo% = dll_call2("InformAboutScene2D",SC2D%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D%,adr(info%))
  item_add 96,"Scene2D:"
  item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return
 
info2:
  clear 96
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,adr(info%))
  item_add 96,"Sprite:"
  item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit:
  if SC2D_Panoramic%(9)=0 then return
  if SC2D_Panoramic%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return
 
mosaic:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D%,1200,800,adr(f$))
  return
 
enrfond:
  f$ = "SC2D_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return
 
enrsp2:
  f$ = "SC2D_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return
 
actdepl:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,2,5,5,200)
  return
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 17:39

Merci pour tes explications sur la résistance, c'est très clair.

Je viens de tester ta démo du bonhomme animé.
J'y ai ajouté ceci   res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,3,2,1,0,100)
Donc le personnage est animé et il se déplace, jusque là tout va bien.
Le problème c'est qu'il recule, alors j'ai tenté ceci   res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,3,2,-1,0,100) mais ce n'est pas accepté, par1% ne peut pas être négatif. Tu as surement compris que voulais faire avancer le personnage au lieu qu'il recule.
Je n'ai pas essayer pour le faire monter, mais ça doit être le même problème.

Y a-t'il une solution en automatique ?

Je t'embête un peu, beaucoup, mais c'est pour faire avancer le Shmilblick... Very Happy

Pour ceux qui n'ont pas encore testé, je signale qu'au niveau de la fluidité des déplacements des sprites, on est pratiquement pareil qu'en pur Panoramic.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 20:05

KGF.dll V6.60 du 06/05/2016

Nouveautés:
- nouvelle fonction: ShowContactsInScene2D

Modules modifiés:
KGF.dll
KGF.ch
m

La doc et les sources sources sont à jour.

Cette fonction permet de visualiser les zones de contact.

Voici le programme de démo adapté à cela:
Code:
' test_Scene2D_Klaus.bas

label arriere, avant, cacher, cachertout, montrertout
label event, fixe, mobile, mobiletout, zoomplus, zoommoins
label changerimg, imagelist, changerilb
label deplacer, info1, info2, panit, mosaic, enrfond, enrsp2, actdepl
label affcontact, pascontact

dim res%, SC2D%, SC2D_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")

dim M1% : M1% = 0 - 1
dim bl$ : bl$ = string$(5," ")
dim back$ : back$ = "SC2D_fond.jpg"
dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp"
dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp"
dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
dim sprite3$ : sprite3$ = "crane.bmp"
dim marcheur$ : marcheur$ = "shokunin.ilb"

width 0,1000 : height 0,700

dll_on "KGF.dll"
iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$))
res% = dll_call1("KGFdllVersion",adr(kversion$))
caption 0,trim$(sversion$)+" dans "+kversion$

button  1 : top  1 ,10 : left  1,10  : caption  1,"En arrière"    : on_click  1,arriere
button  2 : top  2, 10 : left  2,100 : caption  2,"En avant"      : on_click  2,avant
button  3 : top  3, 10 : left  3,190 : caption  3,"Cacher"        : on_click  3,cacher
button  4 : top  4, 10 : left  4,280 : caption  4,"Cacher tout"  : on_click  4,cachertout
button  5 : top  5, 10 : left  5,370 : caption  5,"Montrer tout"  : on_click  5,montrertout
button  6 : top  6, 10 : left  6,460 : caption  6,"Fixe"          : on_click  6,fixe
button  7 : top  7, 10 : left  7,550 : caption  7,"Mobile"        : on_click  7,mobile
button  8 : top  8, 10 : left  8,640 : caption  8,"Mobile tout"  : on_click  8,mobiletout

button  9 : top  9, 40 : left  9,640 : caption  9,"Déplacer"      : on_click  9,deplacer
button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +"        : on_click 10,zoomplus
button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -"        : on_click 11,zoommoins
button 12 : top 12,130 : left 12,640 : caption 12,"Changer img"  : on_click 12,changerimg
button 13 : top 13,160 : left 13,640 : caption 13,"ImageList"    : on_click 13,imagelist
button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb"  : on_click 14,changerilb
button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D"  : on_click 15,info1
button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite"  : on_click 16,info2
button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond"  : on_click 17,panit
button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic
button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond"    : on_click 19,enrfond
button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp2
button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl
button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact
button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact

memo 96 : top 96,10 : left 96,730 : width 96,220 : height 96,400
  font_name 96,"Courier" : font_size 96,8
open_dialog 97
edit  98 : hide 98 : on_change 98,event
alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"

dim titre$, mes$
titre$ = "Choix de la couleur de transparence"
mes$ = "Couleur de transparence (défaut: blanc):"
dim lib$ : lib$ = "OK;*;*;Blanc;Noir"
dim img$ : img$ = ""
res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$))
trans% = int(res%/8)
if trans%=0 then trans% = 1

SC2D% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,0,0,0)
end_if
SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0)
dim SC2D_Panoramic%(SC2D_PS%)
SC2D_Panoramic%(0) = SC2D_PS%
SC2D_Panoramic%(1) = handle(98)
SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%))
res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))

res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,350,30,0,200,adr(sprite3$))

res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)

IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
res% = dll_call2("LoadImageList",IL%,adr(f$))

  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(marcheur$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,3,1,IL%)
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,3,2,1)
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,3,3,190)

' activer les 2 lignes suivantes pour tester la suppression d'un sprite !
' message "Taper RETURN pour continuer..."
' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)

' activer les 2 lignes suivantes pour tester la suppression du Scene2D !
' message "Taper RETURN pour continuer..."
' res% = dll_call1("DeleteScene2D",SC2D%)

end

' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%)
'  id%  = identifiant du Scene2D
'  ind% = indice du sprite (1,2,3)
'          ou 0 pour sprite sélectionné
'          ou -1 pour tous les sprites, uniquement pour la visibilité
'  vis% = 0 pour invisible ou 1 pour visible
'  sel% = 0 pour non sélectionnable et 1 pour sélectionnable
'  mov% = 0 pour non déplaçable et 1 pour déplaçable
'  ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
'

event:
  if text$(98)="status"
    caption 99,"sprite "+str$(SC2D_Panoramic%(2))+"  à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+"  dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+"  collision: "+str$(SC2D_Panoramic%(7))+"  contact: "+str$(SC2D_Panoramic%(8))
  end_if
 
  return


arriere:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%)
  return
 
avant:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1)
  return
 
cacher:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0)
  return
 
cachertout:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0)
  return

montrertout:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0)
  return

fixe:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0)
  return
 
mobile:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0)
  return

mobiletout:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0)
  return

deplacer:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220)
  return
 
zoomplus:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic%(5)*3)/2
  h% = (SC2D_Panoramic%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%)
  return
 
zoommoins:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic%(5)*2)/3
  h% = (SC2D_Panoramic%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%)
  return
 
changerimg:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,0,adr(f$))
  return
 
imagelist:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,1,IL%)
  return

changerilb:
  if SC2D_Panoramic%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,3,190)
  return
 
info1:
  clear 96
  sInfo% = dll_call2("InformAboutScene2D",SC2D%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D%,adr(info%))
  item_add 96,"Scene2D:"
  item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return
 
info2:
  clear 96
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,adr(info%))
  item_add 96,"Sprite:"
  item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit:
  if SC2D_Panoramic%(9)=0 then return
  if SC2D_Panoramic%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return
 
mosaic:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D%,1200,800,adr(f$))
  return
 
enrfond:
  f$ = "SC2D_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return
 
enrsp2:
  f$ = "SC2D_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return
 
actdepl:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,2,5,5,200)
  return
 
affcontact:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D%,0-1,1)
  return

pascontact:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D%,0-1,0)
  return
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 20:17

Maintenant cela va être plus facile de préparer les zones de contact d'un sprite.

As-tu lu mon message précédent ?

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 6 Mai 2016 - 21:09

Oups... j'étais persuadé d'avoir répondu. Autant pour moi.

En fait, la limitation vient d'une restriction de syntaxe de Panoramic, pas de mes fonctions. Tu ne peux pas utiliser "-5" (avec un signe négatif unaire, comme on dit) comme paramètre à une fonction. Tu as deux solutions:
1. tu passes 0-5 comme valeur
2. tu crées une variale x%, tu fais x%=0-5 puis tu passes x%
Dans les deux cas, ça marche et le bonhomme avance et/ou monte.

Avant de lancer l'animation, tire-le sur une zone libre de la fenêtre, sinon il sera rapidement bloqué par u des sprites plus "solides".
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 9:06

Maintenant je comprend la variable M1%=0-1. Very Happy

Pour le déplacement du bonhomme j'ai changé les positions des autres sprites pour qu'il puisse se promener.

Pour x%: on peut également écrire x%=-5, ça marche aussi.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 9:56

As-tu vu la visualisation des zones de contact ? Et je prépare un nouveau gros coup...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 12:15

Oui, j'ai vu la visualisation des zones de contact.
C'est très pratique et on ne peut plus simple.

Moi aussi j'ai préparé un gros coup

j'ai rechargé mon webdev.
cette fois il faut lancer essai2_PK2D.bas

Admire le déplacement du Shtroumf... Very Happy

Par contre je ne trouve pas comment arrêter l'animation du Shtroumf quand il arrive en bout d'écran, il continue de pédaler dans le vide.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 12:23

KGF.dll V6.61 du 07/05/2016

Nouveautés:
- nouvelle fonction: CopySpriteToScene2D
- nouvelles fonctions GetTextOfScene2D, SetTextOfScene2D
- nouvelles fonctions GetTextOfSpriteInScene2D, SetTextOfSpriteInScene2D


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

Voilà des fonctions importantes et totalement novatrices.

La fonction CopySpriteToScene2D permet de copier un sprite d'un Scene2D vers un autre, ou vers le même. Un paramètre permet même de supprimer le sprite d'origine après la copie. Les Scene2D d'origine et de destination peuvent être les mêmes. Je vous laisse imaginer les possibilités de duplication ou de téléportation entre deux mondes Scene2D... puisque KGF.dll sait gérer plusieurs Scene2D simultanément !

Les fonctions GetTextOfScene2D et SetTextOfScene2D permettent de mémoriser ou récupérer une chaîne de caractères quelconque avec un objet Scene2D. On peut y mémoriser ce que l'on veut - c'est sans influence sur les traitements.

Les fonctions GetTextOfSpriteInScene2D et SetTextOfSpriteInScene2D permettent de mémoriser ou récupérer une chaîne de caractères quelconque avec un objet Sprite. On peut y mémoriser ce que l'on veut - c'est sans influence sur les traitements.

Voici le programme de démo, sérieusement gonflé. On a maintenant deux Scene2D simultanés. Tous les boutons sont doublées de sorte à avoir un jeu pour le Scene2D du haut et un autre pour le Scene2D du bas. Et il y a en particulier, pour chacun de ces Scene2D, un bouton permettant de "téléporter" le sprite sélectionné dans l'autre Scene2D. C'est bluffant !
Code:
' test_2_Scene2D.bas

label arriere1, avant1, cacher1, cachertout1, montrertout1
label arriere2, avant2, cacher2, cachertout2, montrertout2
label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2
label zoomplus1, zoommoins1, zoomplus2, zoommoins2
label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2
label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1
label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2
label affcontact1, pascontact1, affcontact2, pascontact2
label sdown1, sup2, stext1, stext2

dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")

dim M1% : M1% = 0 - 1
dim bl$ : bl$ = string$(5," ")
dim back$ : back$ = "SC2D_fond.jpg"
dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp"
dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp"
dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
dim sprite3$ : sprite3$ = "crane.bmp"
dim marcheur$ : marcheur$ = "shokunin.ilb"

full_space 0

dll_on "KGF.dll"
iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$))
res% = dll_call1("KGFdllVersion",adr(kversion$))
caption 0,trim$(sversion$)+" dans "+kversion$

button  1 : top  1 ,10 : left  1,10  : caption  1,"En arrière"    : on_click  1,arriere1
button  2 : top  2, 10 : left  2,100 : caption  2,"En avant"      : on_click  2,avant1
button  3 : top  3, 10 : left  3,190 : caption  3,"Cacher"        : on_click  3,cacher1
button  4 : top  4, 10 : left  4,280 : caption  4,"Cacher tout"  : on_click  4,cachertout1
button  5 : top  5, 10 : left  5,370 : caption  5,"Montrer tout"  : on_click  5,montrertout1
button  6 : top  6, 10 : left  6,460 : caption  6,"Fixe"          : on_click  6,fixe1
button  7 : top  7, 10 : left  7,550 : caption  7,"Mobile"        : on_click  7,mobile1
button  8 : top  8, 10 : left  8,640 : caption  8,"Mobile tout"  : on_click  8,mobiletout1

button 201 : top 201,370 : left 201,10  : caption 201,"En arrière"    : on_click 201,arriere2
button 202 : top 202,370 : left 202,100 : caption 202,"En avant"      : on_click 202,avant2
button 203 : top 203,370 : left 203,190 : caption 203,"Cacher"        : on_click 203,cacher2
button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout"  : on_click 204,cachertout2
button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout"  : on_click 205,montrertout2
button 206 : top 206,370 : left 206,460 : caption 206,"Fixe"          : on_click 206,fixe2
button 207 : top 207,370 : left 207,550 : caption 207,"Mobile"        : on_click 207,mobile2
button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout"  : on_click 208,mobiletout2

button  9 : top  9, 40 : left  9,640 : caption  9,"Déplacer"      : on_click  9,deplacer1
button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +"        : on_click 10,zoomplus1
button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -"        : on_click 11,zoommoins1
button 12 : top 12,130 : left 12,640 : caption 12,"Changer img"  : on_click 12,changerimg1
button 13 : top 13,160 : left 13,640 : caption 13,"ImageList"    : on_click 13,imagelist1
button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb"  : on_click 14,changerilb1
button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D"  : on_click 15,info11
button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite"  : on_click 16,info21
button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond"  : on_click 17,panit1
button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1
button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond"    : on_click 19,enrfond1
button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21
button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1
button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1
button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1
button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv"    : on_click 24,sdown1
button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte"  : on_click 25,stext1

button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer"      : on_click 209,deplacer2
button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +"        : on_click 210,zoomplus2
button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -"        : on_click 211,zoommoins2
button 212 : top 212,130 : left 212,740 : caption 212,"Changer img"  : on_click 212,changerimg2
button 213 : top 213,160 : left 213,740 : caption 213,"ImageList"    : on_click 213,imagelist2
button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb"  : on_click 214,changerilb2
button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D"  : on_click 215,info12
button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite"  : on_click 216,info22
button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond"  : on_click 217,panit2
button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2
button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond"    : on_click 219,enrfond2
button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22
button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2
button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2
button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2
button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^"    : on_click 224,sup2
button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte"  : on_click 225,stext2

open_dialog 97

memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300
  font_name 96,"Courier" : font_size 96,8
edit  98 : hide 98 : on_change 98,event1
alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"

memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300
  font_name 296,"Courier" : font_size 296,8
edit  298 : hide 298 : on_change 298,event2
alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"

dim titre$, mes$
titre$ = "Choix de la couleur de transparence"
mes$ = "Couleur de transparence (défaut: blanc):"
dim lib$ : lib$ = "OK;*;*;Blanc;Noir"
dim img$ : img$ = ""
res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$))
trans% = int(res%/8)
if trans%=0 then trans% = 1

SC2D1% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0)
end_if

SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0)
dim SC2D_Panoramic1%(SC2D1_PS%)
SC2D_Panoramic1%(0) = SC2D1_PS%
SC2D_Panoramic1%(1) = handle(98)
res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%))
res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)

SC2D2% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0)
end_if

SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0)
dim SC2D_Panoramic2%(SC2D2_PS%)
SC2D_Panoramic2%(0) = SC2D2_PS%
SC2D_Panoramic2%(1) = handle(298)
res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%))
res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)

res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$))
res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))

res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))

res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))

res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D1%,1,0)

res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D2%,1,0)

IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
res% = dll_call2("LoadImageList",IL%,adr(marcheur$))

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)

' activer les 2 lignes suivantes pour tester la suppression d'un sprite !
' message "Taper RETURN pour continuer..."
' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)

' activer les 2 lignes suivantes pour tester la suppression du Scene2D !
' message "Taper RETURN pour continuer..."
' res% = dll_call1("DeleteScene2D",SC2D%)

end

' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%)
'  id%  = identifiant du Scene2D
'  ind% = indice du sprite (1,2,3)
'          ou 0 pour sprite sélectionné
'          ou -1 pour tous les sprites, uniquement pour la visibilité
'  vis% = 0 pour invisible ou 1 pour visible
'  sel% = 0 pour non sélectionnable et 1 pour sélectionnable
'  mov% = 0 pour non déplaçable et 1 pour déplaçable
'  ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
'

event1:
  if text$(98)="status"
    caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+"  à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+"  dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+"  collision: "+str$(SC2D_Panoramic1%(7))+"  contact: "+str$(SC2D_Panoramic1%(8))
  end_if

  return

event2:
  if text$(298)="status"
    caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+"  à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+"  dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+"  collision: "+str$(SC2D_Panoramic2%(7))+"  contact: "+str$(SC2D_Panoramic2%(8))
  end_if

  return


arriere1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%)
  return

avant1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1)
  return

cacher1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0)
  return

cachertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0)
  return

montrertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return

fixe1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0)
  return

mobile1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0)
  return

mobiletout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return


arriere2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%)
  return

avant2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1)
  return

cacher2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0)
  return

cachertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0)
  return

montrertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return

fixe2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0)
  return

mobile2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0)
  return

mobiletout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return




deplacer1:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220)
  return

zoomplus1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*3)/2
  h% = (SC2D_Panoramic1%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

zoommoins1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*2)/3
  h% = (SC2D_Panoramic1%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

changerimg1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$))
  return

imagelist1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%)
  return

changerilb1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190)
  return

info11:
  clear 96
  sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%))
  item_add 96,"Scene2D:"
  item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info21:
  clear 96
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%))
  item_add 96,"Sprite:"
  item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit1:
  if SC2D_Panoramic1%(9)=0 then return
  if SC2D_Panoramic1%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic1:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$))
  return

enrfond1:
  f$ = "SC2D1_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp21:
  f$ = "SC2D1_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl1:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200)
  return

affcontact1:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1)
  return

pascontact1:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0)
  return

sdown1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1)
  return

stext1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  return



deplacer2:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220)
  return

zoomplus2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*3)/2
  h% = (SC2D_Panoramic2%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

zoommoins2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*2)/3
  h% = (SC2D_Panoramic2%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

changerimg2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$))
  return

imagelist2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%)
  return

changerilb2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190)
  return

info12:
  clear 296
  sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%))
  item_add 296,"Scene2D:"
  item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info22:
  clear 296
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%))
  item_add 296,"Sprite:"
  item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit2:
  if SC2D_Panoramic2%(9)=0 then return
  if SC2D_Panoramic2%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic2:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$))
  return

enrfond2:
  f$ = "SC2D_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp22:
  f$ = "SC2D_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl2:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200)
  return

affcontact2:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1)
  return

pascontact2:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0)
  return

sup2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1)
  return
 
stext2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 12:28

Citation :
Par contre je ne trouve pas comment arrêter l'animation du Shtroumf quand il arrive en bout d'écran, il continue de pédaler dans le vide.
Il y a deux choses distinctes:
1. l'animation
2. l'automation
L'automation est responsable du déplacement automatique. Celui-ci s'arrête automatiquement lorsque le sprite bute dans un bord ou sur un sprite bloquant.
L'animation est indépendante. Elle fonctionne même sur un sprite immobile. Tu peux l'arrêter avec la fonction ChangeSpriteImageInScene2D, action 3, intervalle 0, comme ceci:
Code:
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,ind%,3,0)
avec ind% étant l'identifiant du sprite concerné.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 13:36

Oui, je comprend, mais j'ai besoin de savoir comment récupérer l'information que le sprite est en bout de piste pour pouvoir arrêter l'animation.

Je m'explique:

res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,Shtroumf%,2,3,0,1)
IF Shtroumf% est en bout de piste (ou collision)
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,0)
END_IF

Car si on ne met pas en place  pas cette condition, l'animation ne fonctionne pas.


Je vais tester tes nouvelles fonctions, dans le journée si possible, car je dois passer en cuisine pour une grande partie de l'après-midi. Very Happy

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 13:43

Tu as raison. Je vais ajouter une nouvelle information dans le tableau d'interface, pour cela.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 16:25

KGF.dll V6.62 du 07/05/2016

Nouveautés:
- Scene2D: le tableau d'interface a 3 mots supplémentaires

Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

Les 3 mots supplémentaires sont:
indice 14: code action d'automatisation du sprite causant l'évènement
indice 15: fréquence d'automatisation du sprite causant l'évènement
indoce 16: type d'évènement: 0=normal 1=collision 2=contact avec le bord

Voici le programme démo qui l'utilise:
Code:
' test_2_Scene2D.bas

label arriere1, avant1, cacher1, cachertout1, montrertout1
label arriere2, avant2, cacher2, cachertout2, montrertout2
label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2
label zoomplus1, zoommoins1, zoomplus2, zoommoins2
label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2
label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1
label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2
label affcontact1, pascontact1, affcontact2, pascontact2
label sdown1, sup2, stext1, stext2

dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")

dim M1% : M1% = 0 - 1
dim bl$ : bl$ = string$(5," ")
dim back$ : back$ = "SC2D_fond.jpg"
dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp"
dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp"
dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
dim sprite3$ : sprite3$ = "crane.bmp"
dim marcheur$ : marcheur$ = "shokunin.ilb"

full_space 0

dll_on "KGF.dll"
iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$))
res% = dll_call1("KGFdllVersion",adr(kversion$))
caption 0,trim$(sversion$)+" dans "+kversion$

button  1 : top  1 ,10 : left  1,10  : caption  1,"En arrière"    : on_click  1,arriere1
button  2 : top  2, 10 : left  2,100 : caption  2,"En avant"      : on_click  2,avant1
button  3 : top  3, 10 : left  3,190 : caption  3,"Cacher"        : on_click  3,cacher1
button  4 : top  4, 10 : left  4,280 : caption  4,"Cacher tout"  : on_click  4,cachertout1
button  5 : top  5, 10 : left  5,370 : caption  5,"Montrer tout"  : on_click  5,montrertout1
button  6 : top  6, 10 : left  6,460 : caption  6,"Fixe"          : on_click  6,fixe1
button  7 : top  7, 10 : left  7,550 : caption  7,"Mobile"        : on_click  7,mobile1
button  8 : top  8, 10 : left  8,640 : caption  8,"Mobile tout"  : on_click  8,mobiletout1

button 201 : top 201,370 : left 201,10  : caption 201,"En arrière"    : on_click 201,arriere2
button 202 : top 202,370 : left 202,100 : caption 202,"En avant"      : on_click 202,avant2
button 203 : top 203,370 : left 203,190 : caption 203,"Cacher"        : on_click 203,cacher2
button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout"  : on_click 204,cachertout2
button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout"  : on_click 205,montrertout2
button 206 : top 206,370 : left 206,460 : caption 206,"Fixe"          : on_click 206,fixe2
button 207 : top 207,370 : left 207,550 : caption 207,"Mobile"        : on_click 207,mobile2
button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout"  : on_click 208,mobiletout2

button  9 : top  9, 40 : left  9,640 : caption  9,"Déplacer"      : on_click  9,deplacer1
button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +"        : on_click 10,zoomplus1
button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -"        : on_click 11,zoommoins1
button 12 : top 12,130 : left 12,640 : caption 12,"Changer img"  : on_click 12,changerimg1
button 13 : top 13,160 : left 13,640 : caption 13,"ImageList"    : on_click 13,imagelist1
button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb"  : on_click 14,changerilb1
button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D"  : on_click 15,info11
button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite"  : on_click 16,info21
button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond"  : on_click 17,panit1
button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1
button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond"    : on_click 19,enrfond1
button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21
button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1
button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1
button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1
button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv"    : on_click 24,sdown1
button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte"  : on_click 25,stext1

button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer"      : on_click 209,deplacer2
button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +"        : on_click 210,zoomplus2
button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -"        : on_click 211,zoommoins2
button 212 : top 212,130 : left 212,740 : caption 212,"Changer img"  : on_click 212,changerimg2
button 213 : top 213,160 : left 213,740 : caption 213,"ImageList"    : on_click 213,imagelist2
button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb"  : on_click 214,changerilb2
button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D"  : on_click 215,info12
button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite"  : on_click 216,info22
button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond"  : on_click 217,panit2
button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2
button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond"    : on_click 219,enrfond2
button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22
button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2
button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2
button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2
button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^"    : on_click 224,sup2
button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte"  : on_click 225,stext2

open_dialog 97

memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300
  font_name 96,"Courier" : font_size 96,8
edit  98 : hide 98 : on_change 98,event1
alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"

memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300
  font_name 296,"Courier" : font_size 296,8
edit  298 : hide 298 : on_change 298,event2
alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"

dim titre$, mes$
titre$ = "Choix de la couleur de transparence"
mes$ = "Couleur de transparence (défaut: blanc):"
dim lib$ : lib$ = "OK;*;*;Blanc;Noir"
dim img$ : img$ = ""
res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$))
trans% = int(res%/8)
if trans%=0 then trans% = 1

SC2D1% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0)
end_if

SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0)
dim SC2D_Panoramic1%(SC2D1_PS%)
SC2D_Panoramic1%(0) = SC2D1_PS%
SC2D_Panoramic1%(1) = handle(98)
res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%))
res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)

SC2D2% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0)
end_if

SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0)
dim SC2D_Panoramic2%(SC2D2_PS%)
SC2D_Panoramic2%(0) = SC2D2_PS%
SC2D_Panoramic2%(1) = handle(298)
res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%))
res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)

res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$))
res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))

res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))

res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))

res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D1%,1,0)

res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D2%,1,0)

IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
res% = dll_call2("LoadImageList",IL%,adr(marcheur$))

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)

' activer les 2 lignes suivantes pour tester la suppression d'un sprite !
' message "Taper RETURN pour continuer..."
' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)

' activer les 2 lignes suivantes pour tester la suppression du Scene2D !
' message "Taper RETURN pour continuer..."
' res% = dll_call1("DeleteScene2D",SC2D%)

end

' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%)
'  id%  = identifiant du Scene2D
'  ind% = indice du sprite (1,2,3)
'          ou 0 pour sprite sélectionné
'          ou -1 pour tous les sprites, uniquement pour la visibilité
'  vis% = 0 pour invisible ou 1 pour visible
'  sel% = 0 pour non sélectionnable et 1 pour sélectionnable
'  mov% = 0 pour non déplaçable et 1 pour déplaçable
'  ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
'

event1:
  if text$(98)="status"
    s$ = ""
    if SC2D_Panoramic1%(16)=1 then s$ = "collision"
    if SC2D_Panoramic1%(16)=2 then s$ = "bordure"
    caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+"  à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+"  dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+"  collision: "+str$(SC2D_Panoramic1%(7))+"  contact: "+str$(SC2D_Panoramic1%(8))+"  "+s$
  end_if

  return

event2:
  if text$(298)="status"
    s$ = ""
    if SC2D_Panoramic2%(16)=1 then s$ = "collision"
    if SC2D_Panoramic2%(16)=2 then s$ = "bordure"
    caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+"  à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+"  dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+"  collision: "+str$(SC2D_Panoramic2%(7))+"  contact: "+str$(SC2D_Panoramic2%(8))+"  "+s$
  end_if

  return


arriere1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%)
  return

avant1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1)
  return

cacher1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0)
  return

cachertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0)
  return

montrertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return

fixe1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0)
  return

mobile1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0)
  return

mobiletout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return


arriere2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%)
  return

avant2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1)
  return

cacher2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0)
  return

cachertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0)
  return

montrertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return

fixe2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0)
  return

mobile2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0)
  return

mobiletout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return




deplacer1:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220)
  return

zoomplus1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*3)/2
  h% = (SC2D_Panoramic1%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

zoommoins1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*2)/3
  h% = (SC2D_Panoramic1%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

changerimg1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$))
  return

imagelist1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%)
  return

changerilb1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190)
  return

info11:
  clear 96
  sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%))
  item_add 96,"Scene2D:"
  item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info21:
  clear 96
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%))
  item_add 96,"Sprite:"
  item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit1:
  if SC2D_Panoramic1%(9)=0 then return
  if SC2D_Panoramic1%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic1:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$))
  return

enrfond1:
  f$ = "SC2D1_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp21:
  f$ = "SC2D1_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl1:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200)
  return

affcontact1:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1)
  return

pascontact1:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0)
  return

sdown1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1)
  return

stext1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  return



deplacer2:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220)
  return

zoomplus2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*3)/2
  h% = (SC2D_Panoramic2%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

zoommoins2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*2)/3
  h% = (SC2D_Panoramic2%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

changerimg2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$))
  return

imagelist2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%)
  return

changerilb2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190)
  return

info12:
  clear 296
  sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%))
  item_add 296,"Scene2D:"
  item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info22:
  clear 296
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%))
  item_add 296,"Sprite:"
  item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit2:
  if SC2D_Panoramic2%(9)=0 then return
  if SC2D_Panoramic2%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic2:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$))
  return

enrfond2:
  f$ = "SC2D_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp22:
  f$ = "SC2D_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl2:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200)
  return

affcontact2:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1)
  return

pascontact2:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0)
  return

sup2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1)
  return
 
stext2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 18:22

@Klaus,
Je viens de télécharger.

Ben... ça n'a pas l'air de marcher.

Je viens de changer gloutonPK01.zip sur mon webdev.
Lancer "essai2_PK2D.bas"

Si tu as déjà les images je te met le code plus bas.

La tentative pour stopper l'animation ne fonctionne pas. C'est entre les lignes 115 à 124 inclus.
Je ne vois pas ce qui cloche.
Note: les lignes placées en commentaire ont servies à faire des testes.

A+

Code:

'
dim rep$ : rep$=dir_current$ : dir_change rep$
' Variables générales
dim x%,y%,a$

' Variables, label et objet pour fonctionnement K2d
dim res%, SC2D%, SC2D_PS%, VP%, IL%, w%, h%, f$, sInfo%, i%
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")
dim M1% : M1% = 0 - 1
dim bl$,s$ : bl$ = string$(5," ")
' edit2d% pour l'interface
label event : dim edit2d% : edit2d%=98 : edit  edit2d% : hide edit2d% : on_change edit2d%,event
' variables pour les procédures Panoramic
dim top_sc2d%,left_sc2d%,width_sc2d%,height_sc2d%,visibilite%,back$ : ' pour le Kscene2d

' FORM 0
  full_space 0
  caption 0,"PATIENTEZ SVP ...."

dll_on "KGF.dll"

' Création du "KSCENE2D"
top_sc2d%=0 : left_sc2d%=0 : width_sc2d%=screen_x : height_sc2d%=screen_y :' position et dimensions du Kscene2D
visibilite%=1 :' visibilité du fond
back$="fond.jpg" :' Image_Fond (jpg requis)
VP%=0 :' ViewPort (1=mobile , 0=fixe)
Create_SC2D()
' définir la couleur de transparence
res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,0,0,0)



caption 0,"READY"
display

' Création du premier sprite
' res% = dll_call6("CreateSpriteInScene2D",SC2D%, x%,y%,niv%,resist%, img%)
dim GloutonBleu%,Sprite1$ : Sprite1$="bleu.bmp"
 x%=-2 : y%=-2
res% = dll_call6("CreateSpriteInScene2D",SC2D%,x%,y%,0,10,adr(Sprite1$))
GloutonBleu%=res%
' res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,ind%,vis%,sel%,mov%,ord%) sel%=cliquable, mov%=déplaçable souris, ord%=profondeu
res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,GloutonBleu%,1,1,0,1)
' res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,ind%,x%,y%,w%,h%)

 res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,GloutonBleu%,40,40,5,5)
 res% = dll_call3("ShowContactsInScene2D",SC2D%,GloutonBleu%,1)
 
' res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,GloutonBleu%,0):' 0 = une collision avec ce sprite ou une de ses zones de contact ne bloque pas le sprite arrivant


' Création du deuxième sprite
dim bar1%,Sprite2$ : Sprite2$="barierre.bmp"
res% = dll_call6("CreateSpriteInScene2D",SC2D%,400,400,0,10,adr(Sprite2$))
bar1%=res%
' res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,ind%,vis%,sel%,mov%,ord%) sel%=cliquable, mov%=déplaçable souris, ord%=profondeu
res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,bar1%,1,0,0,0)
' res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,ind%,x%,y%,w%,h%)
 res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,bar1%,60,60,5,5)
 res% = dll_call3("ShowContactsInScene2D",SC2D%,bar1%,1)

' res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)
' 0 = une collision avec ce sprite ou une de ses zones de contact ne bloque pas le sprite arrivant
' 1 = une collision avec ce sprite ou une de ses zones de contact bloque le sprite arrivant qui reste bloqué dans sa position précédente

 pause 1000 :' pour laisser le temps à l'affichage du Kscene2D


res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,bar1%,1)
' Positionner le sprite hors zone
' res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,ind%,x%,y%)
' x%=-50 : y%=-50
' res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,GloutonBleu%,x%,y%)

' déplacement de GloutonBleu%
' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,GloutonBleu%,act%,par1%,par2%,ms%)
res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,GloutonBleu%,2,2,2,1)

' Shtroumf
dim Shtroumf%,Sprite3$ : Sprite3$="shtroumf1.bmp"
res% = dll_call6("CreateSpriteInScene2D",SC2D%,0,500,0,10,adr(Sprite3$))
Shtroumf%=res%
res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,Shtroumf%,1,1,0,1)

IL% = dll_call2("CreateImageList",128,128)
' res% = dll_call4("AddImageToImageList",IL%,adr(Sprite3$),1,0)
' a$="shtroumf2.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf3.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf4.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf5.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf6.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf7.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf8.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf9.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf10.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf11.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf12.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf13.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf14.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf15.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)
' a$="shtroumf16.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0)

dim fic$ : fic$="shtroumf.bmp"
' res% = dll_call2("SaveImageList",IL%,adr(fic$))

res% = dll_call2("LoadImageList",IL%,adr(fic$))

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,1,IL%):' code action 1: définit une ImageList pour le sprite . par% = IL% (identifiant d'un objet ImageList)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,2,16):' code action 2: charger une image de la ImageList dans le sprite : par% = indice le l'image (0,1,2,...)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,20):' code action 3:  gestion de l'animation par ImageList : par%=0 - pas d'animation
WHILE s$=""
'      message s$
    res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,Shtroumf%,2,5,0,1)
    if s$ = "bordure"
'    if s$ <> ""
'    res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,Shtroumf%,0,3,0,1)
      res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,0):' exit_while :' stop l'animation
'      res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,0,adr(Sprite3$)):' exit_while :' recharge image d'origine
    end_if
END_WHILE
END
rem ============================================================================
event:
  if text$(edit2d%)="status"
'    caption 0,"sprite="+str$(SC2D_Panoramic%(2))+" . top="+str$(SC2D_Panoramic%(3))+" . left="+str$(SC2D_Panoramic%(4))+" . Width="+str$(SC2D_Panoramic%(5))+" . Height="+str$(SC2D_Panoramic%(6))+" . collision="+str$(SC2D_Panoramic%(7))+" . zone de contact="+str$(SC2D_Panoramic%(8))
    caption 0,"Code action du sprite causant l'évènement="+str$(SC2D_Panoramic%(14))+" / Code fréquence d'action du sprite="+str$(SC2D_Panoramic%(15))+" / Code de collision="+str$(SC2D_Panoramic%(16))
    s$ = ""
    if SC2D_Panoramic%(16)=1 then s$ = "collision"
    if SC2D_Panoramic%(16)=2 then s$ = "bordure"

  end_if
return
rem ============================================================================
rem ============================================================================
SUB Create_SC2D()
    ' Création SCENE2D et son Interface
    Create_SC2D_and_Interface()
    ' taille et position du SCENE2D
    res% = dll_call6("ResizeScene2D",SC2D%,top_sc2d%,left_sc2d%,width_sc2d%,height_sc2d%,visibilite%)
    ' Image de fond
    res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
END_SUB
SUB Create_SC2D_and_Interface()
    SC2D% = dll_call2("CreateScene2D",handle(0),VP%)
    SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0)
    dim SC2D_Panoramic%(SC2D_PS%)
    SC2D_Panoramic%(0) = SC2D_PS%
    SC2D_Panoramic%(1) = handle(edit2d%)
    SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%))
    ' structure du tableau d'interface:
    ' 0 = taille du tableau  (doit être chargé avant d'établir le lien)
    ' 1 = handle d'un EDIT        (doit être chargé pour recevoir les évènements)
    ' 2 = ID du sprite sélectionné
    ' 3 = x (position horizontale du coin en haut à gauche du sprite)
    ' 4 = y (position verticale du coin en haut à gauche du sprite)
    ' 5 = w (largeur du sprite)
    ' 6 = h (hauteur du sprite)
    ' 7 ID du sprite collisionné
    ' 8 = numéro de la zone de contact collisionné dans le sprite collisionné
    ' 9 = flag "utilisation du viewport"
    ' 10 = flag "déplacement du viewport par la souris est autorisé"
    ' 11 = coordonnée x du viewport
    ' 12 = coordonnée y du viewport
    ' 13 = indice de l'image dans l'ImageList (-1 = ImageList non utilisée)
END_SUB

Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 21:56

Si ça marche. Si je place la ligne suivante dans le traitement du bouton "Dépl. +5,+5" du premier Scene2D de mon programme de test, je clique sur le bonhomme qui marche puis sur ce bouton d'automatisation, le bonhomme s'arrête de marcher, mais se déplace conformément à l'automation...:
Code:
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,0)
Le fait de spécifier ',3,0) arrête bien l'animation.

Essaie de placer un bouton de test sur ta form, et comme code, tu places juste l'arrêt de l'animation, avec le bon numéro de sprite. Ca devrait s'arrêter.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptySam 7 Mai 2016 - 22:24

KGF.dll V6.63 du 07/05/2016

Nouveautés:
- Scene2D: nouvelle fonction LinkScene2DToScene2D

Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

Ceci apporte une nouvelle fonctionnalité majeure. On considère chaque Scene2D (en tout cas l'image complète, pas uniquement le viewport !) comme un "morceau" d'un monde pavé de rectangles juxtaposés dans les deux directions. Et donc, chaque Scene2D peut avoir jusqu'à 4 voisins: à gauche, en haut, à droite et en bas. On peut maintenant lier les Scene2D de cette manière. Et un sprite qui se déplace avec un mouvement automatisé, aura alors un comportement différent suivant qu'il heurte un bord sans voisin ou un bord avec voisin. Pour un bord sans voisin, le comportement ne change pas: le mouvement automatique s'arrête et ce fait est signalé dans l'interface. Par contre, lorsqu'un sprite touche un bord avec voisin, il est "téléporté" automatiquement dans le Scene2D voisin et continue son chemin automatique comme su de rien n'était...

Voici le programme de démo, qui lie verticalement les deux Scenes 2D:
Code:
' test_2_Scene2D.bas

label arriere1, avant1, cacher1, cachertout1, montrertout1
label arriere2, avant2, cacher2, cachertout2, montrertout2
label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2
label zoomplus1, zoommoins1, zoomplus2, zoommoins2
label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2
label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1
label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2
label affcontact1, pascontact1, affcontact2, pascontact2
label sdown1, sup2, stext1, stext2

dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")

dim M1% : M1% = 0 - 1
dim bl$ : bl$ = string$(5," ")
dim back$ : back$ = "SC2D_fond.jpg"
dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp"
dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp"
dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
dim sprite3$ : sprite3$ = "crane.bmp"
dim marcheur$ : marcheur$ = "shokunin.ilb"

full_space 0

dll_on "KGF.dll"
iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$))
res% = dll_call1("KGFdllVersion",adr(kversion$))
caption 0,trim$(sversion$)+" dans "+kversion$

button  1 : top  1 ,10 : left  1,10  : caption  1,"En arrière"    : on_click  1,arriere1
button  2 : top  2, 10 : left  2,100 : caption  2,"En avant"      : on_click  2,avant1
button  3 : top  3, 10 : left  3,190 : caption  3,"Cacher"        : on_click  3,cacher1
button  4 : top  4, 10 : left  4,280 : caption  4,"Cacher tout"  : on_click  4,cachertout1
button  5 : top  5, 10 : left  5,370 : caption  5,"Montrer tout"  : on_click  5,montrertout1
button  6 : top  6, 10 : left  6,460 : caption  6,"Fixe"          : on_click  6,fixe1
button  7 : top  7, 10 : left  7,550 : caption  7,"Mobile"        : on_click  7,mobile1
button  8 : top  8, 10 : left  8,640 : caption  8,"Mobile tout"  : on_click  8,mobiletout1

button 201 : top 201,370 : left 201,10  : caption 201,"En arrière"    : on_click 201,arriere2
button 202 : top 202,370 : left 202,100 : caption 202,"En avant"      : on_click 202,avant2
button 203 : top 203,370 : left 203,190 : caption 203,"Cacher"        : on_click 203,cacher2
button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout"  : on_click 204,cachertout2
button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout"  : on_click 205,montrertout2
button 206 : top 206,370 : left 206,460 : caption 206,"Fixe"          : on_click 206,fixe2
button 207 : top 207,370 : left 207,550 : caption 207,"Mobile"        : on_click 207,mobile2
button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout"  : on_click 208,mobiletout2

button  9 : top  9, 40 : left  9,640 : caption  9,"Déplacer"      : on_click  9,deplacer1
button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +"        : on_click 10,zoomplus1
button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -"        : on_click 11,zoommoins1
button 12 : top 12,130 : left 12,640 : caption 12,"Changer img"  : on_click 12,changerimg1
button 13 : top 13,160 : left 13,640 : caption 13,"ImageList"    : on_click 13,imagelist1
button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb"  : on_click 14,changerilb1
button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D"  : on_click 15,info11
button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite"  : on_click 16,info21
button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond"  : on_click 17,panit1
button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1
button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond"    : on_click 19,enrfond1
button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21
button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1
button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1
button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1
button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv"    : on_click 24,sdown1
button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte"  : on_click 25,stext1

button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer"      : on_click 209,deplacer2
button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +"        : on_click 210,zoomplus2
button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -"        : on_click 211,zoommoins2
button 212 : top 212,130 : left 212,740 : caption 212,"Changer img"  : on_click 212,changerimg2
button 213 : top 213,160 : left 213,740 : caption 213,"ImageList"    : on_click 213,imagelist2
button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb"  : on_click 214,changerilb2
button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D"  : on_click 215,info12
button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite"  : on_click 216,info22
button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond"  : on_click 217,panit2
button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2
button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond"    : on_click 219,enrfond2
button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22
button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2
button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2
button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2
button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^"    : on_click 224,sup2
button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte"  : on_click 225,stext2

open_dialog 97

memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300
  font_name 96,"Courier" : font_size 96,8
edit  98 : hide 98 : on_change 98,event1
alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"

memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300
  font_name 296,"Courier" : font_size 296,8
edit  298 : hide 298 : on_change 298,event2
alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"

dim titre$, mes$
titre$ = "Choix de la couleur de transparence"
mes$ = "Couleur de transparence (défaut: blanc):"
dim lib$ : lib$ = "OK;*;*;Blanc;Noir"
dim img$ : img$ = ""
res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$))
trans% = int(res%/8)
if trans%=0 then trans% = 1

SC2D1% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0)
end_if

SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0)
dim SC2D_Panoramic1%(SC2D1_PS%)
SC2D_Panoramic1%(0) = SC2D1_PS%
SC2D_Panoramic1%(1) = handle(98)
res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%))
res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)

SC2D2% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0)
end_if

SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0)
dim SC2D_Panoramic2%(SC2D2_PS%)
SC2D_Panoramic2%(0) = SC2D2_PS%
SC2D_Panoramic2%(1) = handle(298)
res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%))
res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)

res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$))
res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))

res% = dll_call3("LinkScene2DToScene2D",SC2D1%,SC2D2%,4)

res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))

res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))

res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D1%,1,0)

res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D2%,1,0)

IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
res% = dll_call2("LoadImageList",IL%,adr(marcheur$))

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)

' activer les 2 lignes suivantes pour tester la suppression d'un sprite !
' message "Taper RETURN pour continuer..."
' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)

' activer les 2 lignes suivantes pour tester la suppression du Scene2D !
' message "Taper RETURN pour continuer..."
' res% = dll_call1("DeleteScene2D",SC2D%)

end

' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%)
'  id%  = identifiant du Scene2D
'  ind% = indice du sprite (1,2,3)
'          ou 0 pour sprite sélectionné
'          ou -1 pour tous les sprites, uniquement pour la visibilité
'  vis% = 0 pour invisible ou 1 pour visible
'  sel% = 0 pour non sélectionnable et 1 pour sélectionnable
'  mov% = 0 pour non déplaçable et 1 pour déplaçable
'  ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
'

event1:
  if text$(98)="status"
    s$ = ""
    if SC2D_Panoramic1%(16)=1 then s$ = "collision"
    if SC2D_Panoramic1%(16)=2 then s$ = "bordure"
    if SC2D_Panoramic1%(16)=3 then s$ = "téléporté"
    caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+"  à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+"  dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+"  collision: "+str$(SC2D_Panoramic1%(7))+"  contact: "+str$(SC2D_Panoramic1%(8))+"  "+s$
  end_if

  return

event2:
  if text$(298)="status"
    s$ = ""
    if SC2D_Panoramic2%(16)=1 then s$ = "collision"
    if SC2D_Panoramic2%(16)=2 then s$ = "bordure"
    if SC2D_Panoramic1%(16)=3 then s$ = "téléporté"
    caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+"  à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+"  dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+"  collision: "+str$(SC2D_Panoramic2%(7))+"  contact: "+str$(SC2D_Panoramic2%(8))+"  "+s$
  end_if

  return


arriere1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%)
  return

avant1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1)
  return

cacher1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0)
  return

cachertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0)
  return

montrertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return

fixe1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0)
  return

mobile1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0)
  return

mobiletout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return


arriere2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%)
  return

avant2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1)
  return

cacher2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0)
  return

cachertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0)
  return

montrertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return

fixe2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0)
  return

mobile2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0)
  return

mobiletout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return




deplacer1:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220)
  return

zoomplus1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*3)/2
  h% = (SC2D_Panoramic1%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

zoommoins1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*2)/3
  h% = (SC2D_Panoramic1%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

changerimg1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$))
  return

imagelist1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%)
  return

changerilb1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190)
  return

info11:
  clear 96
  sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%))
  item_add 96,"Scene2D:"
  item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info21:
  clear 96
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%))
  item_add 96,"Sprite:"
  item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit1:
  if SC2D_Panoramic1%(9)=0 then return
  if SC2D_Panoramic1%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic1:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$))
  return

enrfond1:
  f$ = "SC2D1_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp21:
  f$ = "SC2D1_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl1:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200)
  return

affcontact1:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1)
  return

pascontact1:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0)
  return

sdown1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1)
  return

stext1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  return



deplacer2:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220)
  return

zoomplus2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*3)/2
  h% = (SC2D_Panoramic2%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

zoommoins2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*2)/3
  h% = (SC2D_Panoramic2%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

changerimg2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$))
  return

imagelist2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%)
  return

changerilb2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190)
  return

info12:
  clear 296
  sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%))
  item_add 296,"Scene2D:"
  item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info22:
  clear 296
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%))
  item_add 296,"Sprite:"
  item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit2:
  if SC2D_Panoramic2%(9)=0 then return
  if SC2D_Panoramic2%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic2:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$))
  return

enrfond2:
  f$ = "SC2D_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp22:
  f$ = "SC2D_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl2:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200)
  return

affcontact2:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1)
  return

pascontact2:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0)
  return

sup2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1)
  return
 
stext2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  return

Bon, ce sera la dernière version pour ce soir. Il y a eu beaucoup de choses, aujourd'hui...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 24 EmptyDim 8 Mai 2016 - 0:17

Toutes ces fonctions me font bavé comme un toutou devant un os.
J' ai hâte de finir Gest-Compte pour m' y mettre.
Laughing
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyDim 8 Mai 2016 - 1:38

Un petit complément d'information pour Jean-Claude:
Dans mon programme de démo, c'est le sprite 3 qui est animé dans les deux Scene2D. J'ai ajouté un bouton "Stop animat." pour chacun des Scene2D. Pour le Scene2D du haut, l'arrêt se fait inconditionnellement sur le sprite 3. Par contre, pour le Scene2D, l'arrêt se fait sur le sprite sélectionné. Donc, dans ce dernier cas, ilm faut d'abord sélectionner le bonhomme qui marche en cliquant dessus, avant de voir le bouton d'arrêt avoir son effet. Ceci est bien la preuve que la fonction marche, que ce soit par la référence directe du sprite ou par référence indirecte selon le sprite sélectionné.

Voici le code:
Code:
' test_2_Scene2D.bas

label arriere1, avant1, cacher1, cachertout1, montrertout1
label arriere2, avant2, cacher2, cachertout2, montrertout2
label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2
label zoomplus1, zoommoins1, zoomplus2, zoommoins2
label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2
label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1
label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2
label affcontact1, pascontact1, affcontact2, pascontact2
label sdown1, sup2, stext1, stext2, stopanim1, stopanim2

dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")

dim M1% : M1% = 0 - 1
dim bl$ : bl$ = string$(5," ")
dim back$ : back$ = "SC2D_fond.jpg"
dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp"
dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp"
dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
dim sprite3$ : sprite3$ = "crane.bmp"
dim marcheur$ : marcheur$ = "shokunin.ilb"

full_space 0

dll_on "KGF.dll"
iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$))
res% = dll_call1("KGFdllVersion",adr(kversion$))
caption 0,trim$(sversion$)+" dans "+kversion$

button  1 : top  1 ,10 : left  1,10  : caption  1,"En arrière"    : on_click  1,arriere1
button  2 : top  2, 10 : left  2,100 : caption  2,"En avant"      : on_click  2,avant1
button  3 : top  3, 10 : left  3,190 : caption  3,"Cacher"        : on_click  3,cacher1
button  4 : top  4, 10 : left  4,280 : caption  4,"Cacher tout"   : on_click  4,cachertout1
button  5 : top  5, 10 : left  5,370 : caption  5,"Montrer tout"  : on_click  5,montrertout1
button  6 : top  6, 10 : left  6,460 : caption  6,"Fixe"          : on_click  6,fixe1
button  7 : top  7, 10 : left  7,550 : caption  7,"Mobile"        : on_click  7,mobile1
button  8 : top  8, 10 : left  8,640 : caption  8,"Mobile tout"   : on_click  8,mobiletout1

button 201 : top 201,370 : left 201,10  : caption 201,"En arrière"    : on_click 201,arriere2
button 202 : top 202,370 : left 202,100 : caption 202,"En avant"      : on_click 202,avant2
button 203 : top 203,370 : left 203,190 : caption 203,"Cacher"        : on_click 203,cacher2
button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout"   : on_click 204,cachertout2
button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout"  : on_click 205,montrertout2
button 206 : top 206,370 : left 206,460 : caption 206,"Fixe"          : on_click 206,fixe2
button 207 : top 207,370 : left 207,550 : caption 207,"Mobile"        : on_click 207,mobile2
button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout"   : on_click 208,mobiletout2

button  9 : top  9, 40 : left  9,640 : caption  9,"Déplacer"      : on_click  9,deplacer1
button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +"        : on_click 10,zoomplus1
button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -"        : on_click 11,zoommoins1
button 12 : top 12,130 : left 12,640 : caption 12,"Changer img"   : on_click 12,changerimg1
button 13 : top 13,160 : left 13,640 : caption 13,"ImageList"     : on_click 13,imagelist1
button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb"   : on_click 14,changerilb1
button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D"  : on_click 15,info11
button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite"   : on_click 16,info21
button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond"  : on_click 17,panit1
button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1
button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond"     : on_click 19,enrfond1
button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21
button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1
button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1
button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1
button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv"    : on_click 24,sdown1
button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte"  : on_click 25,stext1
button 26 : top 26,550 : left 26,640 : caption 26,"Stop animat."  : on_click 26,stopanim1

button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer"      : on_click 209,deplacer2
button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +"        : on_click 210,zoomplus2
button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -"        : on_click 211,zoommoins2
button 212 : top 212,130 : left 212,740 : caption 212,"Changer img"   : on_click 212,changerimg2
button 213 : top 213,160 : left 213,740 : caption 213,"ImageList"     : on_click 213,imagelist2
button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb"   : on_click 214,changerilb2
button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D"  : on_click 215,info12
button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite"   : on_click 216,info22
button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond"  : on_click 217,panit2
button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2
button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond"     : on_click 219,enrfond2
button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22
button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2
button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2
button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2
button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^"    : on_click 224,sup2
button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte"  : on_click 225,stext2
button 226 : top 226,550 : left 226,740 : caption 226,"Stop animat."  : on_click 226,stopanim2

open_dialog 97

memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300
  font_name 96,"Courier" : font_size 96,8
edit  98 : hide 98 : on_change 98,event1
alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"

memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300
  font_name 296,"Courier" : font_size 296,8
edit  298 : hide 298 : on_change 298,event2
alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"

dim titre$, mes$
titre$ = "Choix de la couleur de transparence"
mes$ = "Couleur de transparence (défaut: blanc):"
dim lib$ : lib$ = "OK;*;*;Blanc;Noir"
dim img$ : img$ = ""
res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$))
trans% = int(res%/8)
if trans%=0 then trans% = 1

SC2D1% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255)
else             : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0)
end_if

SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0)
dim SC2D_Panoramic1%(SC2D1_PS%)
SC2D_Panoramic1%(0) = SC2D1_PS%
SC2D_Panoramic1%(1) = handle(98)
res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%))
res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)

SC2D2% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255)
else             : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0)
end_if

SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0)
dim SC2D_Panoramic2%(SC2D2_PS%)
SC2D_Panoramic2%(0) = SC2D2_PS%
SC2D_Panoramic2%(1) = handle(298)
res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%))
res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)

res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$))
res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))

res% = dll_call3("LinkScene2DToScene2D",SC2D1%,SC2D2%,4)

res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))

res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))

res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D1%,1,0)

res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D2%,1,0)

IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
res% = dll_call2("LoadImageList",IL%,adr(marcheur$))

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)

' activer les 2 lignes suivantes pour tester la suppression d'un sprite !
' message "Taper RETURN pour continuer..."
' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)

' activer les 2 lignes suivantes pour tester la suppression du Scene2D !
' message "Taper RETURN pour continuer..."
' res% = dll_call1("DeleteScene2D",SC2D%)

end

' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%)
'   id%  = identifiant du Scene2D
'   ind% = indice du sprite (1,2,3)
'          ou 0 pour sprite sélectionné
'          ou -1 pour tous les sprites, uniquement pour la visibilité
'   vis% = 0 pour invisible ou 1 pour visible
'   sel% = 0 pour non sélectionnable et 1 pour sélectionnable
'   mov% = 0 pour non déplaçable et 1 pour déplaçable
'   ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
'

event1:
  if text$(98)="status"
    s$ = ""
    if SC2D_Panoramic1%(16)=1 then s$ = "collision"
    if SC2D_Panoramic1%(16)=2 then s$ = "bordure"
    if SC2D_Panoramic1%(16)=3 then s$ = "téléporté"
    caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+"  à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+"  dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+"  collision: "+str$(SC2D_Panoramic1%(7))+"  contact: "+str$(SC2D_Panoramic1%(8))+"  "+s$
  end_if

  return

event2:
  if text$(298)="status"
    s$ = ""
    if SC2D_Panoramic2%(16)=1 then s$ = "collision"
    if SC2D_Panoramic2%(16)=2 then s$ = "bordure"
    if SC2D_Panoramic1%(16)=3 then s$ = "téléporté"
    caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+"  à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+"  dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+"  collision: "+str$(SC2D_Panoramic2%(7))+"  contact: "+str$(SC2D_Panoramic2%(8))+"  "+s$
  end_if

  return


arriere1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%)
  return

avant1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1)
  return

cacher1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0)
  return

cachertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0)
  return

montrertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return

fixe1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0)
  return

mobile1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0)
  return

mobiletout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return


arriere2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%)
  return

avant2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1)
  return

cacher2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0)
  return

cachertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0)
  return

montrertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return

fixe2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0)
  return

mobile2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0)
  return

mobiletout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return




deplacer1:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220)
  return

zoomplus1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*3)/2
  h% = (SC2D_Panoramic1%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

zoommoins1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*2)/3
  h% = (SC2D_Panoramic1%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

changerimg1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$))
  return

imagelist1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%)
  return

changerilb1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190)
  return

info11:
  clear 96
  sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%))
  item_add 96,"Scene2D:"
  item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info21:
  clear 96
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%))
  item_add 96,"Sprite:"
  item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit1:
  if SC2D_Panoramic1%(9)=0 then return
  if SC2D_Panoramic1%(10)=0
   res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0)
   caption 17,"Bloquer fond"
  else
   res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0)
   caption 17,"Libérer fond"
  end_if
  return

mosaic1:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$))
  return

enrfond1:
  f$ = "SC2D1_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp21:
  f$ = "SC2D1_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl1:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200)
  return

affcontact1:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1)
  return

pascontact1:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0)
  return

sdown1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1)
  return

stext1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  return



deplacer2:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220)
  return

zoomplus2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*3)/2
  h% = (SC2D_Panoramic2%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

zoommoins2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*2)/3
  h% = (SC2D_Panoramic2%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

changerimg2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$))
  return

imagelist2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%)
  return

changerilb2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190)
  return

info12:
  clear 296
  sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%))
  item_add 296,"Scene2D:"
  item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info22:
  clear 296
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%))
  item_add 296,"Sprite:"
  item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit2:
  if SC2D_Panoramic2%(9)=0 then return
  if SC2D_Panoramic2%(10)=0
   res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0)
   caption 17,"Bloquer fond"
  else
   res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0)
   caption 17,"Libérer fond"
  end_if
  return

mosaic2:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$))
  return

enrfond2:
  f$ = "SC2D_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp22:
  f$ = "SC2D_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl2:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200)
  return

affcontact2:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1)
  return

pascontact2:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0)
  return

sup2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1)
  return
  
stext2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  return

stopanim1:
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,0)
  return
  
stopanim2:
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,0)
  return
  

EDIT

D'ailleurs, après les avoir stoppés, on peut les faire remarcher, ces bonhommes. Ce sont les boutons "Changer ilb" qui permettent de choisir un numéro d'image pour redémarrer. Choisir un nombre entre 0 et 7. Mais pour les deux boutons, il faut que le sprite 3 soit sélectionné d'abord.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyDim 8 Mai 2016 - 10:12

Merci Klaus, je vais regarder ta démo pour voir ce que je n'ai pas compris.

Je vais aussi tester LinkScene2DToScene2D.
C'est une super avancée pour faire des jeux 2d sur un grand champs de bataille.

Bravo, A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyDim 8 Mai 2016 - 11:46

KGF.dll V6.64 du 08/05/2016

Nouveautés:
Scene2D:
- en cas de téléport entre 2 Scened2D, tenir compte du décalage des ViewPorts pour le positionnement
- ajout du mot 17 dans le tableau d'interface: identification de la bordure pour types d'évènements 2 et 3 (contact bordure et téléport)


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

Et voici la version du programme de démo qui affiche la bordure concernée, en cas de contact avec la bordure en mouvement automatique. Et en cas de téléport, le programme Panoramic affiche un message "téléporté" afin de laisser le temps de visualiser la ligne d'état sous le Snene2D d'origine, indiquant le bord concerné par le téléport.
Code:
' test_2_Scene2D.bas

label arriere1, avant1, cacher1, cachertout1, montrertout1
label arriere2, avant2, cacher2, cachertout2, montrertout2
label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2
label zoomplus1, zoommoins1, zoomplus2, zoommoins2
label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2
label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1
label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2
label affcontact1, pascontact1, affcontact2, pascontact2
label sdown1, sup2, stext1, stext2, stopanim1, stopanim2

dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$
dim sversion$, iversion% : sversion$ = string$(255," ")
dim kversion$ : kversion$ = string$(25," ")
dim bord$(4) : bord$(0) = " " : bord$(1) = "gauche" : bord$(2) = "haut" : bord$(3) = "droite" : bord$(4) = "bas"

dim M1% : M1% = 0 - 1
dim bl$ : bl$ = string$(5," ")
dim back$ : back$ = "SC2D_fond.jpg"
dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp"
dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp"
dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
dim sprite3$ : sprite3$ = "crane.bmp"
dim marcheur$ : marcheur$ = "shokunin.ilb"

full_space 0

dll_on "KGF.dll"
iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$))
res% = dll_call1("KGFdllVersion",adr(kversion$))
caption 0,trim$(sversion$)+" dans "+kversion$

button  1 : top  1 ,10 : left  1,10  : caption  1,"En arrière"    : on_click  1,arriere1
button  2 : top  2, 10 : left  2,100 : caption  2,"En avant"      : on_click  2,avant1
button  3 : top  3, 10 : left  3,190 : caption  3,"Cacher"        : on_click  3,cacher1
button  4 : top  4, 10 : left  4,280 : caption  4,"Cacher tout"  : on_click  4,cachertout1
button  5 : top  5, 10 : left  5,370 : caption  5,"Montrer tout"  : on_click  5,montrertout1
button  6 : top  6, 10 : left  6,460 : caption  6,"Fixe"          : on_click  6,fixe1
button  7 : top  7, 10 : left  7,550 : caption  7,"Mobile"        : on_click  7,mobile1
button  8 : top  8, 10 : left  8,640 : caption  8,"Mobile tout"  : on_click  8,mobiletout1

button 201 : top 201,370 : left 201,10  : caption 201,"En arrière"    : on_click 201,arriere2
button 202 : top 202,370 : left 202,100 : caption 202,"En avant"      : on_click 202,avant2
button 203 : top 203,370 : left 203,190 : caption 203,"Cacher"        : on_click 203,cacher2
button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout"  : on_click 204,cachertout2
button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout"  : on_click 205,montrertout2
button 206 : top 206,370 : left 206,460 : caption 206,"Fixe"          : on_click 206,fixe2
button 207 : top 207,370 : left 207,550 : caption 207,"Mobile"        : on_click 207,mobile2
button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout"  : on_click 208,mobiletout2

button  9 : top  9, 40 : left  9,640 : caption  9,"Déplacer"      : on_click  9,deplacer1
button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +"        : on_click 10,zoomplus1
button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -"        : on_click 11,zoommoins1
button 12 : top 12,130 : left 12,640 : caption 12,"Changer img"  : on_click 12,changerimg1
button 13 : top 13,160 : left 13,640 : caption 13,"ImageList"    : on_click 13,imagelist1
button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb"  : on_click 14,changerilb1
button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D"  : on_click 15,info11
button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite"  : on_click 16,info21
button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond"  : on_click 17,panit1
button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1
button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond"    : on_click 19,enrfond1
button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21
button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1
button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1
button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1
button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv"    : on_click 24,sdown1
button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte"  : on_click 25,stext1
button 26 : top 26,550 : left 26,640 : caption 26,"Stop animat."  : on_click 26,stopanim1

button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer"      : on_click 209,deplacer2
button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +"        : on_click 210,zoomplus2
button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -"        : on_click 211,zoommoins2
button 212 : top 212,130 : left 212,740 : caption 212,"Changer img"  : on_click 212,changerimg2
button 213 : top 213,160 : left 213,740 : caption 213,"ImageList"    : on_click 213,imagelist2
button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb"  : on_click 214,changerilb2
button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D"  : on_click 215,info12
button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite"  : on_click 216,info22
button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond"  : on_click 217,panit2
button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2
button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond"    : on_click 219,enrfond2
button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22
button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2
button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2
button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2
button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^"    : on_click 224,sup2
button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte"  : on_click 225,stext2
button 226 : top 226,550 : left 226,740 : caption 226,"Stop animat."  : on_click 226,stopanim2

open_dialog 97

memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300
  font_name 96,"Courier" : font_size 96,8
edit  98 : hide 98 : on_change 98,event1
alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"

memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300
  font_name 296,"Courier" : font_size 296,8
edit  298 : hide 298 : on_change 298,event2
alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"

dim titre$, mes$
titre$ = "Choix de la couleur de transparence"
mes$ = "Couleur de transparence (défaut: blanc):"
dim lib$ : lib$ = "OK;*;*;Blanc;Noir"
dim img$ : img$ = ""
res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$))
trans% = int(res%/8)
if trans%=0 then trans% = 1

SC2D1% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0)
end_if

SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0)
dim SC2D_Panoramic1%(SC2D1_PS%)
SC2D_Panoramic1%(0) = SC2D1_PS%
SC2D_Panoramic1%(1) = handle(98)
res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%))
res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)

SC2D2% = dll_call2("CreateScene2D",handle(0),1)
if trans%=1          : ' blanc ?
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255)
else            : ' noir !
  res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0)
end_if

SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0)
dim SC2D_Panoramic2%(SC2D2_PS%)
SC2D_Panoramic2%(0) = SC2D2_PS%
SC2D_Panoramic2%(1) = handle(298)
res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%))
res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)

res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$))
res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))

res% = dll_call3("LinkScene2DToScene2D",SC2D1%,SC2D2%,4)

res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))

res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0,  0,adr(sprite2$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))

res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D1%,1,0)

res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70)
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D2%,1,0)

IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
res% = dll_call2("LoadImageList",IL%,adr(marcheur$))

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)

res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)

' activer les 2 lignes suivantes pour tester la suppression d'un sprite !
' message "Taper RETURN pour continuer..."
' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)

' activer les 2 lignes suivantes pour tester la suppression du Scene2D !
' message "Taper RETURN pour continuer..."
' res% = dll_call1("DeleteScene2D",SC2D%)

end

' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%)
'  id%  = identifiant du Scene2D
'  ind% = indice du sprite (1,2,3)
'          ou 0 pour sprite sélectionné
'          ou -1 pour tous les sprites, uniquement pour la visibilité
'  vis% = 0 pour invisible ou 1 pour visible
'  sel% = 0 pour non sélectionnable et 1 pour sélectionnable
'  mov% = 0 pour non déplaçable et 1 pour déplaçable
'  ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
'

event1:
  if text$(98)="status"
    s$ = ""
    if SC2D_Panoramic1%(16)=1 then s$ = "collision"
    if SC2D_Panoramic1%(16)=2 then s$ = "bordure"
    if SC2D_Panoramic1%(16)=3 then s$ = "téléporté"
    s$ = s$ + " " + bord$(SC2D_Panoramic1%(17))
    caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+"  à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+"  dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+"  collision: "+str$(SC2D_Panoramic1%(7))+"  contact: "+str$(SC2D_Panoramic1%(8))+"  "+s$
    if SC2D_Panoramic1%(16)=3 then message "Téléporté !"
  end_if

  return

event2:
  if text$(298)="status"
    s$ = ""
    if SC2D_Panoramic2%(16)=1 then s$ = "collision"
    if SC2D_Panoramic2%(16)=2 then s$ = "bordure"
    if SC2D_Panoramic1%(16)=3 then s$ = "téléporté"
    s$ = s$ + " " + bord$(SC2D_Panoramic2%(17))
    caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+"  à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+"  dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+"  collision: "+str$(SC2D_Panoramic2%(7))+"  contact: "+str$(SC2D_Panoramic2%(8))+"  "+s$
    if SC2D_Panoramic2%(16)=3 then message "Téléporté !"
  end_if

  return


arriere1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%)
  return

avant1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1)
  return

cacher1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0)
  return

cachertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0)
  return

montrertout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return

fixe1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0)
  return

mobile1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0)
  return

mobiletout1:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0)
  return


arriere2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%)
  return

avant2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1)
  return

cacher2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0)
  return

cachertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0)
  return

montrertout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return

fixe2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0)
  return

mobile2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0)
  return

mobiletout2:
  res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0)
  return




deplacer1:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220)
  return

zoomplus1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*3)/2
  h% = (SC2D_Panoramic1%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

zoommoins1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic1%(5)*2)/3
  h% = (SC2D_Panoramic1%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%)
  return

changerimg1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$))
  return

imagelist1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%)
  return

changerilb1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190)
  return

info11:
  clear 96
  sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%))
  item_add 96,"Scene2D:"
  item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info21:
  clear 96
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%))
  item_add 96,"Sprite:"
  item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit1:
  if SC2D_Panoramic1%(9)=0 then return
  if SC2D_Panoramic1%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic1:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$))
  return

enrfond1:
  f$ = "SC2D1_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp21:
  f$ = "SC2D1_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl1:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200)
  return

affcontact1:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1)
  return

pascontact1:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0)
  return

sdown1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1)
  return

stext1:
  if SC2D_Panoramic1%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$))
  return



deplacer2:
  res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220)
  return

zoomplus2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*3)/2
  h% = (SC2D_Panoramic2%(6)*3)/2
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

zoommoins2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  w% = (SC2D_Panoramic2%(5)*2)/3
  h% = (SC2D_Panoramic2%(6)*2)/3
  res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%)
  return

changerimg2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$))
  return

imagelist2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  filter 97,"Fichier ILB|*.ilb"
  f$ = file_name$(97)
  if f$="_" then return
  if IL%<>0 then res% = dll_call1("DeleteImageList",IL%)
  IL% = dll_call2("CreateImageList",16,16)  : ' en vue de KGF.ilb - à changer selon les besoins !
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%)
  return

changerilb2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return
  res% = val(message_text$)
  if res%<0 then return
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%)
  ' animer le sprite
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190)
  return

info12:
  clear 296
  sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%))
  item_add 296,"Scene2D:"
  item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif"
  item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D"
  item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D"
  item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D"
  item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D"
  item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé"
  item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond"
  item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport"
  return

info22:
  clear 296
  sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0)
  if variable("info%")=1 then free info%
  dim info%(sInfo%)
  info%(0) = sInfo%
  res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%))
  item_add 296,"Sprite:"
  item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments"
  item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites"
  item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite"
  item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite"
  item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite"
  item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite"
  item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite"
  item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance"
  item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant"
  item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact"
  item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList"
  item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList"
  item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée"
  item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms"
  item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible"
  return

panit2:
  if SC2D_Panoramic2%(9)=0 then return
  if SC2D_Panoramic2%(10)=0
  res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0)
  caption 17,"Bloquer fond"
  else
  res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0)
  caption 17,"Libérer fond"
  end_if
  return

mosaic2:
  filter 97,"Fichiers BMP|*.bmp"
  f$ = file_name$(97)
  if f$="_" then return
  res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$))
  return

enrfond2:
  f$ = "SC2D_fond_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$))
  message "Fond sauvegardé dans: "+f$
  return

enrsp22:
  f$ = "SC2D_sprite_2_sauvegarde.bmp"
  res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$))
  message "Sprite 2 sauvegardé dans: "+f$
  return

actdepl2:
  ' déplacement avec arrêt sur contact bloquant
'  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200)
  ' déplacement avec arrêt sur n'importe quel contact
  res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200)
  return

affcontact2:
  ' afficher les zones de contact pour tous les sprites
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1)
  return

pascontact2:
  ' cacher les zones de contact
  res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0)
  return

sup2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1)
  return
 
stext2:
  if SC2D_Panoramic2%(2)=0
    message "Aucun sprite n'est sélectionné"
    return
  end_if
  s$ = string$(255," ")
  res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  s$ = trim$(s$)
  s$ = message_input$("Texte du sprite","Texte:",s$)
  res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$))
  return

stopanim1:
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,0)
  return
 
stopanim2:
  res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,0)
  return
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 24 sur 40Aller à la page : Précédent  1 ... 13 ... 23, 24, 25 ... 32 ... 40  Suivant
 Sujets similaires
-
» Nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: