Example #1
0
    private GhostSprite CreateNewGhostSprite()
    {
        GameObject go = new GameObject();

        go.transform.position = transform.position;
        go.transform.parent   = GhostSpriteParent.transform;

        GhostSprite ghostSprite = go.AddComponent <GhostSprite>();

        return(ghostSprite);
    }
Example #2
0
    private GhostSprite BuildNewGhostingSprite()
    {
        //create a gameobject and set the current transform as a parent
        GameObject go = new GameObject();

        go.transform.position = transform.position;
        go.transform.parent   = GhostSpritesParent.transform;

        GhostSprite gs = go.AddComponent <GhostSprite> ();

        return(gs);
    }
Example #3
0
 public override void SetupSpawnObject(GameObject go)
 {
     base.SetupSpawnObject(go);
     if (go.GetComponent <GhostSprite>() != null)
     {
         GhostSprite gs = go.GetComponent <GhostSprite>();
         gs.Speed  = 5;
         gs.PacMan = PacMan;
         gs.gameObject.transform.position = this.transform.position;
         gs.SetupGhost();
     }
 }
Example #4
0
    void Update()
    {
        if (_hasStarted)
        {
            if (Time.time >= _nextSpwanTime)
            {
                if (GhostSpritesQueue.Count == _startSize)
                {
                    GhostSprite peekedGhostSprite = GhostSpritesQueue.Peek();

                    bool canBeReused = peekedGhostSprite.CanBeReused();

                    if (canBeReused)
                    {
                        GhostSpritesQueue.Dequeue();
                        GhostSpritesQueue.Enqueue(peekedGhostSprite);

                        peekedGhostSprite.Initialize(_sprite, _duration, _alpha);

                        _nextSpwanTime += _spwanRate;
                    }
                    else
                    {
                        return;
                    }
                }

                if (GhostSpritesQueue.Count < _startSize)
                {
                    GhostSprite newGhostSprite = Get();
                    GhostSpritesQueue.Enqueue(newGhostSprite);

                    newGhostSprite.Initialize(_sprite, _duration, _alpha);

                    _nextSpwanTime += _spwanRate;
                }

                if (_ghostSpritesQueue.Count > _startSize)
                {
                    int size = GhostSpritesQueue.Count - _startSize;

                    for (int index = 0; index < size; index++)
                    {
                        GhostSprite ghostSprite = GhostSpritesQueue.Dequeue();
                        InactiveGhostSpritePool.Add(ghostSprite);
                    }

                    return;
                }
            }
        }
    }
Example #5
0
        public void GeneratePlayerAndBackground()
        {
            player = new Player(content.Load <Texture2D>("Sprites/playerAnimation"), spawnPoint, content.Load <Texture2D>("textureEffects/whiteFogAnimation"), session.GetPlayerLives());

            foreach (Paralax tmp in _paralaxes)
            {
                tmp.Initialize();
            }

            ghostSprite = new GhostSprite(player);
            _sprites.Insert(0, player);
            _sprites.Add(ghostSprite);
        }
Example #6
0
 internal GhostObject(GraphicsHandler handler, GhostType type, PacmanObject target, Maze level)
     : base(GraphicsConstants.SpriteSize)
 {
     normalPalette = type.ToPalette();
     sprite        = new GhostSprite()
     {
         Palette = normalPalette
     };
     handler.Register(this, sprite);
     Behavior = GhostAIBehavior.FromGhostType(type, this, target, level);
     State    = new GhostHomeState(this);
     PerformTurn(Direction.Down);
     Velocity = Vector2.Zero;
 }
Example #7
0
    void Update()
    {
        if (ghostingEnabled)
        {
            //check for spawn rate
            //check if we're ok to spawn a new ghost
            if (Time.time >= _nextSpawnTime)
            {
                //is the queue count number equal than the trail length?
                if (GhostingSpritesQueue.Count == trailLength)
                {
                    GhostSprite peekedGhostingSprite = GhostingSpritesQueue.Peek();
                    //is it ok to use?
                    bool canBeReused = peekedGhostingSprite.CanBeReused();
                    if (canBeReused)
                    {
                        //pop the queue
                        GhostingSpritesQueue.Dequeue();
                        GhostingSpritesQueue.Enqueue(peekedGhostingSprite);



                        //initialize the ghosting sprite
                        if (!useTint)
                        {
                            peekedGhostingSprite.Init(effectDuration, _desiredAlpha, _spriteRenderer.sprite, sortingLayer, _spriteRenderer.sortingOrder - 1, transform, Vector3.zero);
                        }
                        else
                        {
                            peekedGhostingSprite.Init(effectDuration, _desiredAlpha, _spriteRenderer.sprite, sortingLayer, _spriteRenderer.sortingOrder - 1, transform, Vector3.zero, _desiredColor);
                        }
                        _nextSpawnTime += spawnRate;
                    }
                    else                         //not ok, wait until next frame to try again
                                                 //peekedGhostingSprite.KillAnimationAndSpeedUpDissapearing();
                    {
                        return;
                    }
                }
                //check if the count is less than the trail length, we need to create a new ghosting sprite
                if (GhostingSpritesQueue.Count < trailLength)
                {
                    GhostSprite newGhostingSprite = Get();
                    GhostingSpritesQueue.Enqueue(newGhostingSprite);                      //queue it up!
                    //newGhostingSprite.Init(_effectDuration, _desiredAlpha, _refSpriteRenderer.sprite, _sortingLayer,_refSpriteRenderer.sortingOrder-1, transform, Vector3.zero );

                    if (!useTint)
                    {
                        newGhostingSprite.Init(effectDuration, _desiredAlpha, _spriteRenderer.sprite, sortingLayer, _spriteRenderer.sortingOrder - 1, transform, Vector3.zero);
                    }
                    else
                    {
                        newGhostingSprite.Init(effectDuration, _desiredAlpha, _spriteRenderer.sprite, sortingLayer, _spriteRenderer.sortingOrder - 1, transform, Vector3.zero, _desiredColor);
                    }
                    _nextSpawnTime += spawnRate;
                }
                //check if the queue count is greater than the trail length. Dequeue these items off the queue, as they are no longer needed
                if (GhostingSpritesQueue.Count > trailLength)
                {
                    int difference = GhostingSpritesQueue.Count - trailLength;
                    for (int i = 1; i < difference; i++)
                    {
                        GhostSprite gs = GhostingSpritesQueue.Dequeue();
                        InactiveGhostSpritePool.Add(gs);
                    }
                    return;
                }
            }
        }
    }