# HG changeset patch # User koda # Date 1283117782 -7200 # Node ID 6e84339eefee020415e65f56235438c5100634ab # Parent 7056284fd97cee8db229730a6184f5d1757b8823 about page done diff -r 7056284fd97c -r 6e84339eefee project_files/HedgewarsMobile/Classes/AboutViewController.h --- a/project_files/HedgewarsMobile/Classes/AboutViewController.h Sun Aug 29 16:55:58 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/AboutViewController.h Sun Aug 29 23:36:22 2010 +0200 @@ -9,10 +9,17 @@ #import -@interface AboutViewController : UIViewController { - +@interface AboutViewController : UIViewController { + UITableView *tableView; + UISegmentedControl *segmentedControl; + NSArray *people; } +@property (nonatomic,retain) IBOutlet UITableView *tableView; +@property (nonatomic,retain) IBOutlet UISegmentedControl *segmentedControl; +@property (nonatomic,retain) NSArray *people; + -(IBAction) buttonPressed:(id) sender; +-(IBAction) segmentedControlChanged:(id) sender; @end diff -r 7056284fd97c -r 6e84339eefee project_files/HedgewarsMobile/Classes/AboutViewController.m --- a/project_files/HedgewarsMobile/Classes/AboutViewController.m Sun Aug 29 16:55:58 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/AboutViewController.m Sun Aug 29 23:36:22 2010 +0200 @@ -10,32 +10,22 @@ #import "CommodityFunctions.h" @implementation AboutViewController - +@synthesize tableView, segmentedControl, people; -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { return rotationManager(interfaceOrientation); } -(void) viewDidLoad { - self.view.frame = CGRectMake(0, 0, 320, 480); - [super viewDidLoad]; -} + self.tableView.backgroundView = nil; + self.tableView.allowsSelection = NO; --(void) didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; + NSString *strPath = [NSString stringWithFormat:@"%@/Settings/credits.plist",[[NSBundle mainBundle] resourcePath]]; + NSArray *array = [[NSArray alloc] initWithContentsOfFile:strPath]; + self.people = array; + [array release]; - // Release any cached data, images, etc that aren't in use. -} - --(void) viewDidUnload { - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - --(void) dealloc { - [super dealloc]; + [super viewDidLoad]; } -(IBAction) buttonPressed:(id) sender { @@ -43,4 +33,60 @@ [[self parentViewController] dismissModalViewControllerAnimated:YES]; } +-(IBAction) segmentedControlChanged:(id) sender { + playSound(@"clickSound"); + [self.tableView setContentOffset:CGPointMake(0, 0) animated:NO]; + [self.tableView reloadData]; +} + +#pragma mark - +#pragma mark Table view data source +-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [[self.people objectAtIndex:self.segmentedControl.selectedSegmentIndex] count]; +} + +-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *CellIdentifier = @"Cell"; + + UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; + + // first all the names, then the title (which is offset 5) + cell.textLabel.text = [[self.people objectAtIndex:self.segmentedControl.selectedSegmentIndex] objectAtIndex:[indexPath row]]; + cell.detailTextLabel.text = [[self.people objectAtIndex:(self.segmentedControl.selectedSegmentIndex + 5)] objectAtIndex:[indexPath row]]; + + return cell; +} + +#pragma mark - +#pragma mark Table view delegate +-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + // do nothing +} + +#pragma mark - +#pragma mark Memory Management +-(void) didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; +} + +-(void) viewDidUnload { + self.tableView = nil; + self.segmentedControl = nil; + self.people = nil; + [super viewDidUnload]; +} + +-(void) dealloc { + [tableView release]; + [segmentedControl release]; + [people release]; + [super dealloc]; +} + @end diff -r 7056284fd97c -r 6e84339eefee project_files/HedgewarsMobile/Classes/AboutViewController.xib --- a/project_files/HedgewarsMobile/Classes/AboutViewController.xib Sun Aug 29 16:55:58 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/AboutViewController.xib Sun Aug 29 23:36:22 2010 +0200 @@ -42,48 +42,115 @@ 292 YES - - - 292 - {{88, 90}, {42, 21}} - - NO - YES - 7 - NO - IBIPadFramework - Label - - 1 - MCAwIDAAA - - - 1 - 10 - 290 - {320, 44} + + YES + + + 292 + {{70, 7}, {289, 30}} + + NO + IBIPadFramework + 2 + 5 + 0 + + YES + Code + Art + Sound + Locale + Special + + + YES + + + + + + + + YES + + + + + + + + YES + {0, 0} + {0, 0} + {0, 0} + {0, 0} + {0, 0} + + + YES + + + + + + + + + {429, 44} IBIPadFramework YES - About... IBIPadFramework 1 0 + IBIPadFramework + + + 274 + {{0, 44}, {429, 433}} + + NO + IBIPadFramework + + NSImage + background_small.png + + + + + 274 + {{0, 44}, {429, 433}} + + + 1 + MCAwIDAgMAA + + YES + IBIPadFramework + YES + 1 + 2 + 0 + YES + 44 + 10 + 10 + - {320, 480} + {429, 477} 3 @@ -116,6 +183,47 @@ 8 + + + dataSource + + + + 12 + + + + delegate + + + + 13 + + + + tableView + + + + 14 + + + + segmentedControlChanged: + + + 13 + + 15 + + + + segmentedControl + + + + 16 + @@ -142,17 +250,13 @@ YES - + + - 4 - - - - 5 @@ -167,6 +271,7 @@ YES + @@ -175,6 +280,21 @@ + + 9 + + + + + 10 + + + + + 11 + + + @@ -183,18 +303,22 @@ YES -1.CustomClassName -2.CustomClassName + 10.IBPluginDependency + 11.IBPluginDependency 2.IBEditorWindowLastContentRect 2.IBPluginDependency - 4.IBPluginDependency 5.IBPluginDependency 6.IBPluginDependency 7.IBPluginDependency + 9.IBPluginDependency YES AboutViewController UIResponder - {{932, 318}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + {{505, 182}, {429, 477}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -218,7 +342,7 @@ - 8 + 16 @@ -227,14 +351,67 @@ AboutViewController UIViewController - buttonPressed: - id + YES + + YES + buttonPressed: + segmentedControlChanged: + + + YES + id + id + - buttonPressed: - - buttonPressed: - id + YES + + YES + buttonPressed: + segmentedControlChanged: + + + YES + + buttonPressed: + id + + + segmentedControlChanged: + id + + + + + YES + + YES + segmentedControl + tableView + + + YES + UISegmentedControl + UITableView + + + + YES + + YES + segmentedControl + tableView + + + YES + + segmentedControl + UISegmentedControl + + + tableView + UITableView + @@ -367,11 +544,19 @@ - UILabel + UIControl UIView IBFrameworkSource - UIKit.framework/Headers/UILabel.h + UIKit.framework/Headers/UIControl.h + + + + UIImageView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIImageView.h @@ -393,6 +578,14 @@ + UIScrollView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIScrollView.h + + + UISearchBar UIView @@ -409,6 +602,22 @@ + UISegmentedControl + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UISegmentedControl.h + + + + UITableView + UIScrollView + + IBFrameworkSource + UIKit.framework/Headers/UITableView.h + + + UIView IBFrameworkSource @@ -474,6 +683,10 @@ YES ../Hedgewars.xcodeproj 3 + + background_small.png + {320, 436} + 117 diff -r 7056284fd97c -r 6e84339eefee project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Aug 29 16:55:58 2010 +0200 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Aug 29 23:36:22 2010 +0200 @@ -33,6 +33,7 @@ 611EE974122A9C4100DF6938 /* clickSound.wav in Resources */ = {isa = PBXBuildFile; fileRef = 611EE973122A9C4100DF6938 /* clickSound.wav */; }; 611EE9D9122AA10A00DF6938 /* backSound.wav in Resources */ = {isa = PBXBuildFile; fileRef = 611EE9D7122AA10A00DF6938 /* backSound.wav */; }; 611EE9DA122AA10A00DF6938 /* selSound.wav in Resources */ = {isa = PBXBuildFile; fileRef = 611EE9D8122AA10A00DF6938 /* selSound.wav */; }; + 611EEA7E122B09C200DF6938 /* background_small.png in Resources */ = {isa = PBXBuildFile; fileRef = 611EEA7D122B09C200DF6938 /* background_small.png */; }; 611F4D4B11B27A9900F9759A /* uScript.pas in Sources */ = {isa = PBXBuildFile; fileRef = 611F4D4A11B27A9900F9759A /* uScript.pas */; }; 61272334117DF764005B90CF /* libSDL_image.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61272333117DF752005B90CF /* libSDL_image.a */; }; 61272339117DF778005B90CF /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61272338117DF778005B90CF /* MobileCoreServices.framework */; }; @@ -116,13 +117,11 @@ 6183D83E11E2BCE200A88903 /* LI-ipad-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 6183D83C11E2BCE200A88903 /* LI-ipad-Landscape.png */; }; 6183D83F11E2BCE200A88903 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 6183D83D11E2BCE200A88903 /* Default.png */; }; 6187AEBD120781B900B31A27 /* Settings in Resources */ = {isa = PBXBuildFile; fileRef = 6187AEA5120781B900B31A27 /* Settings */; }; - 619C09EA11E8B8D600F1DF16 /* title_small.png in Resources */ = {isa = PBXBuildFile; fileRef = 619C09E911E8B8D600F1DF16 /* title_small.png */; }; 61A1188511683A8C00359010 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A117FE1168322700359010 /* CoreGraphics.framework */; settings = {ATTRIBUTES = (Required, ); }; }; 61A118D311683CD100359010 /* HedgewarsTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 611FD9CB1155A28C00C2203D /* HedgewarsTitle.png */; }; 61B3D71C11EA6F2700EC7420 /* uKeys.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987FE114AA34C00BA94A9 /* uKeys.pas */; }; 61C079E411F35A300072BF46 /* EditableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61C079E311F35A300072BF46 /* EditableCellView.m */; }; 61E1F4F811D004240016A5AA /* adler32.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61E1F4F711D004240016A5AA /* adler32.pas */; }; - 61EBA62911DFF2BC0048B68A /* bricks.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBA62711DFF2BC0048B68A /* bricks.png */; }; 61EBA62A11DFF2BC0048B68A /* title.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBA62811DFF2BC0048B68A /* title.png */; }; 61EBA62D11DFF3310048B68A /* backgroundAndTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBA62C11DFF3310048B68A /* backgroundAndTitle.png */; }; 61EBB1E41228920300C1784F /* bluebox-squeezed.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBB1E31228920300C1784F /* bluebox-squeezed.png */; }; @@ -143,16 +142,6 @@ 61F7A43C11E290650040BA66 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43511E290650040BA66 /* Icon.png */; }; 61F7A43D11E290650040BA66 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43611E290650040BA66 /* Icon@2x.png */; }; 61F7A43E11E290650040BA66 /* iTunesArtwork.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43711E290650040BA66 /* iTunesArtwork.png */; }; - 61F903EF11DF58550068B24D /* backgroundBottom.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E411DF58550068B24D /* backgroundBottom.png */; }; - 61F903F011DF58550068B24D /* backgroundCenter.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E511DF58550068B24D /* backgroundCenter.png */; }; - 61F903F111DF58550068B24D /* backgroundLeft.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E611DF58550068B24D /* backgroundLeft.png */; }; - 61F903F211DF58550068B24D /* backgroundRight.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E711DF58550068B24D /* backgroundRight.png */; }; - 61F903F311DF58550068B24D /* backgroundTop.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E811DF58550068B24D /* backgroundTop.png */; }; - 61F903F411DF58550068B24D /* borderBottom.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E911DF58550068B24D /* borderBottom.png */; }; - 61F903F511DF58550068B24D /* borderTop.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903EA11DF58550068B24D /* borderTop.png */; }; - 61F903F611DF58550068B24D /* networkButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903EB11DF58550068B24D /* networkButton.png */; }; - 61F903F711DF58550068B24D /* playButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903EC11DF58550068B24D /* playButton.png */; }; - 61F903F811DF58550068B24D /* storeButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903ED11DF58550068B24D /* storeButton.png */; }; 61F9040911DF58B00068B24D /* settingsButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040811DF58B00068B24D /* settingsButton.png */; }; 61F9040B11DF59370068B24D /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040A11DF59370068B24D /* background.png */; }; 61F9040E11DF59D10068B24D /* localplayButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040C11DF59D10068B24D /* localplayButton.png */; }; @@ -697,6 +686,7 @@ 611EE973122A9C4100DF6938 /* clickSound.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = clickSound.wav; path = Resources/clickSound.wav; sourceTree = ""; }; 611EE9D7122AA10A00DF6938 /* backSound.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = backSound.wav; path = Resources/backSound.wav; sourceTree = ""; }; 611EE9D8122AA10A00DF6938 /* selSound.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = selSound.wav; path = Resources/selSound.wav; sourceTree = ""; }; + 611EEA7D122B09C200DF6938 /* background_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background_small.png; path = Resources/Overlay/background_small.png; sourceTree = ""; }; 611F4D4A11B27A9900F9759A /* uScript.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uScript.pas; path = ../../hedgewars/uScript.pas; sourceTree = SOURCE_ROOT; }; 611FD9CB1155A28C00C2203D /* HedgewarsTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = HedgewarsTitle.png; path = ../../QTfrontend/res/HedgewarsTitle.png; sourceTree = SOURCE_ROOT; }; 6127232E117DF752005B90CF /* SDL_image.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_image.xcodeproj; path = "../../../Library/SDL-1.3/SDL_image/Xcode_iPhone/SDL_image.xcodeproj"; sourceTree = SOURCE_ROOT; }; @@ -826,7 +816,6 @@ 61C079E311F35A300072BF46 /* EditableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditableCellView.m; sourceTree = ""; }; 61C3255A1179A384001E70B1 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; 61E1F4F711D004240016A5AA /* adler32.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = adler32.pas; path = ../../hedgewars/adler32.pas; sourceTree = SOURCE_ROOT; }; - 61EBA62711DFF2BC0048B68A /* bricks.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bricks.png; path = "Resources/Frontend-iPad/bricks.png"; sourceTree = ""; }; 61EBA62811DFF2BC0048B68A /* title.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = title.png; path = "Resources/Frontend-iPad/title.png"; sourceTree = ""; }; 61EBA62C11DFF3310048B68A /* backgroundAndTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backgroundAndTitle.png; path = "Resources/Frontend-iPad/backgroundAndTitle.png"; sourceTree = ""; }; 61EBB1E31228920300C1784F /* bluebox-squeezed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bluebox-squeezed.png"; path = "Resources/Frontend-iPad/bluebox-squeezed.png"; sourceTree = ""; }; @@ -1241,6 +1230,7 @@ 61EF920611DF57AC003441C4 /* arrowLeft.png */, 61EF920711DF57AC003441C4 /* arrowRight.png */, 61EF920811DF57AC003441C4 /* arrowUp.png */, + 611EEA7D122B09C200DF6938 /* background_small.png */, 61EF920911DF57AC003441C4 /* joyButton_attack.png */, 61EF920A11DF57AC003441C4 /* joyButton_backjump.png */, 61EF920B11DF57AC003441C4 /* joyButton_forwardjump.png */, @@ -1290,7 +1280,6 @@ 615AD9EA1207654E00F2FF04 /* helpButton.png */, 615AD9E8120764CA00F2FF04 /* backButton.png */, 61F9043911DF64E20068B24D /* bluebox.png */, - 61EBA62711DFF2BC0048B68A /* bricks.png */, 61EBA62811DFF2BC0048B68A /* title.png */, 61F9040C11DF59D10068B24D /* localplayButton.png */, 61F9040D11DF59D10068B24D /* netplayButton.png */, @@ -1954,22 +1943,11 @@ 61EF921211DF57AC003441C4 /* joyButton_attack.png in Resources */, 61EF921311DF57AC003441C4 /* joyButton_backjump.png in Resources */, 61EF921411DF57AC003441C4 /* joyButton_forwardjump.png in Resources */, - 61F903EF11DF58550068B24D /* backgroundBottom.png in Resources */, - 61F903F011DF58550068B24D /* backgroundCenter.png in Resources */, - 61F903F111DF58550068B24D /* backgroundLeft.png in Resources */, - 61F903F211DF58550068B24D /* backgroundRight.png in Resources */, - 61F903F311DF58550068B24D /* backgroundTop.png in Resources */, - 61F903F411DF58550068B24D /* borderBottom.png in Resources */, - 61F903F511DF58550068B24D /* borderTop.png in Resources */, - 61F903F611DF58550068B24D /* networkButton.png in Resources */, - 61F903F711DF58550068B24D /* playButton.png in Resources */, - 61F903F811DF58550068B24D /* storeButton.png in Resources */, 61F9040911DF58B00068B24D /* settingsButton.png in Resources */, 61F9040B11DF59370068B24D /* background.png in Resources */, 61F9040E11DF59D10068B24D /* localplayButton.png in Resources */, 61F9040F11DF59D10068B24D /* netplayButton.png in Resources */, 61F9043A11DF64E20068B24D /* bluebox.png in Resources */, - 61EBA62911DFF2BC0048B68A /* bricks.png in Resources */, 61EBA62A11DFF2BC0048B68A /* title.png in Resources */, 61EBA62D11DFF3310048B68A /* backgroundAndTitle.png in Resources */, 61F7A43811E290650040BA66 /* Icon-72.png in Resources */, @@ -1981,7 +1959,6 @@ 61F7A43E11E290650040BA66 /* iTunesArtwork.png in Resources */, 6183D83E11E2BCE200A88903 /* LI-ipad-Landscape.png in Resources */, 6183D83F11E2BCE200A88903 /* Default.png in Resources */, - 619C09EA11E8B8D600F1DF16 /* title_small.png in Resources */, 6129B9F711EFB04D0017E305 /* denied.png in Resources */, 611E0EE711FB20610077A41E /* ammoButton.png in Resources */, 611E0EE811FB20610077A41E /* cornerButton.png in Resources */, @@ -1995,6 +1972,7 @@ 611EE974122A9C4100DF6938 /* clickSound.wav in Resources */, 611EE9D9122AA10A00DF6938 /* backSound.wav in Resources */, 611EE9DA122AA10A00DF6938 /* selSound.wav in Resources */, + 611EEA7E122B09C200DF6938 /* background_small.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff -r 7056284fd97c -r 6e84339eefee project_files/HedgewarsMobile/Resources/Overlay/background_small.png Binary file project_files/HedgewarsMobile/Resources/Overlay/background_small.png has changed diff -r 7056284fd97c -r 6e84339eefee project_files/HedgewarsMobile/Resources/Settings/credits.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Resources/Settings/credits.plist Sun Aug 29 23:36:22 2010 +0200 @@ -0,0 +1,114 @@ + + + + + + Andrey "UnC0Rr" Korotaev + Igor "Displacer" Ulyanov + Derek "Nemo" Pomery + Martin "Affect" Boze + David "Krawek" Cuadrado + Martin "Ttsmj" Minarik + Kristian "TheXception" Lehmann + Vittorio "Koda" Giovara + Mario "Smaxx" Liebisch + Carlos "Palewolf" Vives + Richard "Sheepluva" Korlyi + Henning "Prg" Kühn + + + Finn "Tiyuri" Brice + Joshua Frese + Stanko Tadić + Julien Koesten + Joshua O'Sullivan + Nils Luck + Trey Perry + + + Stephen "Armagon" Alexander + Finn "Tiyuri" Brice + Jonatan Nilsson + Daniel Martin + + + Romulo Fernandes Machado + Svetoslav Stefanov + Petr Řezáček + Jie Luo + Andrey Korotaev + Nina Kuisma + Antoine Turmel + Peter Hüwe, Mario Liebisch + Luca Bonora + Adam Etienne + Maciej Mroziński, Wojciech Latkowski, Maciej Górny + Fábio Canário + Andrey Korotaev + Jose Riha + Carlos Vives + Niklas Grahn + Eugene V. Lyubimkin + + + Aleksey Andreev + Aleksander Rudalev + Natasha Stafeeva + Adam Higerd + + + Engine, frontend, net server author + Desktop frontend improvements + Many engine and frontend improvements + Drillrocket, Ballgun, RC Plane weapons + Mine number and time game settings + Desktop frontend improvements + Desktop frontend improvements + Mac OS X and iPhone version + Gamepad support, OpenGL wizard + Many engine improvements and graphics + Many engine and server improvements + Maze maps + + + Main graphics and art director + + + + + + Some hats + + + Hedgehogs voice + + + + + + Brazilian Portuguese + Bulgarian + Czech + Chinese + English + Finnish + French + German + Italian + Japanese + Polish + Portuguese + Russian + Slovak + Spanish + Swedish + Ukrainian + + + + + + + + +