예제 #1
0
        public void Generate()
        {
            if (GoblinCap <= 0 || sGlobalAllocation >= GoblinCap)
            {
                return;
            }

            Goblin character = inactiveGoblins [inactiveGoblins.Count - 1];

            if (character == null)
            {
                return;
            }

            var offset = CollisionRadius * 0.75f;
            var rot    = GraphicsUtilities.PalarAdjust(VirtualZRotation);
            var pos    = new CGPoint((float)Math.Cos(rot) * offset, (float)Math.Sin(rot) * offset);

            character.Position = new CGPoint(pos.X + Position.X, pos.Y + Position.Y);

            MultiplayerLayeredCharacterScene scene = CharacterScene;

            character.AddToScene(CharacterScene);

            character.ZPosition = -1f;
            character.FadeIn(0.5f);

            inactiveGoblins.Remove(character);
            ActiveGoblins.Add(character);
            sGlobalAllocation++;
        }
예제 #2
0
        public void Recycle(Goblin goblin)
        {
            if (goblin == null)
            {
                throw new ArgumentNullException("goblin");
            }

            goblin.Reset();

            ActiveGoblins.Remove(goblin);
            inactiveGoblins.Add(goblin);

            sGlobalAllocation--;
        }