Prototype of an absolutely insane game.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29952 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol
2009-04-05 21:56:46 +00:00
parent 7d33b63d40
commit 224ceba88f
4 changed files with 286 additions and 0 deletions
+1
View File
@@ -1,6 +1,7 @@
SubDir HAIKU_TOP src add-ons tracker ;
SubInclude HAIKU_TOP src add-ons tracker filetype ;
SubInclude HAIKU_TOP src add-ons tracker iconvader ;
SubInclude HAIKU_TOP src add-ons tracker opentargetfolder ;
SubInclude HAIKU_TOP src add-ons tracker mark_as ;
SubInclude HAIKU_TOP src add-ons tracker zipomatic ;
+152
View File
@@ -0,0 +1,152 @@
/*
* Copyright 2006, Axel Dörfler, [email protected]. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#include <Alert.h>
#include <Messenger.h>
#include <Roster.h>
#include <View.h>
#include "PoseView.h"
static void Error(BView *view, status_t status, bool unlock=false)
{
BAlert *alert;
if (view && unlock)
view->UnlockLooper();
BString s(strerror(status));
alert = new BAlert("Error", s.String(), "Ok");
alert->Go();
}
/*!
\brief Tracker add-on entry
*/
extern "C" void
process_refs(entry_ref dir, BMessage* refs, void* /*reserved*/)
{
status_t status;
BAlert *alert;
BMessenger msgr;
BPoseView *view = NULL;
BMessage poseViewBackup;
BMessage poseViewColumnBackup;
uint32 poseViewModeBackup;
BString windowTitleBackup;
refs->PrintToStream();
status = refs->FindMessenger("TrackerViewToken", &msgr);
if (status < B_OK) {
Error(view, status);
return;
}
status = B_ERROR;
if (!msgr.LockTarget()) {
Error(view, status);
return;
}
status = B_BAD_HANDLER;
view = dynamic_cast<BPoseView *>(msgr.Target(NULL));
if (!view) {
Error(view, status);
return;
}
if (dynamic_cast<BWindow *>(view->Looper()) == NULL) {
Error(view, status, true);
return;
}
windowTitleBackup = view->Window()->Title();
view->SaveColumnState(poseViewColumnBackup);
view->SaveState(poseViewBackup);
view->SetDragEnabled(false);
view->SetSelectionRectEnabled(false);
view->SetPoseEditing(false);
poseViewModeBackup = view->ViewMode();
view->SetViewMode(kIconMode);
view->ShowBarberPole();
view->UnlockLooper();
//alert = new BAlert("Error", "Plop", "Ok");
//alert->Go();
int32 score = 0;
int32 count = 300;
while (count--) {
status = B_ERROR;
if (!msgr.LockTarget()) {
Error(view, status);
return;
}
BPose *pose;
for (int32 i = 0; (pose = view->PoseAtIndex(i)); i++) {
if (pose->IsSelected()) {
score++;
pose->Select(false);
}
BPoint location = pose->Location();
location.x += ((rand() % 20) - 10);
location.y += ((rand() % 20) - 10);
pose->SetLocation(location);
}
view->CheckPoseVisibility();
view->Invalidate();
BString str("Score: ");
str << score;
view->Window()->SetTitle(str.String());
view->UnlockLooper();
snooze(100000);
}
status = B_ERROR;
if (!msgr.LockTarget()) {
Error(view, status);
return;
}
/*
status = B_BAD_HANDLER;
view = dynamic_cast<BPoseView *>(msgr.Target(NULL));
if (!view)
goto err1;
*/
view->HideBarberPole();
view->SetViewMode(poseViewModeBackup);
view->RestoreState(poseViewBackup);
view->RestoreColumnState(poseViewColumnBackup);
view->Window()->SetTitle(windowTitleBackup.String());
/*
BMessage('_RRC') {
TrackerViewToken = BMessenger(port=32004, team=591, target=direct:0x131)
} */
//be_roster->Launch("application/x-vnd.haiku-filetypes", refs);
view->UnlockLooper();
return;
}
@@ -0,0 +1,111 @@
/*
* FileType.rdef
*/
// The FileType add-on has no app signature as it is no standalone application
//resource app_signature "application/x-vnd.Haiku-FileType";
//resource app_flags B_MULTIPLE_LAUNCH;
resource file_types message {
"types" = "application/x-vnd.Be-directory"
};
resource app_version {
major = 1,
middle = 0,
minor = 0,
/* 0 = development 1 = alpha 2 = beta
3 = gamma 4 = golden master 5 = final */
variety = 0,
internal = 1,
short_info = "IconVader",
long_info = "IconVader, Copyright 2009 Haiku Inc."
};
#ifdef HAIKU_TARGET_PLATFORM_HAIKU
resource vector_icon {
$"6E6369660C0500040169020006023CADF43D104EBF02CA3EA2224BF02046648D"
$"00FFDB97FFFCAF29020006023A6496BA3F153EBCDD3EEA91492CB5C09D5100FF"
$"F7EAFEFDD17B020006023AB3673751B2BC59783FD2D74C71F846F85900C85805"
$"FFF06306020106033AC71C0000000000003AB6DB4A6A0045300000F2F2F2FFBC"
$"A184AB7D7A7A02000602388A280000000000004000004AF00000000000C85804"
$"FFDC952F020006023B37D13A0397BB629E3CB4584A3EDF4A1E9400C6D7F5FF6B"
$"94DD020006023C71E33A0C78BA15E43C7D214B02AA49855700E3EDFFFF9EC2FF"
$"0200060239AB92381275BA365C3BEB2A4B2A844A9A5F00003CB0FF2C62D00200"
$"06033AC7B03884E3B903663B534D48B61F4958AE00FCFFDC7FF8F0BCFFF4DC8A"
$"020006023A7061B88A6E3B1AAE3CFAD946AC4F48C79100000000FFA9A06E130A"
$"053E303E4452445232452C0A043E303E444C444C360A063E304C3652324630C3"
$"BBB893452C0A044C44524452324C36020448224B22452242284225422B482E45"
$"2E4B2E4E284E2B4E250605E2024A60505A5660506054604C584A0A0346305232"
$"4A2E0A063A443A564A5E56535642463C0A043A443A564A5E4A4B0A043A444A4B"
$"5642463C0A044A4B4A5E565356420604AE342D223822382C4632524247080233"
$"33273B080231BCA9B6AFBEB40802BC10BCA92B40080237BDE8B821C0BF0802BC"
$"1DBF66B8A0C1D708023BBFF3304808023B44BA12C42E100A010105000A00010B"
$"1815FF01178400040A00010B18001501178500040A0A010B000A0B070E0D0C10"
$"0F12111815FF01178100040A0001001001178400040A020101000A030102000A"
$"040103000A060106000A0001041001178400040A050104000A00010710011784"
$"00040A070108000A09010A000A08010900"
};
#else // HAIKU_TARGET_PLATFORM_HAIKU
resource large_icon array {
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02020008FFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B17110802FFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B3F3F1B150800FFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF021B3F3F1B150A00FFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFF003F00FFFFFFFFFF04151B1B17110800FFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFF003FFD00FFFFFFFFFF02081515150A0800FFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFF003FFDFDFD00FFFFFF00F9000A0A080A00FFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFF003FFDFDFDFD00FFFF003FF97D000000007D0000FFFFFFFFFFFFFF"
$"FFFFFFFF003FFDFDFDFDFDFD00FF00F93F3F7D7D7D7D7D7DF900FFFFFFFFFFFF"
$"FFFFFF003FFDFDFDFD62FDFD00FF00F9F9F93F3FF9F9F9F97D00FFFFFFFFFFFF"
$"FFFF003FFEFDFDFD62FDFDFDFA0000F9F9F9F9F93F3FF97D7D00FFFFFFFFFFFF"
$"FF003FFEFEFDFD89FDFDFDFDFA0000F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF"
$"003FFEFEFEFDB0FD62FD62FDFAFA00F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF"
$"FF003FFEFEB0FD89FD62FD62FAFA00F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF"
$"FF003FFEB0FDB0FDB0FD62FAFAFAFA00F9F90000F9F97D7D7D00FFFFFFFFFFFF"
$"FFFF003FFEB0FDB0FDB0FDFAFA62FA000000606000007D7D7D00FFFFFFFFFFFF"
$"FFFF003FFEFDFDFD89FD62FD62FAFAFA00606060606000007D00FFFFFFFFFFFF"
$"FFFFFF003FFDFDB0FD89FD62FAFAFA0060606060606060600000FFFFFFFFFFFF"
$"FFFFFF003FFDFDFDB0FD89FAFAFA00606060606060606060606000FFFFFFFFFF"
$"FFFFFFFF003FFDB0FDB0FDFDFA006060606060606060606060D5000EFFFFFFFF"
$"FFFFFFFF003FFDFDB0FDFDFD003F60606060606060606060D5D5000EFFFFFFFF"
$"FFFFFFFFFF003FFDFDFDFDFD00AC3F3F60606060606060D5D5D5000E0E0EFFFF"
$"FFFFFFFFFF003FFDFDFDFDFD00ACACAC3F3F60606060D5D5D5D5000E0E0E0E0E"
$"FFFFFFFFFFFF003FFDFDFD0000ACACACACAC3F3F60D5D5D5D5D5000E0E0E0E0E"
$"FFFFFFFFFFFF003FFDFD000E00ACACACACACACACD5D5D5D5D5D5000E0E0E0EFF"
$"FFFFFFFFFFFFFF00FD000E0E00ACACACACACACACD5D5D5D5D5D5000E0E0EFFFF"
$"FFFFFFFFFFFFFFFF000E0E0E00ACACACACACACACD5D5D5D5D5000E0E0EFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFFFF00ACACACACACACACD5D5D5D5000E0E0EFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFFFFFF0000ACACACACACD5D5D5000E0E0EFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000ACACACD5D5000E0E0EFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000ACD5000E0E0EFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000E0E0EFFFFFFFFFFFFFFFF"
};
resource mini_icon array {
$"FFFFFFFFFFFFFFFF020200FFFFFFFFFF"
$"FFFFFFFFFFFFFF04151E1500FFFFFFFF"
$"FFFFFFFFFFFFFF021D1E1C00FFFFFFFF"
$"FFFFFFFF00FFFF00151B1600FFFFFFFF"
$"FFFFFF003F0000FA0000000000FFFFFF"
$"FFFF003FFD0000F9F9FAFAFAFA00FFFF"
$"FF003FFEFDFD00F9F9F9F97D7D00FFFF"
$"003F62FE89FD00F9F9F900007D00FFFF"
$"FF003FB0FD89FA00F90060600000FFFF"
$"FF003FFEB0FD620000606060606000FF"
$"FFFF003FFD89FA003F3F606060D500FF"
$"FFFF003FFDFDFA00ACAC3F3FD5D5000E"
$"FFFFFF003FFD0000ACACACACD5D5000E"
$"FFFFFF003F000E00ACACACACD5D5000E"
$"FFFFFFFF000E0E0E0000ACACD5000E0E"
$"FFFFFFFFFFFFFFFFFFFF0000000E0EFF"
};
#endif // HAIKU_TARGET_PLATFORM_HAIKU
+22
View File
@@ -0,0 +1,22 @@
SubDir HAIKU_TOP src add-ons tracker iconvader ;
SetSubDirSupportedPlatformsBeOSCompatible ;
if $(TARGET_PLATFORM_HAIKU_COMPATIBLE) {
UseHeaders [ FDirName $(HAIKU_TOP) src kits tracker ] : true ;
UsePrivateHeaders tracker ;
} else {
# private, for testing...
SubDirC++Flags -I/work/zeta/src/cebit/os/zeta/system/lib/tracker ;
SubDirC++Flags -I/work/zeta/src/cebit/headers_p/tracker ;
SubDirC++Flags -I/work/zeta/src/cebit/headers_p ;
}
# TODO: does not seem to work:
AddResources IconVader : IconVader.rdef ;
Addon IconVader :
IconVader.cpp
: be tracker
;