… | |
… | |
27 | |
27 | |
28 | $app = new SDL::App |
28 | $app = new SDL::App |
29 | -title => "Crossfire+ Client", |
29 | -title => "Crossfire+ Client", |
30 | -width => $WIDTH, |
30 | -width => $WIDTH, |
31 | -height => $HEIGHT, |
31 | -height => $HEIGHT, |
32 | -depth => 24, |
|
|
33 | -opengl => 1, |
32 | -opengl => 1, |
|
|
33 | -red_size => 8, |
|
|
34 | -green_size => 8, |
|
|
35 | -blue_size => 8, |
34 | -double_buffer => 1, |
36 | -double_buffer => 1, |
35 | -resizeable => 0; |
37 | -resizeable => 0; |
36 | |
38 | |
37 | glEnable GL_TEXTURE_2D; |
39 | glEnable GL_TEXTURE_2D; |
38 | glShadeModel GL_FLAT; |
40 | glShadeModel GL_FLAT; |
39 | glDisable GL_DEPTH_TEST; |
41 | glDisable GL_DEPTH_TEST; |
40 | glMatrixMode GL_PROJECTION; |
42 | glMatrixMode GL_PROJECTION; |
41 | |
43 | |
|
|
44 | glLoadIdentity; |
|
|
45 | glOrtho 0, $WIDTH / 32, $HEIGHT / 32, 0, -1 , 1; |
|
|
46 | |
42 | #glViewport 0, 0, $WIDTH, $HEIGHT; |
47 | #glViewport 0, 0, $WIDTH, $HEIGHT; |
43 | # re-bind all textures |
48 | # re-bind all textures |
44 | } |
49 | } |
45 | |
50 | |
46 | sub refresh { |
51 | sub refresh { |
47 | glClearColor 0.5, 0.5, 0.7, 0; |
52 | glClearColor 0.5, 0.5, 0.7, 0; |
48 | glClear GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT; |
53 | glClear GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT; |
49 | |
|
|
50 | glLoadIdentity; |
|
|
51 | glOrtho 0, $WIDTH / 32, $HEIGHT / 32, 0, -1 , 1; |
|
|
52 | |
54 | |
53 | my $map = $conn->{map}; |
55 | my $map = $conn->{map}; |
54 | |
56 | |
55 | for my $x (0 .. $conn->{mapw} - 1) { |
57 | for my $x (0 .. $conn->{mapw} - 1) { |
56 | for my $y (0 .. $conn->{maph} - 1) { |
58 | for my $y (0 .. $conn->{maph} - 1) { |
… | |
… | |
63 | |
65 | |
64 | glBindTexture GL_TEXTURE_2D, $tex; |
66 | glBindTexture GL_TEXTURE_2D, $tex; |
65 | |
67 | |
66 | glBegin GL_QUADS; |
68 | glBegin GL_QUADS; |
67 | glTexCoord 0, 0; glVertex $x, $y; |
69 | glTexCoord 0, 0; glVertex $x, $y; |
68 | glTexCoord 1, 0; glVertex $x + 1, $y; |
70 | glTexCoord 1, 0; glVertex $x + 0.9, $y; |
69 | glTexCoord 1, 1; glVertex $x + 1, $y + 1; |
71 | glTexCoord 1, 1; glVertex $x + 0.9, $y + 0.9; |
70 | glTexCoord 0, 1; glVertex $x, $y + 1; |
72 | glTexCoord 0, 1; glVertex $x, $y + 0.9; |
71 | glEnd; |
73 | glEnd; |
72 | } |
74 | } |
73 | } |
75 | } |
74 | } |
76 | } |
75 | |
77 | |
… | |
… | |
89 | exit; |
91 | exit; |
90 | }; |
92 | }; |
91 | |
93 | |
92 | event {SDL_VIDEORESIZE} does { |
94 | event {SDL_VIDEORESIZE} does { |
93 | print "resize\n"; |
95 | print "resize\n"; |
|
|
96 | }; |
|
|
97 | |
|
|
98 | event {SDL_VIDEOEXPOSE} does { |
|
|
99 | refresh; |
94 | }; |
100 | }; |
95 | |
101 | |
96 | event {SDL_KEYDOWN} does { |
102 | event {SDL_KEYDOWN} does { |
97 | print "keypress\n"; |
103 | print "keypress\n"; |
98 | }; |
104 | }; |