internal bool findShot(Soldier soldier, float range) { foreach (ScreenObject pt in _screenObjects) { if (pt is Shot && !(pt is Pavise) && pt.getSide() != soldier.getSide()) { // figure out the center of the pike tip and the center of the man float ptX = pt.getPosition().X + pt.getWidth() * 0.5f; float ptY = pt.getPosition().Y + pt.getHeight() * 0.5f; float soX = soldier.getPosition().X + (soldier.getWidth() * 0.5f); float soY = soldier.getPosition().Y + (soldier.getHeight() * 0.5f); if (soldier.getSide() == SIDE_ENEMY && pt.getSide() == SIDE_PLAYER) { if ( (ptX < soX && soX - ptX <= Soldier.WIDTH * range + 5f) && (Math.Abs(ptY - soY) <= Soldier.HEIGHT * 0.5f) ) { soldier.react(ptX + Soldier.WIDTH * range); return true; } } else if (soldier.getSide() == SIDE_PLAYER && pt.getSide() == SIDE_ENEMY) { if ( (ptX > soX && ptX - soX <= Soldier.WIDTH * range + 5f) && (Math.Abs(ptY - soY) <= Soldier.HEIGHT * 0.5f) ) { soldier.react(ptX - soldier.getWidth() - Soldier.WIDTH * range); return true; } } } } return false; }
internal bool findSoldier(Soldier soldier, float range, float spread) { foreach (ScreenObject pt in _screenObjects) { if (pt is Soldier && pt.getSide() != soldier.getSide()) { if (((Soldier)pt).getState() != Soldier.STATE_DEAD && ((Soldier)pt).getState() != Soldier.STATE_DYING) { // figure out the center of the pike tip and the center of the man float ptX = pt.getPosition().X + pt.getWidth() * 0.5f; float ptY = pt.getPosition().Y + pt.getHeight() * 0.5f; float soX = soldier.getPosition().X; //+ soldier.getWidth() * 0.5f; float soY = soldier.getPosition().Y + soldier.getHeight() * 0.5f; if (soldier.getSide() == SIDE_ENEMY && pt.getSide() == SIDE_PLAYER) { bool bool1 = ptX < soX; bool bool2 = soX - (ptX + pt.getWidth()) <= Soldier.WIDTH * range; bool bool3 = Math.Abs(ptY - soY) <= Soldier.WIDTH * spread; if ( (bool1 && bool2) && (bool3) ) { //soldier.react(ptX + Soldier.WIDTH * range); return true; } } else if (soldier.getSide() == SIDE_PLAYER && pt.getSide() == SIDE_ENEMY) { if ( (ptX > soX && ptX - (soX + soldier.getWidth()) <= Soldier.WIDTH * range) && (Math.Abs(ptY - soY) <= Soldier.WIDTH * spread) ) { //soldier.react(ptX - soldier.getWidth() - Soldier.WIDTH * range); return true; } } } } } return false; }
internal bool findPikeTip(Soldier soldier, float range) { if(soldier.DEBUGFOUNDPIKE) soldier.DEBUGFOUNDPIKE = false; foreach (ScreenObject pt in _screenObjects) { if(pt is PikeTip) { if(((PikeTip)pt).getSoldierState() != Pikeman.STATE_RECOILING || soldier.getState() == Targeteer.STATE_DEFEND || soldier.getState() == Colmillos.STATE_ATTACK) { // figure out the center of the pike tip and the center of the man float ptX = pt.getPosition().X + pt.getWidth() * 0.5f; float ptY = pt.getPosition().Y + pt.getHeight() * 0.5f; float soX = soldier.getPosition().X + soldier.getWidth() * 0.5f; float soY = soldier.getPosition().Y + soldier.getHeight() * 0.5f; if (soldier.getSide() == SIDE_ENEMY && pt.getSide() == SIDE_PLAYER) { //ptX += pt.getWidth() * 0.5f; //soX -= soldier.getWidth() * 0.5f; if ( (ptX < soX && soX - ptX <= Soldier.WIDTH * range) && (Math.Abs(ptY - soY) <= Soldier.HEIGHT * 0.5f) ) { soldier.setReactionDest(ptX + Soldier.WIDTH * range); return true; } } else if (soldier.getSide() == SIDE_PLAYER && pt.getSide() == SIDE_ENEMY) { //ptX -= pt.getWidth() * 0.5f; //soX += soldier.getWidth() * 0.5f; if ( (ptX > soX + soldier.getWidth() && ptX - (soX + soldier.getWidth()) <= Soldier.WIDTH * range) && (Math.Abs(ptY - soY) <= Soldier.HEIGHT * 0.5f) ) { soldier.setReactionDest(ptX - soldier.getWidth() - Soldier.WIDTH * range); return true; } } } } } return false; }