/** * Check if 'quelPerso' is colliding with the given element. * * @param x * @param y * @param quelElement * @param quelPerso * @param rayon * @return Perso */ private boolean checkCollisionOnPerso( int x, int y, Element quelElement, Perso quelPerso, int rayon) { if (quelPerso.isZildo() && quelElement != null && quelElement.getDesc() instanceof ElementDescription) { ElementDescription d = (ElementDescription) quelElement.getDesc(); if (d.isPushable() && quelElement.vx + quelElement.vy != 0f) { return false; } } int tx = (int) quelPerso.getX(); int ty = (int) quelPerso.getY(); PersoDescription descToCompare = quelPerso.getDesc(); int rayonPersoToCompare = rayon; if (descToCompare != null) { rayonPersoToCompare = descToCompare.getRadius(); } // Do we have a Perso in parameters ? Perso perso = null; if (quelElement != null && quelElement.getEntityType().isPerso()) { perso = (Perso) quelElement; } if (EngineZildo.collideManagement.checkCollisionCircles( x, y, tx, ty, rayon, rayonPersoToCompare)) { if (perso != null && perso.isZildo() && perso.linkedSpritesContains(quelPerso)) { // Collision entre Zildo et l'objet qu'il porte dans les mains => on laisse } else if (quelElement == null || quelElement.getLinkedPerso() != quelPerso) { return true; } } // No collision return false; }