[alienbloodbath commit] r74 - in trunk: . content_package content_package/Classic editor res/drawable res/values src/andr...

1 view
Skip to first unread message

codesite...@google.com

unread,
Mar 7, 2009, 7:04:00 PM3/7/09
to alien-blood-b...@googlegroups.com
Author: matt.burkhart
Date: Sat Mar 7 15:51:24 2009
New Revision: 74

Added:
trunk/content_package/Classic/ak47.png (contents, props changed)
trunk/content_package/Classic/ak47.weapon
trunk/src/android/com/abb/Projectile.java
Modified:
trunk/AndroidManifest.xml
trunk/content_package/Classic/hopper.enemy
trunk/content_package/Classic/level_0.txt
trunk/content_package/Classic/level_1.txt
trunk/content_package/misc.png
trunk/editor/editor.py
trunk/icon.svg
trunk/res/drawable/icon.png
trunk/res/values/strings.xml
trunk/src/android/com/abb/AlienBloodBathMain.java
trunk/src/android/com/abb/Avatar.java
trunk/src/android/com/abb/Blood.java
trunk/src/android/com/abb/Content.java
trunk/src/android/com/abb/Enemy.java
trunk/src/android/com/abb/Entity.java
trunk/src/android/com/abb/Fire.java
trunk/src/android/com/abb/Game.java
trunk/src/android/com/abb/GameState.java
trunk/src/android/com/abb/GameView.java
trunk/src/android/com/abb/Graphics.java
trunk/src/android/com/abb/Map.java
trunk/src/android/com/abb/Weapon.java

Log:
Many bug fixes and improvements. Adding life and ammo bar.

Modified: trunk/AndroidManifest.xml
==============================================================================
--- trunk/AndroidManifest.xml (original)
+++ trunk/AndroidManifest.xml Sat Mar 7 15:51:24 2009
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.com.abb"
- android:versionCode="3"
- android:versionName="1.1.0">
+ android:versionCode="4"
+ android:versionName="2.0.0">

<uses-permission android:name="android.permission.VIBRATE" />


Added: trunk/content_package/Classic/ak47.png
==============================================================================
Binary file. No diff available.

Added: trunk/content_package/Classic/ak47.weapon
==============================================================================
--- (empty file)
+++ trunk/content_package/Classic/ak47.weapon Sat Mar 7 15:51:24 2009
@@ -0,0 +1,15 @@
+sprite ak47.png
+ammo 25
+damage 0.1
+delay 0.15
+weapon_rect_left 0
+weapon_rect_top 0
+weapon_rect_right 57
+weapon_rect_bottom 18
+projectile_rect_left 4
+projectile_rect_top 31
+projectile_rect_right 16
+projectile_rect_bottom 37
+spread 0.05
+velocity 280
+vibration 15

Modified: trunk/content_package/Classic/hopper.enemy
==============================================================================
--- trunk/content_package/Classic/hopper.enemy (original)
+++ trunk/content_package/Classic/hopper.enemy Sat Mar 7 15:51:24 2009
@@ -1,5 +1,6 @@
-entity hopper.entity
-animation hopper.animation
-gravity 100
-life 1
-radius 20
+animation hopper.animation
+damage 0.4
+entity hopper.entity
+gravity 100
+life 0.4
+radius 28

Modified: trunk/content_package/Classic/level_0.txt
==============================================================================
--- trunk/content_package/Classic/level_0.txt (original)
+++ trunk/content_package/Classic/level_0.txt Sat Mar 7 15:51:24 2009
@@ -1,4 +1,5 @@

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccccccccccccccccccccccccccccccccccdaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaajaaaaaaaaaaajaaaaaaaajdaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaajaaaajaaaaaaajaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaajaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaajaaaaaaajadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaajaaaaaaaaajaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaajaaajaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaajadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaajaaaaaajaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagdaaaaaajaaajaaaaajaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaajaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagdaaaaaaaaaaaaaaaaaaaaaajaaajaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagbccccccbccccccccccccccccccccaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaidaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaidaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaidaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaanaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaadaaaaaaaaaaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaabccbccccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaadabccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaabccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaakbccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaabccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaagbccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabccccaaaaaaaaaaaaaajeffffffffaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabccccaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghaaaaaaabccccaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaagbccccaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaaaaaaabccccaaaaaaaaaaaabcdaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaabccccaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaabccccaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaefaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaadaaefaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaaaaaaadaaefaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaabcdaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaadaaaaefaaaaaaaccccccccccccccccccccccdaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaadaaaaefaaaaaaajaaajaajaajaajaaaaaajadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaefaaaaacccccccccccccccccccaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcccaahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaedaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccccccccccccaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaabcdaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccdaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffff
+52,51,"weapon=ak47.weapon"
54,41,"enemy=hopper.enemy"
62,42,"enemy=hopper.enemy"
64,51,"enemy=hopper.enemy"

Modified: trunk/content_package/Classic/level_1.txt
==============================================================================
--- trunk/content_package/Classic/level_1.txt (original)
+++ trunk/content_package/Classic/level_1.txt Sat Mar 7 15:51:24 2009
@@ -1,4 +1,5 @@

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakbccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaiaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaiabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaeffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaeffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaeffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaiaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaahaahaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaahaahaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaahaahaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahabccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+15,82,"weapon=ak47.weapon"
30,70,"enemy=hopper.enemy"
30,71,"enemy=hopper.enemy"
31,70,"enemy=hopper.enemy"

Modified: trunk/content_package/misc.png
==============================================================================
Binary files. No diff available.

Modified: trunk/editor/editor.py
==============================================================================
--- trunk/editor/editor.py (original)
+++ trunk/editor/editor.py Sat Mar 7 15:51:24 2009
@@ -162,7 +162,7 @@
def LoadBrushesMenu(self, widget):
file_path = self.ChooseOpenFile()
if file_path:
- self.LoadBrusheFromFile(file_path)
+ self.LoadBrushesFromFile(file_path)

def SaveLevelMenu(self, widget):
file_path = self.ChooseSaveFile()

Modified: trunk/icon.svg
==============================================================================
--- trunk/icon.svg (original)
+++ trunk/icon.svg Sat Mar 7 15:51:24 2009
@@ -9,139 +9,295 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="77.866684"
- height="77.866684"
+ width="60.054585"
+ height="62.390465"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.46"
- sodipodi:docname="button.svg"
+ sodipodi:docname="icon.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/burkhart/Desktop/button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
+ inkscape:export-filename="/home/burkhart/Desktop/icon.png"
+ inkscape:export-xdpi="96.529999"
+ inkscape:export-ydpi="96.529999"
version="1.0">
<sodipodi:namedview
id="base"
- pagecolor="#ffffff"
+ pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
- inkscape:pageopacity="0.0"
+ inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="9.2085798"
- inkscape:cx="185.65595"
- inkscape:cy="376.39301"
+ inkscape:zoom="4.5443396"
+ inkscape:cx="18.637266"
+ inkscape:cy="5.3161026"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
- inkscape:window-width="839"
- inkscape:window-height="1026"
- inkscape:window-x="89"
- inkscape:window-y="63" />
+ inkscape:window-width="999"
+ inkscape:window-height="987"
+ inkscape:window-x="37"
+ inkscape:window-y="133" />
<defs
id="defs4">
<linearGradient
- inkscape:collect="always"
- id="linearGradient3484">
+ id="linearGradient5259">
<stop
- style="stop-color:#800000;stop-opacity:1;"
+ style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
- id="stop3486" />
+ id="stop5261" />
<stop
- style="stop-color:#800000;stop-opacity:0;"
+ style="stop-color:#ffffff;stop-opacity:0.27808675;"
offset="1"
- id="stop3488" />
+ id="stop5263" />
</linearGradient>
<linearGradient
- inkscape:collect="always"
- id="linearGradient3306">
+ id="linearGradient5221">
<stop
- style="stop-color:#ffffff;stop-opacity:1;"
+ id="stop5223"
offset="0"
- id="stop3308" />
+ style="stop-color:#ffffff;stop-opacity:0.99110121;" />
<stop
- style="stop-color:#ffffff;stop-opacity:0;"
+ id="stop5225"
offset="1"
- id="stop3310" />
+ style="stop-color:#fffeff;stop-opacity:0.23470522;" />
</linearGradient>
<linearGradient
- inkscape:collect="always"
- id="linearGradient3293">
+ id="linearGradient5031">
<stop
style="stop-color:#c8c8c8;stop-opacity:1;"
offset="0"
- id="stop3295" />
+ id="stop5033" />
+ <stop
+ style="stop-color:#a9aaaa;stop-opacity:0.22135706;"
+ offset="1"
+ id="stop5035" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5025">
+ <stop
+ style="stop-color:#c8c8c8;stop-opacity:1;"
+ offset="0"
+ id="stop5027" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
- id="stop3297" />
+ id="stop5029" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3484"
+ inkscape:collect="always">
+ <stop
+ id="stop3486"
+ offset="0"
+ style="stop-color:#800000;stop-opacity:1;" />
+ <stop
+ id="stop3488"
+ offset="1"
+ style="stop-color:#800000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3306">
+ <stop
+ id="stop3308"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3310"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3293">
+ <stop
+ id="stop3295"
+ offset="0"
+ style="stop-color:#c8c8c8;stop-opacity:1;" />
+ <stop
+ id="stop3297"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3283">
<stop
- style="stop-color:#000000;stop-opacity:1;"
+ id="stop3285"
offset="0"
- id="stop3285" />
+ style="stop-color:#000000;stop-opacity:1;" />
<stop
- style="stop-color:#000000;stop-opacity:1;"
+ id="stop3287"
offset="1"
- id="stop3287" />
+ style="stop-color:#000000;stop-opacity:1;" />
</linearGradient>
<inkscape:perspective
+ id="perspective10"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3473" />
+ <filter
+ height="1.4011337"
+ y="-0.20056684"
+ width="1.3752735"
+ x="-0.18763675"
+ id="filter3644"
+ inkscape:collect="always">
+ <feGaussianBlur
+ id="feGaussianBlur3646"
+ stdDeviation="4.8888169"
+ inkscape:collect="always" />
+ </filter>
+ <inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
+ id="perspective2606" />
<linearGradient
inkscape:collect="always"
- xlink:href="#linearGradient3293"
- id="linearGradient3299"
- x1="253.70647"
- y1="358.6004"
- x2="253.70647"
- y2="389.62317"
- gradientUnits="userSpaceOnUse" />
+ xlink:href="#linearGradient3484"
+ id="linearGradient4069"
+ gradientUnits="userSpaceOnUse"
+ x1="306.34872"
+ y1="410.41904"
+ x2="268.32932"
+ y2="362.52921" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3306"
- id="linearGradient3316"
+ id="linearGradient4073"
gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6449885,0.1252405,9.0503352e-2,0.6033556,59.67261,113.67871)"
x1="269.42603"
y1="296.73862"
x2="269.42603"
y2="351.57248" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3293"
+ id="linearGradient4077"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6449885,0.1252405,9.0503352e-2,0.6033556,59.67261,113.67871)"
+ x1="253.70647"
+ y1="358.6004"
+ x2="253.70647"
+ y2="389.62317" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5025"
+ id="radialGradient4854"
+ cx="260.88733"
+ cy="348.04514"
+ fx="260.88733"
+ fy="348.04514"
+ r="27.687138"
+ gradientTransform="matrix(1,0,0,0.9810449,-1.7604318,9.4579355)"
+ gradientUnits="userSpaceOnUse" />
<inkscape:perspective
- id="perspective3473"
+ id="perspective4900"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4950"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5000"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5031"
+ id="radialGradient5021"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.9810449,0.3833718,7.817361)"
+ cx="260.88733"
+ cy="348.04514"
+ fx="260.88733"
+ fy="348.04514"
+ r="27.687138" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5221"
+ id="radialGradient5219"
+ cx="31.796875"
+ cy="23.984375"
+ fx="31.796875"
+ fy="23.984375"
+ r="26.296875"
+ gradientTransform="matrix(1,0,0,0.8704694,0,3.1067105)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5259"
+ id="radialGradient5257"
+ cx="261.93088"
+ cy="349.24576"
+ fx="261.93088"
+ fy="349.24576"
+ r="27.687138"
+ gradientTransform="matrix(1,0,0,0.9810449,-0.6601619,6.6199915)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5025"
+ id="radialGradient5265"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.9810449,-1.7604318,9.6779895)"
+ cx="260.88733"
+ cy="348.04514"
+ fx="260.88733"
+ fy="348.04514"
+ r="27.687138" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3293"
+ id="linearGradient5267"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6449885,0.1252405,9.0503352e-2,0.6033556,59.67261,113.67871)"
+ x1="253.70647"
+ y1="358.6004"
+ x2="253.70647"
+ y2="389.62317" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3306"
+ id="linearGradient5269"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6449885,0.1252405,9.0503352e-2,0.6033556,59.67261,113.67871)"
+ x1="269.42603"
+ y1="296.73862"
+ x2="269.42603"
+ y2="351.57248" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3484"
- id="linearGradient3490"
+ id="linearGradient5271"
+ gradientUnits="userSpaceOnUse"
x1="306.34872"
y1="410.41904"
x2="268.32932"
- y2="362.52921"
- gradientUnits="userSpaceOnUse" />
- <filter
- inkscape:collect="always"
- id="filter3644"
- x="-0.18763675"
- width="1.3752735"
- y="-0.20056684"
- height="1.4011337">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="4.8888169"
- id="feGaussianBlur3646" />
- </filter>
+ y2="362.52921" />
</defs>
<metadata
id="metadata7">
@@ -155,41 +311,51 @@
</rdf:RDF>
</metadata>
<g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
+ transform="translate(-228.90326,-322.08343)"
id="layer1"
- transform="translate(-218.24605,-304.03778)">
- <rect
-
style="fill:#c8c8c8;fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect3281"
- width="77.866684"
- height="77.866684"
- x="218.24605"
- y="304.03778"
- ry="11.332709" />
- <rect
- ry="11.332709"
- y="304.03778"
- x="218.24605"
- height="77.866684"
- width="77.866684"
- id="rect3291"
-
style="fill:url(#linearGradient3299);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
/>
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <path
+
style="fill:url(#radialGradient5257);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4"
+ d="M 239.51625,322.21513 L 275.97796,329.29508 C
279.78987,330.03525 283.3161,333.68073 283.88431,337.46879 L
288.88021,370.77478 C 289.44842,374.56284 286.83707,377.01655
283.02516,376.27638 L 246.56345,369.19643 C 242.75154,368.45626
239.2253,364.81078 238.6571,361.02272 L 233.6612,327.71673 C
233.09299,323.92867 235.70434,321.47496 239.51625,322.21513 z"
+ id="path5243" />
+ <path
+
style="fill:#c8c8c8;fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4"
+ d="M 234.83594,325.79089 L 271.29765,332.87084 C
275.10956,333.61101 278.63579,337.25649 279.204,341.04455 L
284.1999,374.35054 C 284.76811,378.1386 282.15676,380.59231
278.34485,379.85214 L 241.88314,372.77219 C 238.07123,372.03202
234.54499,368.38654 233.97679,364.59848 L 228.98089,331.29249 C
228.41268,327.50443 231.02403,325.05072 234.83594,325.79089 z"
+ id="rect3281" />
+ <path
+
style="fill:url(#radialGradient5265);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4"
+ d="M 237.37245,324.09527 L 273.83416,331.17522 C
277.64607,331.91539 281.1723,335.56087 281.74051,339.34893 L
286.73641,372.65492 C 287.30462,376.44298 284.69327,378.89669
280.88136,378.15652 L 244.41965,371.07657 C 240.60774,370.3364
237.0815,366.69092 236.5133,362.90286 L 231.5174,329.59687 C
230.94919,325.80881 233.56054,323.3551 237.37245,324.09527 z"
+ id="path4080" />
+ <path
+
style="fill:url(#linearGradient5267);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4"
+ d="M 234.83594,325.79089 L 271.29765,332.87084 C
275.10956,333.61101 278.63579,337.25649 279.204,341.04455 L
284.1999,374.35054 C 284.76811,378.1386 282.15676,380.59231
278.34485,379.85214 L 241.88314,372.77219 C 238.07123,372.03202
234.54499,368.38654 233.97679,364.59848 L 228.98089,331.29249 C
228.41268,327.50443 231.02403,325.05072 234.83594,325.79089 z"
+ id="rect3291" />
+ <path
+ id="rect3301"
+ d="M 234.85578,326.9991 C 230.47874,326.39099 229.26044,330.77877
230.72634,334.56296 C 230.88391,337.15673 231.11723,339.84714
234.25021,341.61759 C 248.69047,352.60104 267.6289,356.17967
279.31383,350.07492 C 277.86681,345.41875 279.77452,339.67009
274.53738,335.58293 C 269.91397,332.55697 264.84434,333.38478
260.0853,331.86142 C 251.6785,330.25496 243.24927,328.54142
234.85578,326.9991 z"
+
style="fill:url(#linearGradient5269);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
/>
<image
- y="320.65878"
- x="221.70648"
- id="image3475"
- height="70.580284"
- width="70.580284"
+ xlink:href="content_package/The_Second_Wave/hopper.png"

sodipodi:absref="/home/burkhart/programming/alienbloodbath/content_package/The_Second_Wave/hopper.png"
-
xlink:href="/home/burkhart/programming/alienbloodbath/content_package/The_Second_Wave/hopper.png"
/>
- <path
-
style="opacity:1;fill:url(#linearGradient3316);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 228.65625,306.09375 C 221.81211,306.50655 218.81554,314.40083
220.25,320.375 C 219.88031,324.75064 219.60847,329.26614 224.1875,331.25 C
244.61659,345.21341 274.00267,345.04485 294.125,330.75 C
292.92953,323.28102 297.35304,312.83501 289.96875,307.59375 C
283.31033,303.96063 275.01621,307.05427 267.78125,306.03125 C
254.74102,306.07551 241.6906,305.94442 228.65625,306.09375 z"
- id="rect3301" />
+ width="42.481647"
+ height="39.447327"
+ id="image3475"
+ x="191.30907"
+ y="304.26538"
+ transform="matrix(0.981665,0.1906146,0.1483405,0.9889363,0,0)" />
<path
-
style="fill:url(#linearGradient3490);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter3644)"
+ id="rect3479"
d="M 278.375,323.40625 C 253.65507,323.40625 233.59375,345.01926
233.59375,371.65625 C 233.59375,375.1754 233.96016,378.60057
234.625,381.90625 L 284.78125,381.90625 C 291.05957,381.90625
296.125,376.84083 296.125,370.5625 L 296.125,327.375 C 290.68296,324.83923
284.67799,323.40625 278.375,323.40625 z"
- id="rect3479" />
+
style="fill:url(#linearGradient5271);fill-opacity:1;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter3644)"
+
transform="matrix(0.6449885,0.1252405,9.0503352e-2,0.6033556,57.611229,111.06633)"
/>
+ <image
+ y="354.60986"
+ x="254.63361"
+ id="image5002"
+ height="23.73266"
+ width="30.023247"
+ sodipodi:absref="/home/burkhart/Desktop/blood_splatter.png"
+ xlink:href="/home/burkhart/Desktop/blood_splatter.png" />
</g>
</svg>

Modified: trunk/res/drawable/icon.png
==============================================================================
Binary files. No diff available.

Modified: trunk/res/values/strings.xml
==============================================================================
--- trunk/res/values/strings.xml (original)
+++ trunk/res/values/strings.xml Sat Mar 7 15:51:24 2009
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="app_name">Alien Blood Bath</string>
+ <string name="app_name">Alien Blood Bath 2</string>
</resources>

Modified: trunk/src/android/com/abb/AlienBloodBathMain.java
==============================================================================
--- trunk/src/android/com/abb/AlienBloodBathMain.java (original)
+++ trunk/src/android/com/abb/AlienBloodBathMain.java Sat Mar 7 15:51:24
2009
@@ -50,7 +50,7 @@
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0, kSelectMap, 0, "Load Map...").setIcon(R.drawable.load);
- menu.add(0, kDownloadMap, 0, "More
Maps...").setIcon(R.drawable.download);
+ //menu.add(0, kDownloadMap, 0, "More
Maps...").setIcon(R.drawable.download);
menu.add(0, kAbout, 0, "About...").setIcon(R.drawable.about);
return result;
}
@@ -105,5 +105,6 @@
private final String kAboutPage
= "http://code.google.com/p/alienbloodbath";
private final String kMapsPage = "http://abbserver.appspot.com";
private final int kSelectMap = 1;
- private final String kStartupMap = "content:///The_Second_Wave/";
+ private final String kStartupMap = "content:///Classic/";
+ //private final String kStartupMap = "content:///The_Second_Wave/";
}

Modified: trunk/src/android/com/abb/Avatar.java
==============================================================================
--- trunk/src/android/com/abb/Avatar.java (original)
+++ trunk/src/android/com/abb/Avatar.java Sat Mar 7 15:51:24 2009
@@ -13,6 +13,7 @@

import android.graphics.Matrix;
import android.graphics.Rect;
+import android.graphics.RectF;
import android.net.Uri;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -88,6 +89,7 @@
mCanvasWidth = graphics.getWidth();
mCanvasHeight = graphics.getHeight();

+ // Draw the articulated entity.
super.draw(graphics, center_x, center_y, zoom);

// The weapon must be drawn after the avatar's articulated entity. In
@@ -104,6 +106,27 @@
mWeapon.draw(graphics, center_x, center_y, zoom,
hand_lx, hand_ly, hand_rx, hand_ry);
}
+
+ // Draw the avatar life and ammo meters.
+ float meter_width = mCanvasWidth / 2.0f;
+ mRect.set(0, 0, 28, 13);
+ mRectF.set(0, 0, 28, 13);
+ graphics.drawImage(mGameState.misc_sprites, mRect, mRectF, false,
false);
+ if (life > 0.0f) {
+ float life_meter_width =
+ meter_width * life;
+ mRect.set(0, 16, 64, 20);
+ mRectF.set(30, 0, 30 + life_meter_width, 6);
+ graphics.drawImage(mGameState.misc_sprites, mRect, mRectF, false,
false);
+ }
+ if (mWeapon != null) {
+ float ammo_meter_width =
+ meter_width * mWeapon.getAmmo() / mWeapon.getMaxAmmo();
+ ammo_meter_width = Math.max(ammo_meter_width, 0.0f);
+ mRect.set(0, 23, 64, 27);
+ mRectF.set(30, 8, 30 + ammo_meter_width, 14);
+ graphics.drawImage(mGameState.misc_sprites, mRect, mRectF, false,
false);
+ }
}

public void setKeyState(int key_code, int state) {
@@ -128,7 +151,7 @@
int action = motion_event.getAction();
if (action == MotionEvent.ACTION_DOWN ||
action == MotionEvent.ACTION_MOVE) {
- // Handled below.
+ // This case handled below.
} else if (action == MotionEvent.ACTION_UP) {
setKeyState(kKeyLeft, 0);
setKeyState(kKeyRight, 0);
@@ -173,11 +196,19 @@
mWeapon = weapon;
}

+ void releaseWeapon() {
+ mWeapon = null;
+ }
+
private int mCanvasWidth;
private int mCanvasHeight;
private GameState mGameState;
public Weapon mWeapon;
- private float[] mArray9 = new float[9]; // To avoid allocations.
+
+ // To avoid allocations:
+ private float[] mArray9 = new float[9];
+ private Rect mRect = new Rect();
+ private RectF mRectF = new RectF();

private static final float kAirAcceleration = 40.0f;
private static final float kAnimationStopThreshold = 40.0f;
@@ -186,7 +217,7 @@
private static final float kGroundAcceleration = 700.0f;
private static final float kGroundAnimationSpeed = 1.0f / 1500.0f;
private static final float kGroundKineticFriction = 0.3f;
- private static final float kJumpVelocity = 250.0f;
+ private static final float kJumpVelocity = 275.0f;
private static final int kKeyLeft = KeyEvent.KEYCODE_A;
private static final int kKeyRight = KeyEvent.KEYCODE_S;
private static final int kKeyJump = KeyEvent.KEYCODE_K;

Modified: trunk/src/android/com/abb/Blood.java
==============================================================================
--- trunk/src/android/com/abb/Blood.java (original)
+++ trunk/src/android/com/abb/Blood.java Sat Mar 7 15:51:24 2009
@@ -29,7 +29,7 @@

mTimeRemaining -= time_step;
if (mTimeRemaining < 0) {
- alive = false; // Signal for deletion.
+ life = 0.0f; // Signal for deletion.
}
}


Modified: trunk/src/android/com/abb/Content.java
==============================================================================
--- trunk/src/android/com/abb/Content.java (original)
+++ trunk/src/android/com/abb/Content.java Sat Mar 7 15:51:24 2009
@@ -154,16 +154,14 @@
}
}

- static public String[] readFileTokens(String file_path) {
- // This method reads a splits an ASCII text file along any white space
- // boundaries.
+ static public String[] readFileAndSplit(String file_path, String split) {
try {
FileReader file_reader = new FileReader(new File(file_path));
ArrayList<Character> data_array = new ArrayList<Character>();
while (file_reader.ready()) {
data_array.add(new Character((char)file_reader.read()));
}
- String[] raw_tokens = (new
String(toPrimative(data_array))).split("\\s");
+ String[] raw_tokens = (new
String(toPrimative(data_array))).split(split);
ArrayList<String> tokens = new ArrayList<String>();
for (String token : raw_tokens) {
if (token.length() > 0) {
@@ -175,6 +173,18 @@
Assert.fail("Could not read file: " + file_path + ": " +
ex.toString());
}
return new String[0];
+ }
+
+ /** This method reads a splits an ASCII text file along any new line
+ * boundaries. */
+ static public String[] readFileLines(String file_path) {
+ return readFileAndSplit(file_path, "\\n");
+ }
+
+ /** This method reads a splits an ASCII text file along any white space
+ * boundaries. */
+ static public String[] readFileTokens(String file_path) {
+ return readFileAndSplit(file_path, "\\s");
}

/** Utility method to parse a set of key value tokens (as generated by

Modified: trunk/src/android/com/abb/Enemy.java
==============================================================================
--- trunk/src/android/com/abb/Enemy.java (original)
+++ trunk/src/android/com/abb/Enemy.java Sat Mar 7 15:51:24 2009
@@ -36,14 +36,15 @@

// If we have moved close enough to our target, mark it dead.
if (Math.abs(mTarget.x - x) < radius && Math.abs(mTarget.y - y) <
radius) {
- mTarget.alive = false;
+ mTarget.life -= mDamage;
+ life -= mDamage;
}

// If the target has moved far enough away from this entity, destroy
it.
// This may happen if the client leaves an enemy behind on the map. We
want
// to release resources allocated to it.
if (Math.abs(mTarget.x - x) > kRange || Math.abs(mTarget.y - y) >
kRange) {
- alive = false;
+ life = 0.0f;
}

// Always move the enemy towards the target. Set the acceleration and
sprite
@@ -68,6 +69,7 @@
// specified uri.
TreeMap<String, Object> parameters = new TreeMap<String, Object>();
parameters.put(kParameterAcceleration, new
Float(kDefaultAcceleration));
+ parameters.put(kParameterDamage, new Float(kDefaultDamage));
parameters.put(kParameterDrawingScale, new
Float(kDefaultDrawingScale));
parameters.put(kParameterAnimation, "none");
parameters.put(kParameterEntity, "none");
@@ -88,9 +90,10 @@
// Now that the user defined enemy parameters have been parsed and
merged,
// we can initialize the enemy instance state accordingly.
mAcceleration =
((Float)parameters.get(kParameterAcceleration)).floatValue();
+ mDamage = ((Float)parameters.get(kParameterDamage)).floatValue();

setDrawingScale(((Float)parameters.get(kParameterDrawingScale)).floatValue());
mGravity = ((Float)parameters.get(kParameterGravity)).floatValue();
- mLife = ((Float)parameters.get(kParameterLife)).floatValue();
+ life = ((Float)parameters.get(kParameterLife)).floatValue();
radius = ((Float)parameters.get(kParameterRadius)).floatValue();
String uri_string = uri.toString();
String base_uri_string = uri_string.substring(0,
uri_string.lastIndexOf("/"));
@@ -106,24 +109,27 @@
}

private float mAcceleration;
+ private float mDamage;
private float mGravity;
private float mJumpVelocity;
- private float mLife;
private Entity mTarget;

private static final float kDefaultAcceleration = 40.0f;
+ private static final float kDefaultDamage = 0.34f;
private static final float kDefaultDrawingScale = 1.0f;
private static final float kDefaultJumpVelocity = 100.0f;
private static final float kDefaultGravity = 100.0f;
private static final float kDefaultLife = 1.0f;
private static final float kDefaultRadius = 32.0f;
+ private static final float kRange = 1000.0f;
+
private static final String kParameterAcceleration = "acceleration";
private static final String kParameterAnimation = "animation";
+ private static final String kParameterDamage = "damage";
private static final String kParameterDrawingScale = "drawing_scale";
private static final String kParameterEntity = "entity";
private static final String kParameterJumpVelocity = "jump_velocity";
private static final String kParameterGravity = "gravity";
private static final String kParameterLife = "life";
private static final String kParameterRadius = "radius";
- private static final float kRange = 1000.0f;
}

Modified: trunk/src/android/com/abb/Entity.java
==============================================================================
--- trunk/src/android/com/abb/Entity.java (original)
+++ trunk/src/android/com/abb/Entity.java Sat Mar 7 15:51:24 2009
@@ -23,11 +23,11 @@
/** The Entity class is intended to be lowest level, drawable, physical
in-game
* object. */
public class Entity implements Cloneable {
- public boolean alive = true; // Should not be deleted from the game.
public boolean has_ground_contact;
- public float radius;
- public int sprite_image;
- public Rect sprite_rect;
+ public float life = 1.0f;
+ public float radius;
+ public int sprite_image;
+ public Rect sprite_rect;
public boolean sprite_flipped_horizontal;
public boolean sprite_flipped_vertical;


Modified: trunk/src/android/com/abb/Fire.java
==============================================================================
--- trunk/src/android/com/abb/Fire.java (original)
+++ trunk/src/android/com/abb/Fire.java Sat Mar 7 15:51:24 2009
@@ -16,7 +16,7 @@
import java.lang.Math;


-public class Fire extends Entity {
+public class Fire extends Projectile {
public Fire() {
super();
radius = kRadius;
@@ -35,7 +35,7 @@
sprite_rect.top = kSpriteBase + kSpriteHeight * rounded_frame;
sprite_rect.bottom = kSpriteBase + kSpriteHeight * (rounded_frame +
1);
} else {
- alive = false; // Signal for deletion.
+ life = 0.0f; // Signal for deletion.
}
}


Modified: trunk/src/android/com/abb/Game.java
==============================================================================
--- trunk/src/android/com/abb/Game.java (original)
+++ trunk/src/android/com/abb/Game.java Sat Mar 7 15:51:24 2009
@@ -23,6 +23,10 @@
void initializeGraphics(Graphics graphics);
void reset();

+ /** Method to retrieve text notifications from the game to display to the
+ * user. If no notifications are pending, null is returned. */
+ String getPendingNotification();
+
boolean onFrame(Graphics graphics, float time_step);
boolean onKeyDown(int key_code);
boolean onKeyUp(int key_code);

Modified: trunk/src/android/com/abb/GameState.java
==============================================================================
--- trunk/src/android/com/abb/GameState.java (original)
+++ trunk/src/android/com/abb/GameState.java Sat Mar 7 15:51:24 2009
@@ -24,6 +24,7 @@
import android.view.MotionEvent;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.Random;
import java.util.TreeMap;

@@ -34,7 +35,7 @@
public Map map = new Map(this);
public int misc_sprites;
public ArrayList<Entity> particles = new ArrayList<Entity>();
- public ArrayList<Entity> projectiles = new ArrayList<Entity>();
+ public ArrayList<Projectile> projectiles = new ArrayList<Projectile>();

public GameState(Context context) {
mContext = context;
@@ -43,7 +44,6 @@

public void initializeGraphics(Graphics graphics) {
avatar.loadFromUri(Uri.parse("content:///humanoid.entity"));
-
String misc_sprites_path =
Content.getTemporaryFilePath(Uri.parse("content:///misc.png"));
Bitmap misc_sprites_bitmap =
BitmapFactory.decodeFile(misc_sprites_path);
@@ -57,7 +57,8 @@
projectiles.clear();
enemies.clear();
avatar.stop();
- avatar.alive = true;
+ avatar.releaseWeapon();
+ avatar.life = 1.0f;
avatar.x = map.getStartingX();
avatar.y = map.getStartingY();
mViewX = mTargetViewX = avatar.x;
@@ -88,7 +89,7 @@
/** Run the game simulation for the specified amount of seconds. */
protected void stepGame(float time_step) {
// Update the view parameters.
- if (avatar.alive) {
+ if (avatar.life > 0.0f) {
if (!avatar.has_ground_contact) {
mTargetZoom = kAirZoom;
} else {
@@ -103,12 +104,13 @@
mViewY += (mTargetViewY - mViewY) * kViewSpeed * time_step;

// Step the avatar.
- if (avatar.alive) {
+ if (avatar.life > 0.0f) {
avatar.step(time_step);
map.collideEntity(avatar);
map.processTriggers(avatar);
if (Map.tileIsGoal(map.tileAt(avatar.x, avatar.y))) {
map.advanceLevel();
+ map.reload();
reset();
}
} else {
@@ -135,7 +137,7 @@
Enemy enemy = enemies.get(index);
enemy.step(time_step);
map.collideEntity(enemy);
- if (!enemy.alive) {
+ if (enemy.life <= 0.0f) {
vibrate(kEnemyDeathVibrateLength);
for (int n = 0; n < kBloodBathSize; n++) {
createBloodParticle(
@@ -149,16 +151,20 @@

// Step the projectiles and collide them against the enemies.
for (int index = 0; index < projectiles.size(); ++index) {
- Entity projectile = projectiles.get(index);
+ Projectile projectile = projectiles.get(index);
projectile.step(time_step);
+ projectile.life -= time_step;
for (int enemy_index = 0; enemy_index < enemies.size();
++enemy_index) {
Enemy enemy = enemies.get(enemy_index);
if (projectile.collidesWith(enemy)) {
- enemy.alive = false;
- projectile.alive = false;
+ createBloodParticle(
+ enemy.x, enemy.y, projectile.dx / 2.0f, projectile.dy /
2.0f);
+ projectile.life = 0.0f;
+ enemy.life -= projectile.damage;
+ break;
}
}
- if (!projectile.alive) {
+ if (projectile.life <= 0.0f) {
projectiles.remove(index);
}
}
@@ -167,7 +173,7 @@
for (int index = 0; index < particles.size(); ++index) {
Entity particle = particles.get(index);
particle.step(time_step);
- if (!particle.alive) {
+ if (particle.life <= 0.0f) {
particles.remove(index);
}
}
@@ -185,7 +191,7 @@
}

// Draw the avatar.
- if (avatar.alive) {
+ if (avatar.life > 0.0f) {
avatar.draw(graphics, mViewX, mViewY, mZoom);
}

@@ -200,6 +206,14 @@
}
}

+ synchronized public void addNotification(String notification) {
+ pending_notifications_.add(notification);
+ }
+
+ synchronized public String getPendingNotification() {
+ return pending_notifications_.poll();
+ }
+
public Entity createEnemyFromUri(Uri uri, float x, float y) {
Enemy enemy = mEnemyCache.get(uri);
if (enemy == null) {
@@ -234,17 +248,20 @@
weapon.loadFromUri(uri);
mWeaponCache.put(uri, weapon);
}
- return weapon;
+ return (Weapon)weapon.clone();
}

public void createProjectile(float x, float y, float dx, float dy,
+ float timeout, float damage,
int image_handle, Rect image_rect,
boolean sprite_flipped_horizontal) {
- Entity projectile = new Entity();
+ Projectile projectile = new Projectile();
projectile.x = x;
projectile.y = y;
projectile.dx = dx;
projectile.dy = dy;
+ projectile.life = timeout;
+ projectile.damage = damage;
projectile.sprite_image = image_handle;
projectile.sprite_rect = image_rect;
projectile.sprite_flipped_horizontal = sprite_flipped_horizontal;
@@ -253,13 +270,15 @@
}

public Entity createFireProjectile(float x, float y, float dx, float dy)
{
- Entity fire = new Fire();
+ Projectile fire = new Fire();
fire.sprite_image = misc_sprites;
fire.x = x;
fire.y = y;
fire.dx = dx;
fire.dy = dy;
- fire.ddy = -50.0f; // Slight "up draft".
+ fire.ddy = -50.0f; // Give fire a slight "up draft".
+ fire.life = 100.0f; // Let the fire class choose its own death.
+ fire.damage = 0.2f;
projectiles.add(fire);
return fire;
}
@@ -284,7 +303,7 @@
avatar.dy = saved_instance_state.getFloat("avatar.dy");
avatar.ddx = saved_instance_state.getFloat("avatar.ddx");
avatar.ddy = saved_instance_state.getFloat("avatar.ddy");
- avatar.alive = saved_instance_state.getBoolean("avatar.alive");
+ avatar.life = saved_instance_state.getFloat("avatar.life");
}

public Bundle saveStateBundle() {
@@ -305,13 +324,14 @@
saved_instance_state.putFloat("avatar.dy", avatar.dy);
saved_instance_state.putFloat("avatar.dx", avatar.ddx);
saved_instance_state.putFloat("avatar.dy", avatar.ddy);
- saved_instance_state.putBoolean("avatar.alive", avatar.alive);
+ saved_instance_state.putFloat("avatar.life", avatar.life);
return saved_instance_state;
}

private Context mContext;
private float mDeathTimer = kDeathTimer;
private TreeMap<Uri, Enemy> mEnemyCache = new TreeMap<Uri, Enemy>();
+ private LinkedList<String> pending_notifications_ = new
LinkedList<String>();
private Random mRandom = new Random();
private float mTargetViewX = 0.0f;
private float mTargetViewY = 0.0f;

Modified: trunk/src/android/com/abb/GameView.java
==============================================================================
--- trunk/src/android/com/abb/GameView.java (original)
+++ trunk/src/android/com/abb/GameView.java Sat Mar 7 15:51:24 2009
@@ -11,9 +11,14 @@

package android.com.abb;

+import android.app.AlertDialog;
+import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Debug;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
@@ -29,8 +34,11 @@

public class GameView extends SurfaceView implements
SurfaceHolder.Callback {
class GameThread extends Thread {
- public GameThread(Context context, SurfaceHolder surface_holder) {
+ public GameThread(Context context,
+ Handler handler,
+ SurfaceHolder surface_holder) {
mContext = context;
+ mHandler = handler;
mPaused = false;
mRunning = true;
mSurfaceHolder = surface_holder;
@@ -118,6 +126,14 @@
mGraphics.endFrame();
}
hideLoadingDialog();
+
+ // Display and block on any notifications from the game thread.
While
+ // the notification dialog is visible, the game continues to run.
+ String notification = mGame.getPendingNotification();
+ if (notification != null) {
+ mHandler.sendMessage(
+ mHandler.obtainMessage(kNotificationMessage, notification));
+ }
}
Log.d("GameThread::run", "Freeing graphics resources...");
mGraphics.destroy();
@@ -149,9 +165,14 @@
private Context mContext;
private Game mGame;
private Graphics mGraphics;
+ private Handler mHandler;
private boolean mPaused;
private boolean mRunning;
private SurfaceHolder mSurfaceHolder;
+ } // class GameThread
+
+ class GameViewHandler extends Handler {
+
}

public GameView(Context context, AttributeSet attrs) {
@@ -159,6 +180,21 @@
mContext = context;
getHolder().addCallback(this);
getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU);
+
+ /** Handle custom events and notifications generated from the game
+ * thread. */
+ mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ Log.d("GameView::Handler::handleMessage",
+ "Recived message: " + msg.what);
+ if (msg.what == kNotificationMessage) {
+ Builder dialog = new AlertDialog.Builder(mContext);
+ dialog.setMessage(((String)msg.obj) + " (Press back to
continue.)");
+ dialog.show();
+ }
+ }
+ };
}

public void setGame(Game game) {
@@ -223,7 +259,7 @@
getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU);

Assert.assertTrue(mGameThread == null);
- mGameThread = new GameThread(mContext, holder);
+ mGameThread = new GameThread(mContext, mHandler, holder);
mGameThread.setGame(mGame);
mGameThread.start();
mGameThreadStarted = true;
@@ -268,9 +304,11 @@
private Game mGame;
private GameThread mGameThread;
private boolean mGameThreadStarted = false;
+ private Handler mHandler;
private ProgressDialog mLoadingDialog;
private boolean mProfiling = false;

+ private static final int kNotificationMessage = 666;
private static final int kProfileKey = KeyEvent.KEYCODE_T;
private static final String kProfilePath = "abb.trace";
}

Modified: trunk/src/android/com/abb/Graphics.java
==============================================================================
--- trunk/src/android/com/abb/Graphics.java (original)
+++ trunk/src/android/com/abb/Graphics.java Sat Mar 7 15:51:24 2009
@@ -495,7 +495,7 @@
mGl.glDisable(GL10.GL_CULL_FACE);
mGl.glDisable(GL10.GL_DEPTH_TEST);
mGl.glEnable(GL10.GL_BLEND);
- mGl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ mGl.glClearColor(0.2f, 0.2f, 0.2f, 1.0f);
mGl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
mGl.glDisable(GL10.GL_ALPHA_TEST);
}

Modified: trunk/src/android/com/abb/Map.java
==============================================================================
--- trunk/src/android/com/abb/Map.java (original)
+++ trunk/src/android/com/abb/Map.java Sat Mar 7 15:51:24 2009
@@ -88,7 +88,7 @@
Assert.assertNotNull(
"Map::loadLevelFromFile: Invalid null argument.", file_path);

- String[] level_tokens = Content.readFileTokens(file_path);
+ String[] level_tokens = Content.readFileLines(file_path);
Assert.assertTrue("Level file empty.", level_tokens.length > 0);
char[] raw_tiles = level_tokens[0].toCharArray();
Assert.assertEquals("Invalid level tile count.",
@@ -206,7 +206,7 @@
}

public void collideEntity(Entity entity) {
- if (entity.radius <= 0) {
+ if (entity.radius <= 0.0f) {
return; // Collision disabled for this entity.
}

@@ -215,7 +215,7 @@
// Iterate through map tiles potentially intersecting the entity. The
// collision model used for entities and tiles are squares.
float half_tile_size = kTileSize / 2.0f;
- float radius = Math.max(entity.radius, half_tile_size);
+ float radius = entity.radius + kTileSize;
for (float x = entity.x - radius; x <= entity.x + radius; x +=
kTileSize) {
for (float y = entity.y - radius; y <= entity.y + radius; y +=
kTileSize) {
int tile_index = indexAt(x, y);
@@ -238,7 +238,7 @@
// Determine if a collision has occurred between the two squares.
float distance_x = entity.x - tile_x;
float distance_y = entity.y - tile_y;
- if (Math.abs(distance_x) > half_tile_size + entity.radius ||
+ if (Math.abs(distance_x) > half_tile_size + entity.radius &&
Math.abs(distance_y) > half_tile_size + entity.radius) {
continue; // No collision with this tile
}
@@ -257,7 +257,7 @@
}

if (tile_deadly) {
- entity.alive = false;
+ entity.life = 0.0f;
}
if (tile_exploadable) {
entity.dy = Math.min(entity.dy, -kExplosionStrength);
@@ -281,21 +281,21 @@
// Determine which edges have the least amount of overlap, these
will
// be the edges which are considered "in-collision".
if (Math.abs(distance_x) > Math.abs(distance_y)) { // Along
x-axis.
- if (distance_x > 0) { // Entity's left edge.
+ if (distance_x > 0.0f) { // Entity's left edge.
impact_normal_x = 1.0f;
impact_normal_y = 0.0f;
impact_distance = half_tile_size + entity.radius -
distance_x;
- } else { // Entity's right edge.
+ } else { // Entity's right edge.
impact_normal_x = -1.0f;
impact_normal_y = 0.0f;
impact_distance = half_tile_size + entity.radius +
distance_x;
}
} else { // Along
y-axis.
- if (distance_y > 0) { // Entity's top edge.
+ if (distance_y > 0.0f) { // Entity's top edge.
impact_normal_x = 0.0f;
impact_normal_y = 1.0f;
impact_distance = half_tile_size + entity.radius -
distance_y;
- } else { // Entity's bottom edge.
+ } else { // Entity's bottom edge.
impact_normal_x = 0.0f;
impact_normal_y = -1.0f;
impact_distance = half_tile_size + entity.radius +
distance_y;
@@ -308,7 +308,7 @@
// since we don't have any sense of entity mass.
float impact_magnitude =
-(impact_normal_x * entity.dx + impact_normal_y * entity.dy);
- if (impact_magnitude > 0) {
+ if (impact_magnitude >= 0.0f) {
entity.dx += impact_normal_x * impact_magnitude;
entity.dy += impact_normal_y * impact_magnitude;
entity.x += impact_normal_x * impact_distance;
@@ -400,6 +400,10 @@
Uri weapon_uri = Uri.withAppendedPath(mBaseUri,
trigger.substring(7));
Weapon weapon = mGameState.createWeaponFromUri(weapon_uri);
avatar.setWeapon(weapon);
+ mTriggers[tile_index] = null;
+ mTiles[tile_index] = 0;
+ } else if (trigger.startsWith("alert=")) {
+ mGameState.addNotification(trigger.substring(6));
mTriggers[tile_index] = null;
mTiles[tile_index] = 0;
}

Added: trunk/src/android/com/abb/Projectile.java
==============================================================================
--- (empty file)
+++ trunk/src/android/com/abb/Projectile.java Sat Mar 7 15:51:24 2009
@@ -0,0 +1,18 @@
+// Copyright 2008 and onwards Matthew Burkhart.
+//
+// This program is free software; you can redistribute it and/or modify it
under
+// the terms of the GNU General Public License as published by the Free
Software
+// Foundation; version 3 of the License.
+//
+// This program is distributed in the hope that it will be useful, but
WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+
+package android.com.abb;
+
+/** The Projectile class is used by all weapons to represent bullets, fire,
+ * etc. */
+public class Projectile extends Entity {
+ public float damage; // Damage applied by this projectile.
+}
\ No newline at end of file

Modified: trunk/src/android/com/abb/Weapon.java
==============================================================================
--- trunk/src/android/com/abb/Weapon.java (original)
+++ trunk/src/android/com/abb/Weapon.java Sat Mar 7 15:51:24 2009
@@ -38,6 +38,8 @@
// values letting the user override only a subset if desired within
the text
// resource at the specified uri.
TreeMap<String, Object> parameters = new TreeMap<String, Object>();
+ parameters.put(kParameterAmmo, new Integer(kDefaultAmmo));
+ parameters.put(kParameterDamage, new Float(kDefaultDamage));
parameters.put(kParameterDelay, new Float(kDefaultDelay));
parameters.put(kParameterProjectileRectBottom, new Integer(-1));
parameters.put(kParameterProjectileRectLeft, new Integer(-1));
@@ -45,6 +47,7 @@
parameters.put(kParameterProjectileRectTop, new Integer(-1));
parameters.put(kParameterSpread, new Float(kDefaultSpread));
parameters.put(kParameterSprite, "none");
+ parameters.put(kParameterTimeout, new Float(kDefaultTimeout));
parameters.put(kParameterWeaponRectBottom, new Integer(-1));
parameters.put(kParameterWeaponRectLeft, new Integer(-1));
parameters.put(kParameterWeaponRectRight, new Integer(-1));
@@ -76,8 +79,11 @@

// Now that the user defined weapon parameters have been parsed and
merged,
// we can initialize the weapon instance state accordingly.
+ mAmmo = ((Integer)parameters.get(kParameterAmmo)).intValue();
+ mDamage = ((Float)parameters.get(kParameterDamage)).floatValue();
mDelay = ((Float)parameters.get(kParameterDelay)).floatValue();
mSpread = ((Float)parameters.get(kParameterSpread)).floatValue();
+ mTimeout = ((Float)parameters.get(kParameterTimeout)).floatValue();
mVelocity = ((Float)parameters.get(kParameterVelocity)).floatValue();
mVibration = ((Integer)parameters.get(kParameterVibration)).intValue();
mSpriteUri = Uri.parse(base_uri_string +
(String)parameters.get(kParameterSprite));
@@ -97,6 +103,14 @@
mShooting = shooting;
}

+ public int getAmmo() {
+ return mAmmo;
+ }
+
+ public int getMaxAmmo() {
+ return mMaxAmmo;
+ }
+
@Override
public void step(float time_step) {
super.step(time_step);
@@ -104,7 +118,9 @@
// Update the shooting mechanism. The following is specialized for
running
// or standing on the ground versus jumping.
mCurrentDelay -= time_step;
- if (mShooting && mCurrentDelay < time_step && sprite_image != -1) {
+ if (mShooting && mCurrentDelay < time_step && sprite_image != -1 &&
+ mAmmo > 0) {
+ mAmmo -= 1;
mCurrentDelay = mDelay;
mPhase += 10.0f;

@@ -132,6 +148,7 @@

mGameState.createProjectile(x + x_offset, y + y_offset,
dx + dx_offset, dy + dy_offset,
+ mTimeout, mDamage,
sprite_image, mProjectileRect,
sprite_flipped_horizontal);

@@ -178,23 +195,32 @@
return super.clone();
}

+ private int mAmmo;
private float mCurrentDelay;
+ private float mDamage;
private float mDelay;
private static Matrix mDrawingMatrix = new Matrix();
private GameState mGameState; // Needed for projectile instantiation.
+ private int mMaxAmmo = 25;
private float mPhase;
private Rect mProjectileRect;
private boolean mShooting;
private float mSpread;
private Uri mSpriteUri;
+ private float mTimeout;
private float mVelocity;
private int mVibration;

+ private static final int kDefaultAmmo = 0;
+ private static final float kDefaultDamage = 0.0f;
private static final float kDefaultDelay = 0.2f; // Seconds between
shots.
private static final float kDefaultSpread = 15.0f * (float)Math.PI /
180.0f;
+ private static final float kDefaultTimeout = 1.0f; // Seconds.
private static final float kDefaultVelocity = 60.0f;
private static final int kDefaultVibration = 0;

+ private static final String kParameterAmmo = "ammo";
+ private static final String kParameterDamage = "damage";
private static final String kParameterDelay = "delay";
private static final String kParameterProjectileRectBottom
= "projectile_rect_bottom";
private static final String kParameterProjectileRectLeft
= "projectile_rect_left";
@@ -202,6 +228,7 @@
private static final String kParameterProjectileRectTop
= "projectile_rect_top";
private static final String kParameterSpread = "spread";
private static final String kParameterSprite = "sprite";
+ private static final String kParameterTimeout = "timeout";
private static final String kParameterWeaponRectBottom
= "weapon_rect_bottom";
private static final String kParameterWeaponRectLeft
= "weapon_rect_left";
private static final String kParameterWeaponRectRight
= "weapon_rect_right";
Reply all
Reply to author
Forward
0 new messages