Sporepedia Mobile
Code: Sporepedia.pde Search.pde Download: Sporepedia.jad Sporepedia.jar Obfuscated: Sporepedia.jad Sporepedia.jar |
// Sporepedia Mobile
// by Francis Li
// http://www.francisli.com/
//
// Posted April 6, 2009
//
// This mobile sketch allows you to randomly browse the user generated
// creations in the Spore universe. Use the UP/DOWN/LEFT/RIGHT
// keys to get a new random Creature/Vehicle/UFO/Building and press
// the FIRE key to see the name and author.
//
// Download your own copy of the Spore Creature Creator now!
// http://www.spore.com/
//
import processing.phone.*;
import processing.xml.*;
import java.util.*;
Phone phone;
PClient client;
PFont font;
PImage highlight;
PImage[] icons;
StateMachine machine;
String username;
XMLParser parser;
String[] TYPES = {
"CREATURE", "UFO", "VEHICLE", "BUILDING" };
void setup() {
phone = new Phone(this);
phone.fullscreen();
client = new PClient(this, "www.spore.com");
parser = new XMLParser(this);
username = null;
font = loadFont(FACE_PROPORTIONAL, STYLE_BOLD, SIZE_LARGE);
highlight = loadImage("highlight.png");
icons = new PImage[4];
for (int i = 0; i < 4; i++) {
icons[i] = loadImage("icon" + i + ".png");
}
machine = new StateMachine();
machine.current = new Search(0);
framerate(20);
}
void draw() {
if (machine.draw() == null) {
exit();
}
}
void sleep() {
try {
//// release some cpu cycles for the background network thread
Thread.sleep(100);
}
catch (Exception e) {
}
}
void keyPressed() {
if (machine.keyPressed() == null) {
exit();
}
}
void libraryEvent(Object library, int event, Object data) {
if (machine.libraryEvent(library, event, data) == null) {
exit();
}
}
interface State {
State draw();
State keyPressed();
State libraryEvent(Object library, int event, Object data);
}
class StateMachine implements State {
State current;
StateMachine() {
}
State handleTransition(State next) {
if (next == null) {
return null;
}
current = next;
return this;
}
State draw() {
return handleTransition(current.draw());
}
State keyPressed() {
return handleTransition(current.keyPressed());
}
State libraryEvent(Object library, int event, Object data) {
return handleTransition(current.libraryEvent(library, event, data));
}
}
class Asset extends Hashtable {
PImage image;
}
int spinner;
void drawSpinner(int x, int y, int radius) {
fill(0xff0000ff);
noStroke();
int diameter;
for (int i = 7; i >= 0; i--) {
if (i == spinner) {
diameter = 14;
}
else {
diameter = 10;
}
ellipse(x + fptoi(mul(itofp(radius), cos(i * PI / 4))),
y + fptoi(mul(itofp(radius), sin(i * PI / 4))),
diameter,
diameter);
}
spinner = (spinner + 1) % 8;
}
|