~ubuntu-branches/ubuntu/trusty/ultrastar-ng/trusty

« back to all changes in this revision

Viewing changes to src/screen_practice.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Miriam Ruiz
  • Date: 2007-05-19 13:27:05 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070519132705-0e57ieq232ykprpv
Tags: 0.1.4-1
* Build-Depends on libcairo2-dev (>= 1.2)
* Modified rules so that the icon and desktop files appear in both flavours
  of the program.
* Added rule-flavour type of targets in debian/rules, so that it is
  easier to maintain.
* New Upstream Release.
  + Added difficulty level
  + Added to-start cursor
  + Added audio pause/seek
  + Added practice screen
  + Added ingame fullscreen support
  + Rewrote of the lyrics parsing and screen API
  + Added manpage, desktop and pixmap files
  + Fixed latest unscaled graphics
  + Bufixes and memleak fixes
* Reconfigure autotools files before running configure.
  Added build dependencies: autoconf, automake1.10
* Added patch to avoid rebuilding the man page, not working properly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <screen_practice.h>
 
2
 
 
3
CScreenPractice::CScreenPractice(char * name)
 
4
{
 
5
        screenName = name;
 
6
}
 
7
 
 
8
CScreenPractice::~CScreenPractice()
 
9
{
 
10
}
 
11
 
 
12
void CScreenPractice::enter( void )
 
13
{
 
14
        CScreenManager * sm = CScreenManager::getSingletonPtr();
 
15
 
 
16
        char * theme_path = new char[1024];
 
17
        float resFactorX = sm->getWidth()/800.;
 
18
        float resFactorY = sm->getHeight()/600.;
 
19
 
 
20
 
 
21
        sm->getThemePathFile(theme_path,"practice_note.svg");
 
22
        cairo_svg_note = new CairoSVG(theme_path,(int)(40.*resFactorX),(int)(25.*resFactorY));
 
23
        texture_note = sm->getVideoDriver()->initSurface(cairo_svg_note->getSDLSurface());
 
24
 
 
25
        sm->getThemePathFile(theme_path,"practice_sharp.svg");
 
26
        cairo_svg_sharp = new CairoSVG(theme_path,(int)(25.*resFactorX),(int)(75.*resFactorY));
 
27
        texture_sharp = sm->getVideoDriver()->initSurface(cairo_svg_sharp->getSDLSurface());
 
28
 
 
29
        delete[] theme_path;
 
30
 
 
31
        theme = new CThemePractice();
 
32
        bg_texture = sm->getVideoDriver()->initSurface(theme->bg->getSDLSurface());
 
33
}
 
34
 
 
35
void CScreenPractice::exit( void )
 
36
{
 
37
        delete theme;
 
38
        delete cairo_svg_note;
 
39
        delete cairo_svg_sharp;
 
40
}
 
41
 
 
42
void CScreenPractice::manageEvent( SDL_Event event )
 
43
{
 
44
        int keypressed;
 
45
        CScreenManager * sm = CScreenManager::getSingletonPtr();
 
46
        switch(event.type) {
 
47
                case SDL_KEYDOWN:
 
48
                        keypressed = event.key.keysym.sym;
 
49
                        if( keypressed == SDLK_ESCAPE || keypressed == SDLK_q ) {
 
50
                                sm->activateScreen("Intro");
 
51
                        }
 
52
        }
 
53
}
 
54
 
 
55
void CScreenPractice::draw( void )
 
56
{
 
57
        CScreenManager * sm = CScreenManager::getSingletonPtr();
 
58
        float resFactorX = sm->getWidth()/800.;
 
59
        float resFactorY = sm->getHeight()/600.;
 
60
 
 
61
        CRecord * record    = sm->getRecord();
 
62
        float freq = record->getFreq();
 
63
        int note = record->getNoteId();
 
64
 
 
65
        theme->theme->clear();
 
66
        sm->getVideoDriver()->drawSurface(bg_texture);
 
67
 
 
68
        if(freq != 0.0) {
 
69
                int posXnote;
 
70
                int posYnote;
 
71
                int posXsharp;
 
72
                int posYsharp;
 
73
                int octave = note/12;
 
74
                bool sharp=false;
 
75
                unsigned char noteOffset=0;
 
76
                switch(note%12) {
 
77
                        case 0:
 
78
                                sharp=false;
 
79
                                noteOffset=0;
 
80
                                break;
 
81
                        case 1:
 
82
                                sharp=true;
 
83
                                noteOffset=0;
 
84
                                break;
 
85
                        case 2:
 
86
                                sharp=false;
 
87
                                noteOffset=1;
 
88
                                break;
 
89
                        case 3:
 
90
                                sharp=true;
 
91
                                noteOffset=1;
 
92
                                break;
 
93
                        case 4:
 
94
                                sharp=false;
 
95
                                noteOffset=2;
 
96
                                break;
 
97
                        case 5:
 
98
                                sharp=false;
 
99
                                noteOffset=3;
 
100
                                break;
 
101
                        case 6:
 
102
                                sharp=true;
 
103
                                noteOffset=3;
 
104
                                break;
 
105
                        case 7:
 
106
                                sharp=false;
 
107
                                noteOffset=4;
 
108
                                break;
 
109
                        case 8:
 
110
                                sharp=true;
 
111
                                noteOffset=4;
 
112
                                break;
 
113
                        case 9:
 
114
                                sharp=false;
 
115
                                noteOffset=5;
 
116
                                break;
 
117
                        case 10:
 
118
                                sharp=true;
 
119
                                noteOffset=5;
 
120
                                break;
 
121
                        case 11:
 
122
                                sharp=false;
 
123
                                noteOffset=6;
 
124
                                break;
 
125
                }
 
126
                theme->notetxt.text = record->getNoteStr(note);
 
127
                theme->theme->PrintText(&theme->notetxt);
 
128
 
 
129
                noteOffset += octave*7;
 
130
 
 
131
                posXnote = (int) ((sm->getWidth()-40.*resFactorX)/2.);
 
132
                posYnote = (int) ((340.-noteOffset*12.5)*resFactorY);
 
133
                sm->getVideoDriver()->drawSurface(texture_note,posXnote,posYnote);
 
134
                if( sharp ) {
 
135
                        posXsharp = (int) ((sm->getWidth()-100.*resFactorX)/2.);
 
136
                        posYsharp = (int) ((315.-noteOffset*12.5)*resFactorY);
 
137
                        sm->getVideoDriver()->drawSurface(texture_sharp,posXsharp,posYsharp);
 
138
                }
 
139
        }
 
140
        sm->getVideoDriver()->drawSurface(theme->theme->getCurrent());
 
141
}