clean some stuff, fix some bugs
[exterlulz-kokomonds.git] / src / ScoreBubble.m
blob13d2e3d68771b4739db4dbdf0a0c3015a337c588
1 //
2 //  ScoreBubble.m
3 //  jeweltoy
4 //
5 //  Created by Mike Wessler on Sat Jun 15 2002.
6 //
7 /*
8  This program is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License
10  as published by the Free Software Foundation; either version 2
11  of the License, or (at your option) any later version.
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  ----====----====----====----====----====----====----====----====----====---- */
23 /* kokomonds is a fork of JewelToy.
24  * repository: http://github.com/exterlulz/kokomonds
25  */
27 // TODO: clean
29 #import "ScoreBubble.h"
31 // Open GL
33 #import "OpenGLSprite.h"
36 NSMutableDictionary *stringAttributes;
38 @implementation ScoreBubble
40 + (ScoreBubble *)scoreWithValue:(int)val at:(NSPoint)location duration:(int)count {
41   return [[[[self class] alloc] initWithValue:val at:location duration:count] autorelease];
44 - (id)initWithValue:(int)val at:(NSPoint)location duration:(int)count
46   NSString *str= [NSString stringWithFormat:@"%d", val];
47   NSSize strsize;
48   
49   self = [super init];
50   if (self != nil) {
51     if (!stringAttributes) {
52             stringAttributes= [NSMutableDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"ArialNarrow-Bold" size:18],
53                          NSFontAttributeName, [NSColor blackColor], NSForegroundColorAttributeName, NULL];
54             [stringAttributes retain];
55     }
56     strsize= [str sizeWithAttributes:stringAttributes];
57     strsize.width += 3;
58     strsize.height++;
59     value = val;
60     screenLocation = location;
61     screenLocation.x -= strsize.width / 2;
62     screenLocation.y -= strsize.height / 2;
63     animationCount = count;
64     image = [[NSImage alloc] initWithSize:strsize];
65     [image lockFocus];
66     [stringAttributes setObject:[NSColor blackColor] forKey:NSForegroundColorAttributeName];    
67     [str drawAtPoint:NSMakePoint(2,0) withAttributes:stringAttributes];
68     [stringAttributes setObject:[NSColor yellowColor] forKey:NSForegroundColorAttributeName];   
69     [str drawAtPoint:NSMakePoint(1,1) withAttributes:stringAttributes];
70     [image unlockFocus];
71     
72     // Open GL
73     //
74     sprite = [[OpenGLSprite alloc] initWithImage:image
75                                    cropRectangle:NSMakeRect(0, 0, [image size].width, [image size].height)
76                                             size:[image size]];
77     //
78   }
79   return self;
82 - (void) dealloc
84   [image release];
85   // TODO: _image = nil; everywhere
86   
87   [sprite release];
88   
89   [super dealloc];
92 -(void)drawImage
94   float alpha= (float)animationCount/20;
95   if (alpha>1) {
96     alpha= 1;
97   }
98   [image compositeToPoint:screenLocation operation:NSCompositeSourceOver fraction:alpha];
101 -(void)drawSprite
103   float alpha= (float)animationCount/20;
104   if (alpha>1) {
105     alpha= 1;
106   }
107   [sprite blitToX:screenLocation.x
108                 Y:screenLocation.y
109                 Z:SCOREBUBBLE_SPRITE_Z
110             Alpha:alpha];
113 -(int)animate
115   if (animationCount>0) {
116     screenLocation.y++;
117     animationCount--;
118   }
119   
120   return animationCount;
123 -(int)animationCount {
124   return animationCount;
127 -(void)setAnimationCount:(int)count {
128   animationCount = count;
131 -(int)value {
132   return value;
135 -(NSImage *)image {
136   return image;
139 -(NSPoint)screenLocation {
140   return screenLocation;
143 @end