|
|
Panel scale
#255965
03/13/09 21:18
03/13/09 21:18
|
Joined: Apr 2006
Posts: 273 Germany, NRW
Meerkat
OP
Member
|
OP
Member
Joined: Apr 2006
Posts: 273
Germany, NRW
|
Hi ho. ^^
I change my ressolution in Options and i must set the new scaling for menu. But the vars are not fine enough for calculating new scale.
The calculating was:
1 / 1280 * 800
My number is at first: 0,00078125, but the Engine can taken ONLY 0,001 at smallest. What can i do now? I don't want to set all panels manually. ^^
Rudi
http://www.gpi-studios.comOS: Windows 7 Home Premium (64 Bit Version) AMD Athlon 64 X2 Dual Core Processor 5200+ 6gb DDR 2 - RAM NVIDIA GeForce GTX 460 GameStudio Version A8 Commercial
|
|
|
Re: Panel scale
[Re: Meerkat]
#255972
03/13/09 21:43
03/13/09 21:43
|
Joined: Mar 2009
Posts: 112 Germany
KDuke
Member
|
Member
Joined: Mar 2009
Posts: 112
Germany
|
Lite-C unterstützt zusätzlich standard C/C++ ganzzahlige oder Fließkomma-Variablen für Fälle, in denen Sie einen grösseren Bereich mit weniger Genauigkeit oder höhere Genauigkeit mit kleinen Zahlen brauchen:
Typ Grösse Bereich Genauigkeit
var 4 bytes -1048577.999 bis 1048576.999** 0.001
long, int 4 bytes -2147483648 bis 2147483647 1
short 2 bytes 0 bis 65536 1
char 1 byte 256 Zeichen 1
float 4 bytes -3.4·10^38 bis 3.4·10^38 1.2·10^-38
double 8 bytes -1.8·10^308 bis 1.8·10^308 1.2·10^-308
so... guck mal float an! 1.2*10^-38 = 0.000000000000000000000000000000000000012 Ich denke das sollte genau genug sein oder?
Last edited by KDuke; 03/13/09 22:09.
Using A7 Free Click and join the 3dgs irc community! Room: #3dgs
|
|
|
Re: Panel scale
[Re: Espér]
#255988
03/13/09 23:34
03/13/09 23:34
|
Joined: Apr 2006
Posts: 273 Germany, NRW
Meerkat
OP
Member
|
OP
Member
Joined: Apr 2006
Posts: 273
Germany, NRW
|
Im Handbuch wird warum auch immer nicht beschrieben wie man das benutzt. Oder das is mir net verständlich genug erklärt. Wie erstell ich nu den "Float" mit "0.0000000000000"? Hier draus werd ich net wirklich schlau. so... guck mal float an! 1.2*10^-38 = 0.000000000000000000000000000000000000012
http://www.gpi-studios.comOS: Windows 7 Home Premium (64 Bit Version) AMD Athlon 64 X2 Dual Core Processor 5200+ 6gb DDR 2 - RAM NVIDIA GeForce GTX 460 GameStudio Version A8 Commercial
|
|
|
Re: Panel scale
[Re: Meerkat]
#256031
03/14/09 08:12
03/14/09 08:12
|
Joined: Mar 2009
Posts: 112 Germany
KDuke
Member
|
Member
Joined: Mar 2009
Posts: 112
Germany
|
Ach ja... ich schätz mal du hast folgendes gemacht:
float meinScale = 1/1280*800;
und dabei 0 gekriegt. Die Sache ist die, dass die Engine intern mit int rechnet bei der obigen Rechnung. Sprich nur mit ganzen Zahlen. Damit die Engine jetzt mit fließkommagenauigkeit rechnet musst du folgendes schreiben
float meinScale = 1.0/1280.0*800.0;
Dadurch, dass du Kommazahlen eingibst weiß die Engine von vornherein, dass du auch mit fließkommagenauigkeit rechnen willst.
Using A7 Free Click and join the 3dgs irc community! Room: #3dgs
|
|
|
Re: Panel scale
[Re: KDuke]
#256050
03/14/09 10:24
03/14/09 10:24
|
Joined: Apr 2006
Posts: 273 Germany, NRW
Meerkat
OP
Member
|
OP
Member
Joined: Apr 2006
Posts: 273
Germany, NRW
|
Okay, ich habs aufgegeben. Der rechnet mir da n scheiss zusammen das ich kotzen geh. ^^ Zum Glück braucht man ja alles nur 1x eintragen. 
http://www.gpi-studios.comOS: Windows 7 Home Premium (64 Bit Version) AMD Athlon 64 X2 Dual Core Processor 5200+ 6gb DDR 2 - RAM NVIDIA GeForce GTX 460 GameStudio Version A8 Commercial
|
|
|
Re: Panel scale
[Re: Meerkat]
#256051
03/14/09 10:35
03/14/09 10:35
|
Joined: Mar 2009
Posts: 112 Germany
KDuke
Member
|
Member
Joined: Mar 2009
Posts: 112
Germany
|
Poste doch einfach mal deinen Code Meerkat!
Using A7 Free Click and join the 3dgs irc community! Room: #3dgs
|
|
|
Re: Panel scale
[Re: Lukas]
#256081
03/14/09 14:15
03/14/09 14:15
|
Joined: Apr 2006
Posts: 273 Germany, NRW
Meerkat
OP
Member
|
OP
Member
Joined: Apr 2006
Posts: 273
Germany, NRW
|
Edit: Hier ist die Lösung des Problems. Dank KDuke hab ichs endlich geschafft! 
void ress_800x600_func() //Wird ausgeführt wenn ich auf den 800x600 Button klicke!
{
wait(2);
video_switch(7,32,0);
wait(2);
PanelScale_x = screen_size.x/1280;
PanelScale_y = screen_size.y/1024
Mainmenu.scale_x = PanelScale_x;
Mainmenu.scale_y = PanelScale_y;
}
--------------------------------------------------------- Ich starte mit der Auflösung von 1280x1024!
var PanelScale_x = 1.0;
var PanelScale_y = 1.0;
var PanelPosScale_x = 0.0;
var PanelPosScale_y = 0.0;
float Panel_calc_x = 0.0;
float Panel_calc_y = 0.0;
void ress_800x600_func() //Wird ausgeführt wenn ich auf den 800x600 Button klicke!
{
Panel_calc_x = PanelScale_x / screen_size.x; //1 geteilt durch 1280
Panel_calc_y = PanelScale_y / screen_size.y; //1 geteilt durch 1024
wait(2);
video_switch(7,32,0);
wait(2);
PanelScale_x = Panel_calc_x * screen_size.x; //Wert mal neue Auflösung = Panel Scale!
PanelScale_y = Panel_calc_y * screen_size.y; //Hier ist das gleiche!
Mainmenu.scale_x = PanelScale_x;
Mainmenu.scale_y = PanelScale_y;
...
}
Die gleiche Art sollte auch mit der Positionsberechnung funktionieren, aber beim Skalieren und Positionieren bekomm ich alles raus, nur net das was ich brauch.  Hoffentlich kennt sich jemand damit aus. ^^ Es wäre viel einfacher, wenn du einfach 1 * 800 / 1280 rechnen würdest wink Wie kommt auf die Formel? Ich weiss, das is n Dreisatz. Aber ich versteh die Rechnung noch nicht so ganz. ^^' Rudi
Last edited by Meerkat; 03/14/09 15:56.
http://www.gpi-studios.comOS: Windows 7 Home Premium (64 Bit Version) AMD Athlon 64 X2 Dual Core Processor 5200+ 6gb DDR 2 - RAM NVIDIA GeForce GTX 460 GameStudio Version A8 Commercial
|
|
|
Re: Panel scale
[Re: Meerkat]
#256419
03/16/09 18:15
03/16/09 18:15
|
Joined: Mar 2006
Posts: 2,503 SC, United States
xXxGuitar511
Expert
|
Expert
Joined: Mar 2006
Posts: 2,503
SC, United States
|
Sorry if your issue was already solved, I don't know enough german yet to translate.
It looks like Meerkat gave you the solution though. You were simply going the wrong direction for the right answer.
Instead of "scale = 1/sSize * X;" use scale = sSize/X;" where "X = panel size" & "sSize = screen Size"
Easiest way to make this work is to define a global variable: var pScale;
Then in your main function define them: pScale = screen_size.x / 1280;
Then also in your main function, set all of your panels scale_x/y to the variable: pan_BLANK.scale_x = pScale; pan_BLANK.scale_y = pScale;
Again, sorry if this was already covered...
xXxGuitar511 - Programmer
|
|
|
|