Example #1
0
 /**
  * If (type == ObjectType.GHOST || type == ObjectType.ANGRY) will set the the number of turns the Ghost will need to progress to the next to the next Stage in its evolution
  * @param newTime must be greater then 0 and if  (type == ObjectType.GHOST) less than 4, otherwise less than 6
  */
 public bool setGhostTimer(short newTime)
 {
     if (type == InteractableObject.ObjectType.GHOST || type == InteractableObject.ObjectType.ANGRY)
     {
         if (subject == null)
         {
             subject = createEnemy(type);
         }
         if (subject.type != type)
         {
             if (type == InteractableObject.ObjectType.GHOST && subject.type == InteractableObject.ObjectType.ANGRY)
             {
                 ((Ghost)subject).MakeNotAngry();
             }
             else if (type == InteractableObject.ObjectType.ANGRY && subject.type == InteractableObject.ObjectType.GHOST)
             {
                 ((Ghost)subject).MakeAngry();
             }
             else
             {
                 subject.removeThis();
                 BaseEnemy newSubject = createEnemy(type);
                 newSubject.setCenter(subject.getCenterX(), subject.getCenterY());
                 subject = newSubject;
             }
         }
         return(((Ghost)subject).setAngryTimer(newTime));
     }
     return(false);
 }
Example #2
0
 /**
  * returns true if the given Enemy is currently active within the primeEnemtSet
  * @param target
  * @return
  */
 private bool isActiveEnemy(BaseEnemy target)
 {
     //information is accurate and up to date
     if (target != null && target.hostSet == this && enemySetPrime != null)
     {
         if (getEnemyAt(target.currentRow, target.currentCollumn) == target)
         {
             return(true);
         }
         //searching for target
         else if (doesGridPositionExist(target.currentRow, target.currentCollumn))
         {
             for (int loopRows = 0; loopRows < getNumberOfRows(); loopRows++)
             {
                 for (int loopCollumns = 0; loopCollumns < getNumberOfCollumns(loopRows); loopRows++)
                 {
                     if (enemySetPrime[loopRows][loopCollumns] == target)
                     {
                         target.setPosition(loopRows, loopCollumns, this);
                         return(true);
                     }
                 }
             }
         }
         //Target is not in set and inactive
     }
     return(false);
 }
Example #3
0
 //any changes to state as a result of clobber are added to storedStateChangeObject
 private void clobber(int row, int collumn, int animationTime)
 {
     if (hostSet != null)
     {
         BaseEnemy target = hostSet.getEnemyAt(row, collumn);
         if (target != null)
         {
             if (target.type == InteractableObject.ObjectType.ANGRY)
             {
                 storedStateChangeObject.add(((Ghost)target).explode());
             }
             else
             {
                 if (target.type != InteractableObject.ObjectType.GHOST)
                 {
                     target.removeThis();
                     Ghost newGhost = new Ghost(BaseCode.activeLibrary);
                     newGhost.setCenter(target.getCenterX(), target.getCenterY());
                     newGhost.revealType(0);
                     hostSet.addEnemy(newGhost, row, collumn);
                     newGhost.setAnimationTarget(row, collumn);
                     newGhost.revealType(animationTime);
                 }
                 else
                 {
                     target.revealType(animationTime);
                 }
             }
         }
     }
 }
Example #4
0
 /**
  * Will set the target of the Animation and the Time for it to take place for a Drop
  */
 protected void setMoveTarget()
 {
     //checking if currentEnemyGrid and position are up to date
     if (hostSet != null)
     {
         //Will set spider to drop down one row
         if (dropDistance < MAX_DROP_DISTANCE && hostSet.getNumberOfRows() > (currentRow + dropDistance + 1))
         {
             dropping    = true;
             dropStart.X = base.getCenterX();
             dropStart.Y = base.getCenterY();
             dropDistance++;
             BaseEnemy target = hostSet.getEnemyAt(currentRow + dropDistance, currentCollumn);
             if (target != null && target != this)
             {
                 dropTarget.X = target.getCenterX();
                 dropTarget.Y = target.getCenterY();
             }
             else
             {
                 dropTarget.X = base.getCenterX();
                 dropTarget.Y = base.getCenterY();
                 dropTarget   = hostSet.getWorldPosition(currentRow + dropDistance, currentCollumn);
             }
             //setting Web hang point and initializing web
             setWebPositionSize();;
         }
         else
         {
             dropping = false;
         }
     }
 }
Example #5
0
 /**
  * Will set the Target of the Byte and will Deduct any points that will need to be Deducted as a result of the byte
  * Will Also Set the Animation to move towards the Byte target within the Fist half of the animation ime
  * @return The super.storedStateChangeObject as the change game state
  */
 private StateChange setByteTarget()
 {
     storedStateChangeObject.setToDefualts();
     bytePos = 0;
     if (currentTarget != null)
     {
         currentTarget.removeNode();
     }
     if (hostSet != null)
     {
         //choosing Target Enemy
         targetEnemyCollumn = getRandomCollomn();
         byteTarget         = hostSet.getEnemyAt(currentRow, targetEnemyCollumn);
         //Deducting Points
         if (byteTarget != this)
         {
             //Byte
             if (byteTarget != null && byteTarget.type != InteractableObject.ObjectType.CAT)
             {
                 if (byteTarget.isTypeRevealed)
                 {
                     storedStateChangeObject.changeInPlayerScore = -byteTarget.getScore();
                 }
                 if (byteTarget.type == InteractableObject.ObjectType.ANGRY)
                 {
                     storedStateChangeObject.add(((Ghost)byteTarget).getExplodeEffects());
                 }
             }
             //Move
             else if (byteTarget == null)
             {
                 hostSet.moveEnemy(this, currentRow, targetEnemyCollumn);
                 base.setAnimationTarget(currentRow, targetEnemyCollumn);
             }
             //Idle
             else
             {
                 targetEnemyCollumn = -1;
                 byteTarget         = null;
             }
             //is enemy already targeted
             if (isEnemyAlreadyTargeted(byteTarget))
             {
                 targetEnemyCollumn = -1;
                 byteTarget         = null;
             }
             //targeting enemy
             else
             {
                 currentTarget = targetEnemy(byteTarget);
             }
         }
         else
         {
             byteTarget = null;
         }
     }
     return(storedStateChangeObject);
 }
Example #6
0
 /**
  * Will Destroy this Object call if you are going to remove this from from the array
  */
 public void destroy()
 {
     if (subject != null)
     {
         storedStateChangeObject.add(subject.scare());
         subject = null;
     }
 }    /**
Example #7
0
 //targeted Enemy Stuff
 public EnemySubSetNode targetEnemy(BaseEnemy target)
 {
     if (currentTargets != null)
     {
         return(currentTargets.addEnemy(target, false));
     }
     return(null);
 }
Example #8
0
        /**
         * Will deduct points for each Enemy to be eaten and set first target for the spider to drop
         * and will Determine how many Rows the Spider will Drop
         */
        public override StateChange revealType(int pauseTime)
        {
            //checking if currentEnemyGrid and position are up to date
            storedStateChangeObject.setToDefualts();
            if (!isTypeRevealed)
            {
                base.revealType(pauseTime);
                //setting targets to move Towards
                dropDistance = 0;
                setMoveTarget();
                initializeWeb();
                //Deducting points as a result of Drop
                if (hostSet != null)
                {
                    base.revealType(pauseTime);
                    //checking if two rows below the spider exist

                    /*if(hostSet.doesGridPositionExist(currentRow, currentRow + 2)){
                     *      //Jumping Down 1 row
                     *      BaseEnemy target = hostSet.getEnemyAt(currentRow + 1, currentCollumn);
                     *      if(target != null){
                     *              storedStateChangeObject.changeInPlayerScore -= target.getScore();
                     *      }
                     *      //Jumping Down 2 row
                     *      target = hostSet.getEnemyAt(currentRow + 2, currentCollumn);
                     *      if(target != null){
                     *              storedStateChangeObject.changeInPlayerScore -= target.getScore();
                     *      }
                     *      storedStateChangeObject.puaseForAnimation = true;
                     *      dropTime = pauseTime/3;
                     * }
                     * //checking if one rows below the spider exist
                     * else */if (hostSet.doesGridPositionExist(currentRow, currentRow + 1))
                    {
                        //Jumping Down 1 row
                        BaseEnemy target = hostSet.getEnemyAt(currentRow + 1, currentCollumn);
                        if (target != null)
                        {
                            storedStateChangeObject.changeInPlayerScore -= target.getScore();
                        }
                        storedStateChangeObject.puaseForAnimation = true;
                        dropTime = pauseTime / 2;
                    }
                    if (dropTime == 0)
                    {
                        hostSet.moveEnemy(this, currentRow + dropDistance, currentCollumn);
                        fillRowWithEnemies(currentRow + dropDistance);
                        this.setAnimationTarget(currentRow, currentCollumn);
                    }
                }
            }
            else if (getInfectStatus() <= 0)
            {
                return(removeThis());
            }
            return(storedStateChangeObject);
        }
Example #9
0
 /**
  * Will remove the given BaseEnemy from the set and the Interactable object will be removed the
  * next time getGrid() is used
  * @param removeTarget the baseEnemy that will be removed
  * @return whether or not the removal was successful
  */
 public bool removeEnemy(BaseEnemy removeTarget)
 {
     if (removeTarget != null && isActiveEnemy(removeTarget))
     {
         enemySetPrime[removeTarget.currentRow][removeTarget.currentCollumn] = null;
         return(true);
     }
     return(false);
 }
Example #10
0
 /**
  * will remove this Enemy From the currentEnemyGrid
  * Note this does Reset any previous changes to the stored storedStateChangeObject
  * before making its own changes
  */
 public override StateChange removeThis()
 {
     if (currentTarget != null)
     {
         currentTarget.removeNode();
         currentTarget = null;
     }
     byteTarget = null;
     this.targetEnemyCollumn = -1;
     return(base.removeThis());
 }
Example #11
0
 /**
  * Will Infect target Enemy for the give timeInfected
  */
 public void infect(int row, int collumn, int timeInfected)
 {
     if (hostSet != null)
     {
         BaseEnemy target = hostSet.getEnemyAt(row, collumn);
         if (target != null)
         {
             target.setInfectStatus(timeInfected);
         }
     }
 }
Example #12
0
 /**
  * Will eat the Victem at the Given location
  * @param row	the row the Victem the victem lies in
  * @param column the column the Victem the victem lies in
  * @return The change in score as a result of the meal
  */
 protected void EatVictem(int row, int column)
 {
     if (hostSet != null)
     {
         BaseEnemy victem = hostSet.getEnemyAt(row, column);
         if (victem != null && victem != this)
         {
             victem.removeThis();
         }
     }
 }
Example #13
0
        /**
         * Will create the BaseEnemy object associated with the given Enemy type
         * @param newType The Type of BaseEnemy requested
         * @return The new BseEnemy
         */
        internal static BaseEnemy createEnemy(InteractableObject.ObjectType newType)
        {
            BaseEnemy retVal = null;

            switch (newType)
            {
            case InteractableObject.ObjectType.ANGRY: {
                retVal = new Ghost(BaseCode.activeLibrary);     //Creating Ghost
                ((Ghost)retVal).MakeAngry();                    //Angering Ghost
                break;
            }

            case InteractableObject.ObjectType.GHOST: {
                retVal = (new Ghost(BaseCode.activeLibrary));
                break;
            }

            case InteractableObject.ObjectType.SPIDER: {
                retVal = (new Spider(BaseCode.activeLibrary));
                break;
            }

            case InteractableObject.ObjectType.VAMPIRE: {
                retVal = (new Vampire(BaseCode.activeLibrary));
                break;
            }

            case InteractableObject.ObjectType.MUMMY: {
                retVal = (new Mummy(BaseCode.activeLibrary));
                break;
            }

            case InteractableObject.ObjectType.PUMPKIN: {
                retVal = (new Pumpkin(BaseCode.activeLibrary));
                break;
            }

            case InteractableObject.ObjectType.ZOMBIE: {
                retVal = (new Zombie(BaseCode.activeLibrary));
                break;
            }

            case InteractableObject.ObjectType.FRANKENSTEIN: {
                retVal = (new Frankenstein(BaseCode.activeLibrary));
                break;
            }

            case InteractableObject.ObjectType.CAT: {
                retVal = (new Cat(BaseCode.activeLibrary));
                break;
            }
            }
            return(retVal);
        }
Example #14
0
 public bool isEnemyAlreadyTargeted(BaseEnemy target)
 {
     if (currentTargets != null)
     {
         if (currentTargets.findEnemy(target) != null)
         {
             return(true);
         }
     }
     return(false);
 }
Example #15
0
 /**
  * Will attempt to Remove an enemy at the given location
  * Note Does not check if hostSet is set
  * @param targetRow
  * @param targetCollumn
  */
 private void killEnemy(int targetRow, int targetCollumn)
 {
     if (hostSet != null)
     {
         BaseEnemy target = hostSet.getEnemyAt(targetRow, targetCollumn);
         if (target != null)
         {
             target.scare();
         }
     }
 }
Example #16
0
 /**
  * Will remove the given Enemy from the grid and add it to the subSet(temporary starage until the Enemy removes Itself)
  */
 public void moveEnemytoSubSet(BaseEnemy moveTarget)
 {
     if (moveTarget != null)
     {
         if (isActiveEnemy(moveTarget))
         {
             removeEnemy(moveTarget);
             moveTarget.hostSet = null;
         }
         tempStorage.addEnemy(moveTarget, true);
     }
 }
Example #17
0
 /**
  * Will Set the IOset  Size to match the size of the primeSet
  * If the Size must be changed then Enemies will migrate to the upper right hand corrner of the grid
  * and enemies are left in position that are outside of the new grid then nothing will be done of them
  * It is users responsibility to destroy() enemies they remove
  * @return returns the updated primeSet
  */
 private BaseEnemy[] CheckArraySizes(InteractableObject[] IOset, BaseEnemy[] primeSet)
 {
     if (primeSet != null)
     {
         //Salvage
         if (IOset != null)
         {
             if (IOset.Length != primeSet.Length)
             {
                 BaseEnemy[] newPrime = new BaseEnemy[IOset.Length];             //newSet
                 int         loop     = 0;
                 //Moving over old Elements
                 while (loop < IOset.Length && loop < primeSet.Length)
                 {
                     newPrime[loop] = primeSet[loop];
                     loop++;
                 }
                 //Initializing Excess to null
                 while (loop < newPrime.Length)
                 {
                     newPrime[loop] = null;
                     loop++;
                 }
                 //Removing old enemies
                 for (int loopRemove = IOset.Length - 1; loopRemove < primeSet.Length; loopRemove++)
                 {
                     if (primeSet[loopRemove] != null)
                     {
                         primeSet[loopRemove].removeThis();
                     }
                 }
                 primeSet = newPrime;
             }
         }
         //Destroy all
         else
         {
             primeSet = null;
         }
     }
     //Complete Rebuild
     else if (IOset != null)
     {
         primeSet = new BaseEnemy[IOset.Length];
         for (int loop = 0; loop < IOset.Length; loop++)
         {
             primeSet[loop] = null;
         }
     }
     return(primeSet);
 }
Example #18
0
 /**
  * Will add a give baseEnemy to this set
  * Linked List. nothing fancy here
  * @param newEnemy
  */
 public EnemySubSetNode addEnemy(BaseEnemy newEnemy, bool informEnemy)
 {
     if (newEnemy != null)
     {
         EnemySubSetNode newNode = new EnemySubSetNode();
         newNode.data = newEnemy;
         if (informEnemy)
         {
             newEnemy.hostNode = newNode;
         }
         firstNode.addNode(newNode);
         return(newNode);
     }
     return(null);
 }
Example #19
0
 /**
  * Will insert the given BaseEnemy at the given location if possible and will remove any enemy residing at that location already
  * @param newEnemy the given BaseEnemy
  * @param row the row the enemy will be placed in
  * @param collumn the collumn the enemy will be placed in
  * @return whether or not the enemy was successfully added
  */
 public bool addEnemy(BaseEnemy newEnemy, int row, int collumn)
 {
     if (newEnemy != null && doesGridPositionExist(row, collumn) && !isActiveEnemy(newEnemy))
     {
         if (enemySetPrime[row][collumn] != null)
         {
             removeEnemy(enemySetPrime[row][collumn]);
         }
         enemySetPrime[row][collumn] = newEnemy;
         newEnemy.setPosition(row, collumn, this);
         newEnemy.setAnimationTarget(row, collumn);
         BaseCode.activeDrawSet.addToDrawSet(newEnemy);
         return(true);
     }
     return(false);
 }
Example #20
0
 /**
  * Will Fill a given Row with a random Set of Enemies
  * @param row the given Row
  */
 protected void fillRowWithEnemies(int row)
 {
     if (hostSet != null)
     {
         for (int loop = 0; loop < hostSet.getNumberOfCollumns(row); loop++)
         {
             if (hostSet.getEnemyAt(row, loop) == null)
             {
                 BaseEnemy temp = getRandomEnemy();
                 temp.setCenterX(this.getCenterX());
                 temp.setCenterY(this.getCenterY());
                 hostSet.addEnemy(temp, row, loop);
             }
         }
     }
 }
Example #21
0
 /**
  * Will Bite a Random Enemy on the current Row
  * @return the Score Decrement as a result of the Bite
  */
 private void BiteTarget(BaseEnemy target)
 {
     if (hostSet != null && target != null)
     {
         EnemySoundManager.requestSound(EnemySoundManager.SoundType.DRACKULA_ATTACK);
         //Target is Ghost
         //Making Angry
         if (target.type == InteractableObject.ObjectType.GHOST)
         {
             //if not revealed
             if (!target.isTypeRevealed)
             {
                 target.revealType(0);
             }
             ((Ghost)target).MakeAngry();
         }
         //Target is already an angry Ghost
         else if (target.type == InteractableObject.ObjectType.ANGRY)
         {
             //if not revealed
             if (!target.isTypeRevealed)
             {
                 target.revealType(0);
             }
             ((Ghost)target).explode();
             removeThis();
         }
         //Target is not an Angry Ghost
         //Removing Target and Making it an angry Ghost
         else if (target != this && target.type != InteractableObject.ObjectType.CAT)
         {
             target.removeThis();
             Ghost angryGhost = new Ghost(BaseCode.activeLibrary);
             angryGhost.revealType(0);
             hostSet.addEnemy(angryGhost, currentRow, targetEnemyCollumn);
             angryGhost.setCenter(base.getCenterX(), base.getCenterY());
             angryGhost.setAnimationTarget(currentRow, targetEnemyCollumn);
         }
     }
     if (currentTarget != null)
     {
         currentTarget.removeNode();
         currentTarget = null;
     }
     targetEnemyCollumn = -1;
 }
Example #22
0
 /// <summary>
 ///  Will load images and other recourses required for the game
 /// </summary>
 /// <param name="resources"></param>
 /// <remarks>Note this function is called automatically once the game has started. and should not b called manualy</remarks>
 public static void preLoadResources(ResourceLibrary resources)
 {
     Life.preLoadResources(resources);
     BaseEnemy.preLoadResources(resources);
     Frankenstein.preLoadResources(resources);
     Cat.preLoadResources(resources);
     Ghost.preLoadResources(resources);
     Player.preLoadResources(resources);
     LightBeam.preLoadResources(resources);
     Mummy.preLoadResources(resources);
     Pumpkin.preLoadResources(resources);
     Spider.preLoadResources(resources);
     Vampire.preLoadResources(resources);
     Zombie.preLoadResources(resources);
     LightButton.preLoadResources(resources);
     EnemySoundManager.preLoadResources(resources);
 }
Example #23
0
        /**
         * Will attempt to find the given BaseEnemy in the set and if found will return the EnemySubSetNode that contains it.
         * Otherwise will return null
         * @param target
         * @return
         */
        public EnemySubSetNode findEnemy(BaseEnemy target)
        {
            EnemySubSetNode retVal = null;

            if (target != null)
            {
                EnemySubSetNode currentNode = firstNode.getNextNode();
                while (currentNode != null && retVal == null)
                {
                    if (currentNode.data == target)
                    {
                        retVal = currentNode;
                    }
                    currentNode = currentNode.getNextNode();
                }
            }
            return(retVal);
        }
Example #24
0
 /**
  * Will seach a given Enemy grid and will return the Enemy at the greatest index within that collumm
  * @param Column The target collumn within the enemyGrid to be searched
  * @param hostSet The set of Enemies to be searched
  * @return The Enemy within the target collumn at the deapest row. Not if this is null no Enemy was found
  */
 private BaseEnemy getClosestEnemy(EnemySet hostSet, int column)
 {
     if (hostSet != null && column >= 0)
     {
         for (int loopRow = hostSet.getNumberOfRows() - 1; loopRow >= 0; loopRow--)
         {
             if (column < hostSet.getNumberOfCollumns(loopRow))
             {
                 BaseEnemy retVal = hostSet.getEnemyAt(loopRow, column);
                 if (retVal != null)
                 {
                     return(retVal);
                 }
             }
         }
     }
     return(null);
 }
Example #25
0
 /**
  * Will select Enemies within the current Enemy Set that would be affected by the light
  * @param targetSet The current Enemy Set
  * @param currentCollumn the Collumn within the Set that the light is on
  */
 public void selectTargetableEnemies(EnemySet targetSet, int currentCollumn)
 {
     if (targetSet != null)
     {
         BaseEnemy currentTarget = null;
         //Reveal
         if (type == BeamType.REVEAL)
         {
             for (int loop = currentCollumn - 1; loop <= currentCollumn + 1 && loop < targetSet.getNumberOfCollumns(); loop++)
             {
                 currentTarget = getClosestEnemy(targetSet, loop);
                 if (currentTarget != null)
                 {
                     currentTarget.select();
                 }
             }
         }
         //Wide
         else if (type == BeamType.WIDE)
         {
             for (int loop = currentCollumn - 2; loop <= currentCollumn + 2 && loop < targetSet.getNumberOfCollumns(); loop++)
             {
                 currentTarget = getClosestEnemy(targetSet, loop);
                 if (currentTarget != null)
                 {
                     currentTarget.select();
                 }
             }
         }
         //Laser
         else
         {
             for (int loopRow = 0; loopRow < targetSet.getNumberOfRows(); loopRow++)
             {
                 currentTarget = targetSet.getEnemyAt(loopRow, currentCollumn);
                 if (currentTarget != null)
                 {
                     currentTarget.select();
                 }
             }
         }
     }
 }
Example #26
0
 public override StateChange revealType(int pauseTime)
 {
     if (!isTypeRevealed)
     {
         EnemySoundManager.requestSound(EnemySoundManager.SoundType.MUMMY_INTRO);
         base.revealType(pauseTime);
         if (hostSet != null)
         {
             for (int loop = 0; loop < hostSet.getNumberOfCollumns(currentRow); loop++)
             {
                 BaseEnemy target = hostSet.getEnemyAt(currentRow, loop);
                 if (target != null && target != this)
                 {
                     target.unrevealType();
                 }
             }
         }
     }
     return(storedStateChangeObject);
 }
Example #27
0
 /**
  * Will Attempt to move the Given Enemy to the given position
  * Note this function requires that the Given BaseEnemy be already active in the set
  * Enemy enemy already at the target position will be removed from the set;
  * Assums that the
  * @param moveTarget BaseEnemy you wish to move
  * @param row		Target row to move too
  * @param collumn	Target column to move too
  * @return			True if the Enemy was either moved to a different location in the set or moved into the set for the first time
  */
 public bool moveEnemy(BaseEnemy moveTarget, int row, int collumn)
 {
     if (moveTarget != null && doesGridPositionExist(row, collumn))
     {
         //Moving Enemy to position
         if (isActiveEnemy(moveTarget))
         {
             //Enemy is not at current position
             if (row != moveTarget.currentRow || collumn != moveTarget.currentCollumn)
             {
                 if (enemySetPrime[row][collumn] != null)
                 {
                     removeEnemy(enemySetPrime[row][collumn]);
                 }
                 enemySetPrime[row][collumn] = moveTarget;
                 enemySetPrime[moveTarget.currentRow][moveTarget.currentCollumn] = null;
                 moveTarget.setPosition(row, collumn, this);
                 moveTarget.setAnimationTarget(row, collumn);
             }
             //Enemy is already at the desired position
             else
             {
                 return(false);
             }
         }
         //adding Enemy
         else
         {
             if (enemySetPrime[row][collumn] != null)
             {
                 removeEnemy(enemySetPrime[row][collumn]);
             }
             enemySetPrime[row][collumn] = moveTarget;
             moveTarget.setPosition(row, collumn, this);
             BaseCode.activeDrawSet.addToDrawSet(moveTarget);
         }
         return(true);
     }
     return(false);
 }
Example #28
0
 private void ByteTarget(BaseEnemy target)
 {
     if (target != null && hostSet != null)
     {
         EnemySoundManager.requestSound(EnemySoundManager.SoundType.CAT_ATTACK);
         if (target.type == InteractableObject.ObjectType.ANGRY)
         {
             ((Ghost)target).explode();
             removeThis();
         }
         else
         {
             target.removeThis();
         }
     }
     if (currentTarget != null)
     {
         currentTarget.removeNode();
         currentTarget = null;
     }
     targetEnemyCollumn = -1;
 }
Example #29
0
 /**
  * Will update the subject based on the settings in the representative
  * @param hostSet the Enemy set that is in change of storing all of the BaseEnemies in use
  * @param puasetime the amount of time the game will pause for animations to proceed
  * @return whether or not any changes were made that actually require the game to pause
  * This includes revealing a Enemy, and Moving an enemy
  */
 internal StateChange updateSubject(EnemySet hostSet, int puasetime)
 {
     if (hostSet != null)
     {
         //Matching EnemyTypes and moving/Adding Enemy to appropriate array position
         if (subject == null)
         {
             subject = createEnemy(type);
             storedStateChangeObject.puaseForAnimation = hostSet.addEnemy(subject, currentRow, currentCollumn);
         }
         else if (subject.type != type)
         {
             if (type == InteractableObject.ObjectType.GHOST && subject.type == InteractableObject.ObjectType.ANGRY)
             {
                 ((Ghost)subject).MakeNotAngry();
                 storedStateChangeObject.puaseForAnimation = hostSet.moveEnemy(subject, currentRow, currentCollumn);
             }
             else if (type == InteractableObject.ObjectType.ANGRY && subject.type == InteractableObject.ObjectType.GHOST)
             {
                 ((Ghost)subject).MakeAngry();
                 storedStateChangeObject.puaseForAnimation = hostSet.moveEnemy(subject, currentRow, currentCollumn);
             }
             else
             {
                 subject.removeThis();
                 BaseEnemy newSubject = createEnemy(type);
                 newSubject.setCenter(subject.getCenterX(), subject.getCenterY());
                 subject = newSubject;
                 hostSet.addEnemy(subject, currentRow, currentCollumn);
                 storedStateChangeObject.puaseForAnimation = false;
             }
         }
         else
         {
             storedStateChangeObject.puaseForAnimation = hostSet.moveEnemy(subject, currentRow, currentCollumn);
         }
         //Updating reveal state infect state etc..
         subject.representative = (InteractableObject)this;
         subject.setInfectStatus(infectedTimer);
         subject.getHealth().setMaxSegments(maxHealth);
         subject.getHealth().setFilledSegments(currentHealth);
         subject.setScore(score);
         subject.circleEnemy(highlighted);
         //updating animation
         subject.setAnimationTarget(currentRow, currentCollumn);
         //updating Partial Reveal status
         if (subject.isPartialRevealed != partialRevealed && !revealed)
         {
             if (partialRevealed)
             {
                 subject.partialReveal();
             }
             else
             {
                 subject.unrevealType();
             }
         }
         //updating reveal state
         if (subject.isTypeRevealed != revealed)
         {
             subject.setToReveal = true;
         }
         subject.setInvulnerablility(invulnerable);
     }
     return(storedStateChangeObject);
 }
Example #30
0
 /**
  * Will set the Target of the Byte and will Deduct any points that will need to be Deducted as a result of the byte
  * Will Also Set the Animation to move towards the Byte target within the Fist half of the animation ime
  * @return The super.storedStateChangeObject as the change game state
  */
 private StateChange setByteTarget()
 {
     storedStateChangeObject.setToDefualts();
     bytePos = 0;
     if (currentTarget != null)
     {
         currentTarget.removeNode();
     }
     if (hostSet != null)
     {
         //initializing targtableGhosts
         if (targtableGhosts == null)
         {
             targtableGhosts = new List <BaseEnemy>();
         }
         targtableGhosts.Clear();
         if (targtableGhosts.Capacity < hostSet.getNumberOfCollumns(currentRow))
         {
             targtableGhosts.Capacity = hostSet.getNumberOfCollumns(currentRow);
         }
         //Finding Ghosts
         BaseEnemy target = null;
         for (int loop = 0; loop < hostSet.getNumberOfCollumns(currentRow); loop++)
         {
             target = hostSet.getEnemyAt(currentRow, loop);
             if (target != null && target.isTypeRevealed && (target.type == InteractableObject.ObjectType.ANGRY || target.type == InteractableObject.ObjectType.GHOST))
             {
                 targtableGhosts.Add(target);
             }
         }
         //Choosing Ghost to byte
         if (targtableGhosts.Count == 0)
         {
             targetEnemyCollumn = -1;
             byteTarget         = null;
         }
         //single target
         else if (targtableGhosts.Count == 1)
         {
             byteTarget         = targtableGhosts[0];
             targetEnemyCollumn = byteTarget.currentCollumn;
             //is enemy already targeted
             if (isEnemyAlreadyTargeted(byteTarget))
             {
                 targetEnemyCollumn = -1;
                 byteTarget         = null;
             }
             //targeting enemy
             else
             {
                 currentTarget = targetEnemy(byteTarget);
             }
         }
         //Multiple targets
         else
         {
             byteTarget         = targtableGhosts[((int)(rand.NextDouble() * (targtableGhosts.Count)))];
             targetEnemyCollumn = byteTarget.currentCollumn;
             //is enemy already targeted
             if (isEnemyAlreadyTargeted(byteTarget))
             {
                 targetEnemyCollumn = -1;
                 byteTarget         = null;
             }
             //targeting enemy
             else
             {
                 currentTarget = targetEnemy(byteTarget);
             }
         }
     }
     return(storedStateChangeObject);
 }