/** * Dado que el constructor solo permite que se le pase como parametro una instancia de AlgoTank * para inicializar al duenio de la estrategia, realizar un casteo de dicho atributo a AlgoTank es * type-safe. Si transcurrio el tiempo necesario para realizar un nuevo disparo desde el ultimo, * se lo realiza y se anula el atributo unidadesTemporalesTranscurridas. */ public void decidirDisparo() { AlgoTank duenioAuxiliar = (AlgoTank) duenio; if (tiempoEntreDisparosTranscurrido()) { if (!(duenioAuxiliar.getArmasPrioritarias().isEmpty())) { ArmaMunicionLimitada armaAuxiliar = duenioAuxiliar.getArmasPrioritarias().peek(); armaAuxiliar.disparar(); if (armaAuxiliar.getMunicion() == 0) duenioAuxiliar.getArmasPrioritarias().pop(); } else duenioAuxiliar.getAmetralladora().disparar(); unidadesTemporalesTranscurridas = 0; } }
/** Delega la persistencia al arma prioritaria en uso. */ public void persistir(Document documentoXML, Element raiz) { AlgoTank duenioAuxiliar = (AlgoTank) duenio; ArmaMunicionLimitada armaAuxiliar = duenioAuxiliar.getArmasPrioritarias().peek(); if (armaAuxiliar.getMunicion() == 0) return; armaAuxiliar.persistir(documentoXML, raiz); }