Advertisement
Guest User

Untitled

a guest
Jun 12th, 2012
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.93 KB | None | 0 0
  1. package com.olimoli123.fivesecondmania;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Random;
  5.  
  6. import org.cocos2d.actions.instant.CCCallFuncN;
  7. import org.cocos2d.actions.interval.CCMoveTo;
  8. import org.cocos2d.actions.interval.CCSequence;
  9. import org.cocos2d.layers.CCColorLayer;
  10. import org.cocos2d.layers.CCScene;
  11. import org.cocos2d.nodes.CCDirector;
  12. import org.cocos2d.nodes.CCSprite;
  13. import org.cocos2d.types.CGPoint;
  14. import org.cocos2d.types.CGRect;
  15. import org.cocos2d.types.CGSize;
  16. import org.cocos2d.types.ccColor4B;
  17.  
  18. import android.R.id;
  19. import android.app.Activity;
  20. import android.appwidget.AppWidgetManager;
  21. import android.content.Context;
  22. import android.content.Intent;
  23. import android.os.AsyncTask;
  24. import android.view.MotionEvent;
  25. import android.view.View;
  26. import android.widget.RemoteViews;
  27. import android.widget.TextView;
  28.  
  29. public class GameLayer extends CCColorLayer {
  30. protected ArrayList<CCSprite> _targets;
  31. protected ArrayList<CCSprite> _projectiles;
  32. protected int _projectilesDestroyed = 0;
  33. int times = 0;
  34. public int lives = 5;
  35. activity Activity = new activity();
  36. RemoteViews views = new RemoteViews("com.olimoli123.fivesecondmania", R.layout.main);
  37. public static CCScene scene()
  38. {
  39. CCScene scene = CCScene.node();
  40. CCDirector.sharedDirector().runWithScene(scene);
  41. CCColorLayer layer = new GameLayer(ccColor4B.ccc4(255, 255, 255, 255));
  42.  
  43. scene.addChild(layer);
  44.  
  45. return scene;
  46. }
  47. protected GameLayer(ccColor4B color)
  48. {
  49. super(color);
  50. CGSize winSize = CCDirector.sharedDirector().displaySize();
  51. CCSprite player = CCSprite.sprite("Player.png");
  52.  
  53. player.setPosition(CGPoint.ccp(player.getContentSize().width / 2.0f, winSize.height / 2.0f));
  54.  
  55. addChild(player);
  56. this.schedule("gameLogic", 1.0f);
  57. this.setIsTouchEnabled(true);
  58. _targets = new ArrayList<CCSprite>();
  59. _projectiles = new ArrayList<CCSprite>();
  60. this.schedule("update");
  61. }
  62.  
  63. protected void addTarget()
  64. {
  65. System.console().printf("Added Target");
  66. Random rand = new Random();
  67. CCSprite target = CCSprite.sprite("Target.png");
  68. // Determine where to spawn the target along the Y axis
  69. CGSize winSize = CCDirector.sharedDirector().displaySize();
  70. int minY = (int)(target.getContentSize().height / 2.0f);
  71. int maxY = (int)(winSize.height - target.getContentSize().height / 2.0f);
  72. int rangeY = maxY - minY;
  73. int actualY = rand.nextInt(rangeY) + minY;
  74.  
  75. // Create the target slightly off-screen along the right edge,
  76. // and along a random position along the Y axis as calculated above
  77. target.setPosition(CGPoint.ccp(winSize.width + (target.getContentSize().width / 2.0f) , actualY/ 1.0f));
  78. addChild(target);
  79.  
  80. target.setTag(1);
  81. _targets.add(target);
  82.  
  83. // Determine speed of the target
  84. int minDuration = 2;
  85. int maxDuration = 4;
  86. int rangeDuration = maxDuration - minDuration;
  87. int actualDuration = rand.nextInt(rangeDuration) + minDuration;
  88.  
  89. // Create the actions
  90. CCMoveTo actionMove = CCMoveTo.action(actualDuration, CGPoint.ccp(-target.getContentSize().width / 2.0f, actualY));
  91. CCCallFuncN actionMoveDone = CCCallFuncN.action(this, "spriteMoveFinished");
  92. CCSequence actions = CCSequence.actions(actionMove, actionMoveDone);
  93.  
  94. target.runAction(actions);
  95. }
  96. public RemoteViews updateLives(RemoteViews views, Context context)
  97. {
  98.  
  99. lives--;
  100. System.console().printf("Works like a famr");
  101. views.setTextViewText(R.id.label, Integer.toString(lives));
  102. AppWidgetManager manager = AppWidgetManager.getInstance(context);
  103. manager.updateAppWidget(R.id.label, views);
  104. return views;
  105.  
  106. }
  107. public void spriteMoveFinished(Object sender)
  108. {
  109. CCSprite sprite = (CCSprite)sender;
  110. this.removeChild(sprite, true);
  111. if (sprite.getTag() == 1)
  112. {
  113. _targets.remove(sprite);
  114. _projectilesDestroyed = 0;
  115. times++;
  116. updateLives(views, Activity);
  117.  
  118. if (times >4)
  119. {
  120.  
  121. CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("You have lost your base. :("));
  122. }
  123. else
  124. return;
  125. }
  126. else if (sprite.getTag() == 2)
  127. _projectiles.remove(sprite);
  128. }
  129.  
  130. public void gameLogic(float dt)
  131. {
  132. addTarget();
  133. }
  134. @Override
  135. public boolean ccTouchesEnded(MotionEvent event)
  136. {
  137. // Choose one of the touches to work with
  138. CGPoint location = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(event.getX(), event.getY()));
  139.  
  140. // Set up initial location of projectile
  141. CGSize winSize = CCDirector.sharedDirector().displaySize();
  142. CCSprite projectile = CCSprite.sprite("Projectile.png");
  143. projectile.setPosition(CGPoint.ccp(20, winSize.height / 2.0f));
  144. // Determine offset of location to projectile
  145. int offX = (int)(location.x - projectile.getPosition().x);
  146. int offY = (int)(location.y - projectile.getPosition().y);
  147.  
  148. // Bail out if we are shooting down or backwards
  149. if (offX <= 0)
  150. return true;
  151.  
  152. // Ok to add now - we've double checked position
  153. addChild(projectile);
  154. projectile.setTag(2);
  155. _projectiles.add(projectile);
  156. // Determine where we wish to shoot the projectile to
  157. int realX = (int)(winSize.width + (projectile.getContentSize().width / 2.0f));
  158. float ratio = (float)offY / (float)offX;
  159. int realY = (int)((realX * ratio) + projectile.getPosition().y);
  160. CGPoint realDest = CGPoint.ccp(realX, realY);
  161.  
  162. // Determine the length of how far we're shooting
  163. int offRealX = (int)(realX - projectile.getPosition().x);
  164. int offRealY = (int)(realY - projectile.getPosition().y);
  165. float length = (float)Math.sqrt((offRealX * offRealX) + (offRealY * offRealY));
  166. float velocity = 480.0f / 1.0f; // 480 pixels / 1 sec
  167. float realMoveDuration = length / velocity;
  168.  
  169. // Move projectile to actual endpoint
  170. projectile.runAction(CCSequence.actions(
  171. CCMoveTo.action(realMoveDuration, realDest),
  172. CCCallFuncN.action(this, "spriteMoveFinished")));
  173. return true;
  174. }
  175. public void update(float dt)
  176. {
  177.  
  178. ArrayList<CCSprite> projectilesToDelete = new ArrayList<CCSprite>();
  179.  
  180. for (CCSprite projectile : _projectiles)
  181. {
  182. CGRect projectileRect = CGRect.make(projectile.getPosition().x - (projectile.getContentSize().width / 2.0f),
  183. projectile.getPosition().y - (projectile.getContentSize().height / 2.0f),
  184. projectile.getContentSize().width,
  185. projectile.getContentSize().height);
  186.  
  187. ArrayList<CCSprite> targetsToDelete = new ArrayList<CCSprite>();
  188.  
  189. for (CCSprite target : _targets)
  190. {
  191.  
  192. CGRect targetRect = CGRect.make(target.getPosition().x - (target.getContentSize().width),
  193. target.getPosition().y - (target.getContentSize().height),
  194. target.getContentSize().width,
  195. target.getContentSize().height);
  196.  
  197. if (CGRect.intersects(projectileRect, targetRect))
  198. targetsToDelete.add(target);
  199. }
  200.  
  201. for (CCSprite target : targetsToDelete)
  202. {
  203. _targets.remove(target);
  204. removeChild(target, true);
  205. }
  206.  
  207. if (targetsToDelete.size() > 0)
  208. projectilesToDelete.add(projectile);
  209.  
  210. }
  211.  
  212. for (CCSprite projectile : projectilesToDelete)
  213. {
  214. _projectiles.remove(projectile);
  215. removeChild(projectile, true);
  216. if (++_projectilesDestroyed > 30)
  217. {
  218. _projectilesDestroyed = 0;
  219.  
  220. CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("You Win!"));
  221. }
  222. }
  223.  
  224. }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement