Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (487)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (553)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  slick2d UnicodeFont dropes frames  (Read 209 times)
0 Members and 1 Guest are viewing this topic.
Offline nellykvist

Senior Newbie





« Posted 2013-10-05 12:24:38 »

I was creating a showMessageDialog, just like component from `JOptionPane.showMessageDialog` and I tried to use UnicodeFont to compute total width of the string, so that I can check if the String line goes above max width of the panel. However, my frames have dropped from 2000 fps on to 30. I thought the reason could be UnicodeFont, I commented try/catch block where I create font, and frames are back to normal. So what do you think could be the problem, font or list of the methods I call to make an effects to a font instance?


1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
        public static void showMessageDialog(GameContainer container, Graphics g, String title, String text) throws SlickException {
    UnicodeFont textFont;
            try {
                textFont = new UnicodeFont("res/font/CharlemagneStd-Bold.ttf", 14, false, false);
                textFont.addAsciiGlyphs();
                textFont.getEffects().add(new ColorEffect());
                textFont.loadGlyphs();
            } catch (SlickException ex) {
                System.err.println("Font error...");
                return;
            }
            g.setFont(textFont);
   
            // title, drawLine...
   
            // render text
           float textX = panelMinX + panelInPaddingLeft + strFixHorizontalPadding;
            float textY = Math.max(lineY1, lineY2) + panelInPaddingTop;
   
            String[] sentence = text.split(" ");
            ArrayList<String> strLineList = new ArrayList<>();
            String strLine = "";
            float currentTextWidth;
            float maxLineWidth = (panelMaxX - panelMinX) - (panelInPaddingLeft + panelInPaddingRight + strFixHorizontalPadding);
           
            for (int word = 0; word < sentence.length; word++) {
                currentTextWidth = textFont.getWidth(strLine) + textFont.getWidth(sentence[word]);
               
                if (currentTextWidth > maxLineWidth) {
                    strLine = strLine + "\n";
                    strLineList.add(strLine);
                    strLine = "";
                    word--;
                } else {
                    strLine = strLine + sentence[word] + " ";
                }
                if (word == sentence.length - 1) {
                    strLineList.add(strLine);
                    strLine = "";
                }
            }
            for (String line : strLineList) {
                strLine = strLine + line;
            }
            g.setColor(Color.white);
            g.drawString(strLine, textX, textY);
    }


p.s. If there's solution for getting string width/height, or some other way of coding font to instantiation constructor with calling width/height method and ofc avoiding this frames drop down ..
Offline Nate

JGO Kernel


Medals: 145
Projects: 4
Exp: 14 years


Esoteric Software


« Reply #1 - Posted 2013-10-05 17:24:38 »

You do this every frame? Do it only when needed (the panel changes size).

Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

CopyableCougar4 (23 views)
2014-08-22 19:31:30

atombrot (34 views)
2014-08-19 09:29:53

Tekkerue (30 views)
2014-08-16 06:45:27

Tekkerue (28 views)
2014-08-16 06:22:17

Tekkerue (18 views)
2014-08-16 06:20:21

Tekkerue (27 views)
2014-08-16 06:12:11

Rayexar (65 views)
2014-08-11 02:49:23

BurntPizza (41 views)
2014-08-09 21:09:32

BurntPizza (32 views)
2014-08-08 02:01:56

Norakomi (42 views)
2014-08-06 19:49:38
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!