GTkoi Posted October 5, 2019 Share Posted October 5, 2019 I have two problem : I would like restart the timer, when I change the map ... And the seconde : When I change font size for the text on the screen, it also change the police size in the menu option, and I do not want the font of the menu changes ... Quote Link to comment Share on other sites More sharing options...
Rick Posted October 5, 2019 Share Posted October 5, 2019 Changing font is a state kind of action. When you change it, it's then set for all drawing of text. So you have to change it, draw your text, then change it back to what it was. What timer are you talking about? You have some timer code somewhere? We'd have to see it. Quote Link to comment Share on other sites More sharing options...
GTkoi Posted October 5, 2019 Author Share Posted October 5, 2019 yes, my code for timer is : Script.font = "" -- path "Font" -- use TrueType font file Script.pos = Vec2(0,30) -- Vec2 "Position" Script.size = 15 -- float "Size" Script.color = Vec4(1,1,0,1) -- color "Color" Script.offset = 20 -- int "Offset" -- make larger if numbers get cut off function Script:Start() self.font = Font:Load(self.font,self.size) if self.font == nil then Debug:Error("Select a font") end end function Script:PostRender(context) defaultFont = context:GetFont() r = self.size + self.offset w = self.pos.x + window:GetWidth()/2 - self.offset h = self.pos.y --time factor time = Time:GetCurrent()/1000 context:SetBlendMode(1) context:SetColor(self.color) context:SetFont(self.font) context:DrawText(Math:Round(time),w,h,r,r,Text.VCenter+Text.Center) context:SetFont(defaultFont) end Quote Link to comment Share on other sites More sharing options...
GTkoi Posted October 6, 2019 Author Share Posted October 6, 2019 6 hours ago, Rick said: Changing font is a state kind of action. When you change it, it's then set for all drawing of text. So you have to change it, draw your text, then change it back to what it was. What timer are you talking about? You have some timer code somewhere? We'd have to see it. ok but how do i change the font size of the ecape menu (in main.lua) without changing the font size of the text on the screen? Quote Link to comment Share on other sites More sharing options...
havenphillip Posted October 6, 2019 Share Posted October 6, 2019 The clock isn't restarting because the script is calling Time:GetCurrent(). When you change maps the application doesn't restart, so it's counting the application running time. So what you need is Time:GetSpeed(). That's probably a better way to do a timer anyway. Script.font = "" -- path "Font" -- use TrueType font file Script.pos = Vec2(0,30) -- Vec2 "Position" Script.size = 15 -- float "Size" Script.color = Vec4(1,1,0,1) -- color "Color" Script.offset = 20 -- int "Offset" -- make larger if numbers get cut off Script.countSpeed = 0.05 -- float "Count Speed" (smaller is slower) Script.time = 0 function Script:Start() self.font = Font:Load(self.font,self.size) if self.font == nil then Debug:Error("Select a font") end end function Script:UpdateWorld() self.counter = Time:GetSpeed() * self.countSpeed self.time = self.time + self.counter end function Script:PostRender(context) defaultFont = context:GetFont() r = self.size + self.offset w = self.pos.x + window:GetWidth()/2 - self.offset h = self.pos.y context:SetBlendMode(1) context:SetColor(self.color) context:SetFont(self.font) context:DrawText(Math:Round(self.time),w,h,r,r,Text.VCenter+Text.Center) context:SetFont(defaultFont) end Not sure what you mean by the font sizes. You want to change the font in the gui? Quote Link to comment Share on other sites More sharing options...
GTkoi Posted October 7, 2019 Author Share Posted October 7, 2019 Thanks for help, I would like change the font size to my code "text on the screen" without change font size In GUI (when I change the size in the code, it also changes the font size elsewhere, so that I do not want) Quote Link to comment Share on other sites More sharing options...
havenphillip Posted October 8, 2019 Share Posted October 8, 2019 In the above timer script you have to use "defaultFont = context:GetFont()" at the start of your PostRender() function, then you set the font to the font you want with " context:SetFont(self.font) ", then you "DrawText(...)" and after you have to set it back to the default font with " context:SetFont(defaultFont)." I'm guessing you have other scripts that use the DrawText() function? You have to use "defaultFont = context:GetFont()" and " context:SetFont(defaultFont) " in every script that uses "DrawText(...)". Basic Font script: This shouldn't change your other fonts because you're resetting the font back to the default here: Script.myFont = "" --path "Font" Script.color = Vec4(1,1,1,1) --color "Color" Script.size = 12 function Script:Start() self.myFont= Font:Load(self.myFont,self.size) end function Script:PostRender(context) defaultFont = context:GetFont() --at start of every postrender function context:SetBlendMode(1) context:SetColor(self.color) context:SetFont(self.myFont) -- changed to your font context:DrawText("My Text" ,20,20,100,100) context:SetFont(defaultFont) -- change font back to default at end of every postrender function anywhere "SetFont()" and "DrawText()" are used end Quote Link to comment Share on other sites More sharing options...
GTkoi Posted October 9, 2019 Author Share Posted October 9, 2019 thanks, I will try ?? 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.