Page 1 sur 4

Le concept de 'ScreenGadget'

Publié : mar. 01/sept./2015 23:53
par Ollivier
Bonjour, je fais suite à une remarque de Patrick88

Il y évoque le concept de 'ScreenGadget'.

Je pense qu'il est possible de faire quelquechose, mais, à la condition de comprendre ce que c'est. Et ça commence par des mots. Alors, qu'est-ce que l'expression 'ScreenGadget' vous inspire, en quelques mots?

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 1:32
par Brayane
Moi ScreenGadget me fais penser à un écran comme un Sreen quoi sauf que la tu peu en mètre ou tu veux, 1, 10, 100...
C'est un Gadget écran quoi en gros, l'utilité ?

Aucune idée !

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 4:01
par Ollivier
Avant d'imaginer quelque chose l'on veut, autant voir grand quand on le veut, et, notamment, sous toute contrainte inopinée de l'OS, et cela sur n'importe quel OS.

Deux procédures pour se simplifier grandement la vie avec le plein écran:

Code : Tout sélectionner

 ;______________________________________________________


; Plein ecran : Gerer le changement de tache

;______________________________________________________
Declare OnFullScreen(ScreenTitle.S,
                     ScreenFlipMode.I = #PB_Screen_WaitSynchronization)
;______________________________________________________
Declare FullScreenResume(ScreenTitle.S,
                         ScreenFlipMode.I = #PB_Screen_WaitSynchronization, 
                         *StandBy = 0,
                         DelayDuration.I = 16)
;______________________________________________________

;______________________________________________________
; TEST

InitSprite()
OnFullScreen("test") ; <<<< ICI
InitKeyboard()




Repeat
	ClearScreen(0)
	Delay(16)
	FlipBuffers()
	If IsScreenActive() = 0
		FullScreenResume("TEST") ; <<<< ICI
	EndIf
	ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) 

End
;______________________________________________________



;______________________________________________________
Procedure OnFullScreen(ScreenTitle.S,
                       ScreenFlipMode.I = #PB_Screen_WaitSynchronization)
	
	ExamineDesktops()
	OpenScreen(DesktopWidth(0),
	           DesktopHeight(0),
	           DesktopDepth(0),
	           ScreenTitle,
	           ScreenFlipMode,
	           DesktopFrequency(0) )
	
EndProcedure
;______________________________________________________
Procedure FullScreenResume(ScreenTitle.S,
                           ScreenFlipMode.I = #PB_Screen_WaitSynchronization, 
                           *StandBy = 0,
                           DelayDuration.I = 16)
	
	Protected BackgroundWindow.I
	
	CloseScreen()
	BackgroundWindow = OpenWindow(#PB_Any, 
	                              0, 
	                              0, 
	                              0, 
	                              0, 
	                              ScreenTitle, 
	                              #PB_Window_BorderLess | 
	                              #PB_Window_NoActivate)
	Repeat
		Delay(DelayDuration)
		If *StandBy
			CallFunctionFast(*StandBy)
		EndIf
	Until WindowEvent() = #PB_Event_ActivateWindow
	
	CloseWindow(BackgroundWindow)
	OnFullScreen(ScreenTitle, ScreenFlipMode)
	
EndProcedure
;______________________________________________________

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 8:39
par Kwai chang caine
Moi j'ai un ecran noir en 5.23 et 5.31 X86 :|
J'appellerais ça un "BlackGadget" si je peux me permettre d'émmetre un nom qui lui colle bien :oops: :lol:

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 9:08
par blendman
Je ne sais pas si un screengadget est possible, même si ce serait une chouette idée.
ça permettrait d'avoir des eventtype() comme le canvasgadget(), sans passer par initmouse() ou initkeyboard() ?
Et on pourrait afficher des sprites avec (comme le screen), ce serait ça l'idée ?

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 9:47
par microdevweb
Vous pouvez gérer un screen comme un gadget, comme suit.
Windows only (pas testé sur d'autre os)

Code : Tout sélectionner

CanvasGadget(#Canvas,X,Y,W,H,#PB_Canvas_Keyboard)
OpenWindowedScreen(GadgetID(#Canvas),0,0,W,H)
Tous les événements du canvas peuvent être traités, par contre les événements mouse ne sont plus actif, mais ils sont facilement remplacé par GetGadgetAttribute(#Canvas,#PB_Canvas_MouseX) etc...

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 9:49
par microdevweb
@Kwai chang caine,

Tu peux changer la couleur comme tu le désire

Code : Tout sélectionner

clearscreeen(Rgb(50,60,80))

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 10:21
par TazNormand
Salut

Ce qui serait pratique, ce serait d'avoir plusieurs "WindowedScreen" côte à côte, je verrai bien ça pour le "screenGadget".

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 12:08
par Ollivier
Ce que je cherche à savoir, en tout 1er lieu, c'est si ce code plante. Et sous quel OS?

Ne pas hésiter à éprouver les changements de tâche, les ouvertures du gestionnaire de tâche, les démarrages automatiques qui vous ouvrent une fenêtre, etc...

Sous Windows XP, Vista, 2000, 7, 8, 8.1 et 10.
Sous Linux et MacOSX aussi, ce serait bien de connaître la stabilité de ces procédures.

Tant que vous arrivez toujours à atteindre cet écran noir (ça représente votre jeu!) de manière conventionnelle et conviviale, c'est déjà une belle marche d'escalier à ne pas zaper...

Code copié ici:
Tip n' Tick - Forum EN

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 13:24
par Patrick88
microdevweb a écrit :Vous pouvez gérer un screen comme un gadget, comme suit.
Windows only (pas testé sur d'autre os)

Code : Tout sélectionner

CanvasGadget(#Canvas,X,Y,W,H,#PB_Canvas_Keyboard)
OpenWindowedScreen(GadgetID(#Canvas),0,0,W,H)
Tous les événements du canvas peuvent être traités, par contre les événements mouse ne sont plus actif, mais ils sont facilement remplacé par GetGadgetAttribute(#Canvas,#PB_Canvas_MouseX) etc...
peut on également utiliser cette combine pour Ogre ?

Pat

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 13:50
par microdevweb
@Patrick88,

Je ne peux pas le confirmer, mais à mon sens le moteur 3d doit également fonctionné.

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 14:47
par Ollivier
TazNormand a écrit :Salut

Ce qui serait pratique, ce serait d'avoir plusieurs "WindowedScreen" côte à côte, je verrai bien ça pour le "screenGadget".
Par rapport au titre du sujet effectivement, c'est légitime de demander ça, mais, d'une part, c'est actuellement impossible: la solution est avec OpenGLGadget().

Là, on a un plein écran, c'est fait pour décoiffer avant tout. Donc, il faut être prudent sur ses souhaits pour ne pas entraver la 'mise en pli' du joueur!

C'est un mode à part! J'attends des retours de bugs, au cas où, et après, je poste une version 'windowed' en rappelant pourquoi l'on n'a besoin du mode graphique fenêtré aussi.

On se rend compte que le ScreenGadget existe déjà, mais que le matériel impose ses conditions. J'insiste vraiment sur ce fait: si vous souhaitez plusieurs rectangles graphiques avec accélération matérielle fonctionnant sur tous les OS, seul OpenGL assure ça actuellement.

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 15:03
par falsam
Ollivier a écrit :Là, on a un plein écran, c'est fait pour décoiffer avant tout.
J'ai tellement eu peur de se noir intense qu'effectivement ça décoiffe. Black Panthers, Septembre noir. Nous reste-t-il un peu d'espoir ?

Je reviens sur ton code
Ollivier a écrit :Deux procédures pour se simplifier grandement la vie avec le plein écran:
(/me enfile ses gants blanc.) Sans nullement chercher à vous offenser mon cher Ollivier, en quoi ces deux procédures simplifient grandement la vie avec le plein écran ?

J'ai failli oublier de répondre à la question
Ollivier a écrit :Ce que je cherche à savoir, en tout 1er lieu, c'est si ce code plante. Et sous quel OS?
Windows 10 Pro - PB5.31 (x86) - pas de plantage.

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 15:55
par Ollivier
Falsam a écrit :(/me enfile ses gants blanc.)
Même si je n'en décèle ni les tenants, ni les aboutissants, je suis surpris par une telle minutie...

Merci pour ta précision concernant W10.

Autant y aller direct, as-tu plus simple? (nouvelle fonctionnalité présente sur une version ultérieure à la 5.22)?

Re: Le concept de 'ScreenGadget'

Publié : mer. 02/sept./2015 16:01
par falsam
Je n'ai pas plus simple. Je cherche à comprendre ou tu veux en venir avec ton code.