Java Examples for worm.entities.Capacitor
The following java examples will help you to understand the usage of worm.entities.Capacitor. These source code samples are taken from different open source projects.
Example 1
Project: titans-master File: WormGameState.java View source code |
/** * Check for clicking and set the mouse pointer to the right animation for whatever's going on */ private void checkMouse() { if (GameScreen.getInstance().isBlocked()) { return; } if (GameScreen.isSomethingElseGrabbingMouse()) { return; } // Ignore mouse on active areas, unless grabbed int mouseX = GameScreen.getInstance().getMouseX(); int mouseY = GameScreen.getInstance().getMouseY(); List<Area> areasUnderMouse = GameScreen.getInstance().getAreasUnder(mouseX, mouseY); if (GameScreen.getInstance().getGrabbed() == null) { for (Area area : areasUnderMouse) { if (area.isFocusable()) { if (buildEntity != null) { buildEntity.setVisible(false); } Worm.setMouseAppearance(Res.getMousePointer()); return; } } } if (buildEntity != null && !buildEntity.isVisible()) { buildEntity.setVisible(true); } float x = mouseX - GameScreen.getSpriteOffset().getX(); float y = mouseY - GameScreen.getSpriteOffset().getY(); int n = entities.size(); Entity hovered = null; if (clicked == null) { clicked = new ArrayList<Entity>(8); } else { clicked.clear(); } for (int i = 0; i < n; i++) { Entity entity = entities.get(i); if (entity.isTouching(x, y)) { if (entity.isClickable()) { clicked.add(entity); hovered = entity; } else if (hovered == null && entity.isHoverable()) { hovered = entity; } } } // Check range of capacitors capacitorRange = false; TEMP_CAPACITORS.clear(); for (int i = 0; i < buildings.size(); i++) { Building b = buildings.get(i); if (b.isAlive() && b instanceof Capacitor) { Capacitor capacitor = (Capacitor) b; if (b.getDistanceTo(x, y) <= capacitor.getZapRadius()) { capacitorRange = true; TEMP_CAPACITORS.add(capacitor); } } } if (mode == Mode.MODE_BUILD) { buildEntity.setLocation(quantize(x - building.getBounds().getX() - building.getBounds().getWidth() / 2 + MAP_RESOLUTION / 2), quantize(y - building.getBounds().getY() - building.getBounds().getHeight() / 2 + MAP_RESOLUTION / 2)); } boolean auxDown = false; int count = Mouse.getButtonCount(); for (int i = 2; i < count; i++) { if (Mouse.isButtonDown(i)) { auxDown = true; break; } } if (Mouse.isButtonDown(0)) { if (waitForMouse) { return; } GameScreen.onMapGrabbedMouse(true); switch(mode) { case Mode.MODE_SELL: case Mode.MODE_NORMAL: case Mode.MODE_BUILD: case Mode.MODE_DRAG: // we enter zap mode. If we're outside capacitor range, we set "no click" mode. if (clicked.size() > 0) { if (leftMouseWasDown) { // But we're in "no click" mode... return; } // Ok, enter no click mode if (mode != Mode.MODE_DRAG) { leftMouseWasDown = true; } // Hovering over something. Pick the first one and let that decide what mouse pointer to use. Worm.setMouseAppearance(clicked.get(0).getMousePointer(true)); boolean fire = false, maybeSelect = false; for (Iterator<Entity> i = clicked.iterator(); i.hasNext(); ) { Entity clickable = i.next(); switch(clickable.onClicked(mode)) { case ClickAction.IGNORE: maybeSelect = true; continue; case ClickAction.DRAG: // Allow dragging over factories & turrets. Unless in build mode. if (mode == Mode.MODE_BUILD) { waitForMouse = true; leftMouseWasDown = true; } else { mode = Mode.MODE_DRAG; leftMouseWasDown = false; } return; case ClickAction.CONSUME: if (mode == Mode.MODE_SELL) { // Allow drag leftMouseWasDown = false; waitForMouse = false; } else { waitForMouse = true; leftMouseWasDown = true; } return; case ClickAction.FIRE: if (mode == Mode.MODE_NORMAL) { fire = true; } else { // Build or drag mode; don't zap } break; } } if (!fire && mode == Mode.MODE_NORMAL) { if (maybeSelect) { mode = Mode.MODE_SCROLL; Worm.setMouseAppearance(Res.getMousePointerGrab()); scrollOriginX = mouseX; scrollOriginY = mouseY; } return; } } else { if (mode == Mode.MODE_DRAG) { Worm.setMouseAppearance(Res.getMousePointer()); } } if (mode == Mode.MODE_DRAG || mode == Mode.MODE_SELL || mode == Mode.MODE_SCROLL || mode == Mode.MODE_SELECT) { return; } if (mode == Mode.MODE_BUILD) { build(); break; } if (!capacitorRange) { leftMouseWasDown = true; Worm.setMouseAppearance(Res.getMousePointer()); if (mode == Mode.MODE_NORMAL) { // Go into scroll mode mode = Mode.MODE_SCROLL; scrollOriginX = mouseX; scrollOriginY = mouseY; leftMouseWasDown = true; Worm.setMouseAppearance(Res.getMousePointerGrab()); } return; } else { leftMouseWasDown = true; mode = Mode.MODE_ZAP; armedCapacitors.clear(); armedCapacitors.addAll(TEMP_CAPACITORS); } case Mode.MODE_ZAP: // fire. Otherwise do nothing. for (int i = 0; i < armedCapacitors.size(); i++) { Capacitor capacitor = armedCapacitors.get(i); if (capacitor.isAlive()) { capacitor.zap(x, y); } } if (armedCapacitors.size() == 0) { mode = Mode.MODE_NORMAL; } if (clicked.size() > 0) { Worm.setMouseAppearance(clicked.get(0).getMousePointer(true)); } else if (isBezerk()) { Worm.setMouseAppearance(capacitorRange ? Res.getMousePointerBezerkOffTarget() : Res.getMousePointerBezerkOutOfRange()); } else { Worm.setMouseAppearance(capacitorRange ? Res.getMousePointerOffTarget() : Res.getMousePointerOutOfRange()); } break; case Mode.MODE_SMARTBOMB: // Boooooooooom! Smartbomb bomb = new Smartbomb(x, y); bomb.spawn(GameScreen.getInstance()); mode = Mode.MODE_NORMAL; // That'll probably change immediately next frame Worm.setMouseAppearance(Res.getMousePointerOffTarget()); waitForMouse = true; if (metaState.addStat(Stats.SMARTBOMBS_USED, 1) == 5) { awardMedal(Medals.THE_ONLY_WAY_TO_BE_SURE); } break; case Mode.MODE_SCROLL: // Scroll the screen around under the mouse int dx = scrollOriginX - mouseX; int dy = scrollOriginY - mouseY; scrollOriginX = mouseX; scrollOriginY = mouseY; GameScreen.getInstance().scroll(dx * MOUSE_DRAG_SPEED, dy * MOUSE_DRAG_SPEED); break; case Mode.MODE_SELECT: // Do nothing return; default: assert false; } } else if (auxDown) { // Sell! GameScreen.onMapGrabbedMouse(true); for (Iterator<Entity> i = clicked.iterator(); i.hasNext(); ) { Entity entity = i.next(); if (entity instanceof Building) { Building building = (Building) entity; if (building.canSell()) { sell(building); } } } } else { GameScreen.onMapGrabbedMouse(false); boolean rmbDown = Mouse.getButtonCount() > 1 && Mouse.isButtonDown(1) || Game.wasKeyPressed(Keyboard.KEY_ESCAPE); if (rmbDown) { if (waitForMouse) { return; } if (!rightMouseWasDown) { scrollOriginX = mouseX; scrollOriginY = mouseY; rmbDragSensor = 0; } leftMouseWasDown = false; rightMouseWasDown = true; int dx = scrollOriginX - mouseX; int dy = scrollOriginY - mouseY; scrollOriginX = mouseX; scrollOriginY = mouseY; if (dx != 0 || dy != 0) { rmbDragSensor++; if (rmbDragSensor > RMB_DRAG_SENSITIVITY) { GameScreen.getInstance().scroll(dx * MOUSE_DRAG_SPEED, dy * MOUSE_DRAG_SPEED); rmbScroll = true; Worm.setMouseAppearance(Res.getMousePointerGrab()); } } } else { if (rightMouseWasDown && !rmbScroll) { // It was a RMB click. Cancel building / selling / blowing stuff up. Or pick up whatever building is under the mouse to build. switch(mode) { case Mode.MODE_BUILD: setBuilding(null); rightMouseWasDown = false; return; case Mode.MODE_SELL: setSellMode(false); rightMouseWasDown = false; return; case Mode.MODE_DRAG: case Mode.MODE_NORMAL: case Mode.MODE_SELECT: case Mode.MODE_ZAP: for (Iterator<Entity> i = clicked.iterator(); i.hasNext(); ) { Entity clickable = i.next(); if (clickable instanceof Building) { BuildingFeature bf = ((Building) clickable).getFeature(); if (bf.isAvailable()) { clickable.onLeave(mode); lastHovered = null; setBuilding(bf); rightMouseWasDown = false; return; } } } break; case Mode.MODE_SMARTBOMB: // Cancel the smartbomb and return it to the stores addPowerup(SmartbombPowerupFeature.getInstance(), false); mode = Mode.MODE_NORMAL; rightMouseWasDown = false; return; case Mode.MODE_SCROLL: break; default: assert false; } } rmbScroll = false; rightMouseWasDown = false; leftMouseWasDown = false; waitForMouse = false; if (mode == Mode.MODE_BUILD) { if (canBuild(false)) { Worm.setMouseAppearance(Res.getMousePointer()); } else { Worm.setMouseAppearance(Res.getMousePointerCantBuild()); } } else if (hovered != null) { Worm.setMouseAppearance(hovered.getMousePointer(false)); if (lastHovered != hovered) { if (lastHovered != null) { lastHovered.onLeave(mode); } lastHovered = hovered; hovered.onHovered(mode); } } else { if (lastHovered != null) { lastHovered.onLeave(mode); lastHovered = null; } if (mode == Mode.MODE_SMARTBOMB) { Worm.setMouseAppearance(Res.getMousePointerSmartbomb()); } else if (mode == Mode.MODE_SELL) { Worm.setMouseAppearance(Res.getMousePointerSellOff()); } else if (isBezerk()) { Worm.setMouseAppearance(capacitorRange ? Res.getMousePointerBezerkOffTarget() : Res.getMousePointerBezerkOutOfRange()); } else { Worm.setMouseAppearance(capacitorRange ? Res.getMousePointerOffTarget() : Res.getMousePointerOutOfRange()); } } if (mode == Mode.MODE_ZAP || mode == Mode.MODE_DRAG || mode == Mode.MODE_SCROLL || mode == Mode.MODE_SELECT) { mode = Mode.MODE_NORMAL; } } } }