Beispiel #1
0
        public void fireItem(Entity e, DirectionalComponent dir)
        {
            TimedShooterComponent timedShooterComp = ( TimedShooterComponent )e.getComponent(GlobalVars.TIMED_SHOOTER_COMPONENT_NAME);
            PositionComponent     posComp          = (PositionComponent)e.getComponent(GlobalVars.POSITION_COMPONENT_NAME);
            ShooterBullet         bullet           = new ShooterBullet(level, level.rand.Next(Int32.MinValue, Int32.MaxValue), posComp.x, posComp.y, dir.getDir(), timedShooterComp.state);
            VelocityComponent     bulletVel        = ( VelocityComponent )bullet.getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);

            float bulletSpeed = 160.0f;

            if (dir.isUp())
            {
                bulletVel.setVelocity(0, -bulletSpeed);
            }
            else if (dir.isRight())
            {
                bulletVel.setVelocity(bulletSpeed, 0);
            }
            else if (dir.isDown())
            {
                bulletVel.setVelocity(0, bulletSpeed);
            }
            else if (dir.isLeft())
            {
                bulletVel.setVelocity(-bulletSpeed, 0);
            }
            level.addEntity(bullet);
        }
Beispiel #2
0
        public override void Update(float deltaTime)
        {
            foreach (Entity e in getApplicableEntities())
            {
                TimerComponent        timeComp    = ( TimerComponent )e.getComponent(GlobalVars.TIMER_COMPONENT_NAME);
                TimedShooterComponent shooterComp = ( TimedShooterComponent )e.getComponent(GlobalVars.TIMED_SHOOTER_COMPONENT_NAME);
                DirectionalComponent  dirComp     = ( DirectionalComponent )e.getComponent(GlobalVars.DIRECTION_COMPONENT_NAME);


                //Make a copy so editing the component's list doesn't kill the loop
                List <string> completedTimers = new List <string>(timeComp.getCompletedTimers());
                foreach (string name in completedTimers)
                {
                    if (name == shooterComp.fireTimerString)
                    {
                        timeComp.removeCompletedTimer(name);
                        beginFire(e, shooterComp, timeComp, dirComp);
                    }
                    else
                    {
                        Console.WriteLine("Unrecognized timer: " + name + " has been completed.");
                    }
                }
            }
        }
Beispiel #3
0
        //------------------------------------------------------------------------------------------------------------------

        //Here's where you add all the components the entity has.
        //You can just uncomment the ones you want.
        public void addMyComponents(float x, float y, int dir, int switchId)
        {
            /*POSITION COMPONENT - Does it have a position?
             */
            addComponent(new PositionComponent(x, y, defaultWidth, defaultHeight, this), true);

            /*DRAW COMPONENT - Does it get drawn to the game world?
             * You'll need to know the address for your image.
             * It'll probably be something along the lines of "RunningGame.Resources.[      ].png" ONLY png!!
             * First create the component
             * Then add the image
             * Then set the image to the active image
             */
            DrawComponent drawComp = (DrawComponent)addComponent(new DrawComponent(defaultWidth, defaultHeight, level, true), true);

            //Add image - Use base name for first parameter (everything in file path after Resources. and before the numbers and .png)
            //Then second parameter is full filepath to a default image
            drawComp.addSprite("Artwork.Foreground.SmushBlock", "RunningGame.Resources.Artwork.Foreground.SmushBlock.png", "Main");
            for (int i = 0; i < dir + 2; i++)
            {
                drawComp.rotateFlipAllSprites(System.Drawing.RotateFlipType.Rotate90FlipNone);
            }
            drawComp.setSprite("Main"); //Set image to active image


            /* ANIMATION COMPONENT - Does it need animating?
             * The float that this reads in is the amount of time (in seconds) between frames.
             * So, if it was 5, you would be on one frame for 5 seconds, then switch to the next, then 5 seconds later
             * It'd switch to the next etc, etc...
             */
            //addComponent(new AnimationComponent(0.0005f), true);

            /*VELOCITY COMPONENT - Does it move?
             */
            addComponent(new VelocityComponent(0, 0));

            /*COLLIDER - Does it hit things?
             * The second field is the collider type. Look in GlobalVars for a string with the right name.
             */
            addComponent(new ColliderComponent(this, GlobalVars.SMUSH_BLOCK_COLLIDER), true);

            /*DIRECTION - It has a direction
             */
            DirectionalComponent dirComp = (DirectionalComponent)addComponent(new DirectionalComponent(dir));

            /*OFF SIDE OF SCREEN - Stop when it hits the side of the screen.
             */
            addComponent(new ScreenEdgeComponent(1, 1, 1, 1));

            /*SMUSH - It's a smusher!
             */
            SmushComponent smushComp = ( SmushComponent )addComponent(new SmushComponent(0.0f));

            if (dirComp.isUp())
            {
                smushComp.setToUp();
            }
            else if (dirComp.isRight())
            {
                smushComp.setToRight();
            }
            else if (dirComp.isDown())
            {
                smushComp.setToDown();
            }
            else if (dirComp.isLeft())
            {
                smushComp.setToLeft();
            }

            /*TIMER - It does stuff with a timer.
             */
            addComponent(new TimerComponent());

            /* SWITCH LISTENER - Can be linked to a switch to prevent it from falling.
             */
            addComponent(new SwitchListenerComponent(switchId, GlobalVars.SMUSH_SWITCH_EVENT));
        }
Beispiel #4
0
        //----------------------------------------------------------------------------------------------


        public void beginFire(Entity e, TimedShooterComponent shooterComp, TimerComponent timeComp, DirectionalComponent dir)
        {
            fireItem(e, dir);
            shooterComp.currentBurstNum++;
            if (shooterComp.currentBurstNum < shooterComp.numShotsPerBurst)
            {
                timeComp.addTimer(shooterComp.fireTimerString, shooterComp.timeBetweenShotsInBurst);
            }
            else
            {
                shooterComp.currentBurstNum = 0;
                timeComp.addTimer(shooterComp.fireTimerString, shooterComp.timeBetweenBursts);
                DrawComponent drawComp = ( DrawComponent )e.getComponent(GlobalVars.DRAW_COMPONENT_NAME);
                drawComp.resetAnimation();
            }
        }