예제 #1
0
        private void _createProjectile(object[] args)
        { // createProjectile(string actorPartyMemberSelector, string boneName, string spriteName, bool facingRight, float speed, Script callback, string targetPartyMemberSelector, bool addParticleEffect)
            string actorPartyMemberSelector = (string)args[0];
            string boneName    = (string)args[1];
            string spriteName  = (string)args[2];
            bool   facingRight = (bool)args[3];
            float  speed       = (float)args[4];
            Script callback    = (Script)args[5];
            string targetPartyMemberSelector = (string)args[6];
            bool   addParticleEffect         = (bool)args[7];

            PartyMember actor  = getPartyMemberFromSelector(actorPartyMemberSelector);
            PartyMember target = getPartyMemberFromSelector(targetPartyMemberSelector);

            Bone    bone     = actor.BattleEntity.Skeleton.FindBone(boneName);
            Vector2 position = new Vector2(bone.WorldX, bone.WorldY);

            Sprite sprite = ResourceManager.GetNewSprite(spriteName);

            blocked = true;
            ScriptRunner self = this;

            Scene.AddEntity(new Projectile(sprite, position, facingRight, actor, target, speed, projectile =>
            {
                projectile.Kill();
                self.addNestedScriptRunner(callback, 0.0f);
                if (addParticleEffect)
                {
                    ParticleEffect particleEffect = ParticleEffect.AddSmokePuff(projectile.Position, self.battle);
                    particleEffect.DepthOverride  = target.BattleEntity.Position.Y + 5.0f;
                }
                self.blocked = false;
            }));
        }
예제 #2
0
 public void StartOverworld(Vector2 entityPosition)
 {
     if (Data.OverworldSpriteName != null && Data.OverworldSpriteName.Length > 0)
     {
         OverworldEntity = new Entity(ResourceManager.GetNewSprite(Data.OverworldSpriteName), entityPosition);
     }
     else
     {
         OverworldEntity = new Entity(ResourceManager.GetNewSkeleton(Data.OverworldSkeletonName), entityPosition);
         Rectangle customBoundingBox = OverworldEntity.GetBoundingBoxAt(Vector2.Zero);
         customBoundingBox.Height         /= 4;
         customBoundingBox.Y              += customBoundingBox.Height * 3;
         OverworldEntity.CustomBoundingBox = customBoundingBox;
         OverworldEntity.Scale             = new Vector2(0.3f);
     }
 }
예제 #3
0
        private void _createTrap(object[] args)
        { // createTrap(string actorPartyMemberSelector, string targetPartyMemberSelector, string spriteName)
            string actorPartyMemberSelector  = (string)args[0];
            string targetPartyMemberSelector = (string)args[1];
            string spriteName = (string)args[2];

            PartyMember actorPartyMember = getPartyMemberFromSelector(actorPartyMemberSelector);
            PartyMember frontPartyMember = getPartyMemberFromSelector(targetPartyMemberSelector + ">list>front");
            float       nudgeMultiplierX = battle.GetPartyForPartyMember(actorPartyMember) == battle.PlayerParty ? 1.0f : -1.0f;
            Rectangle   boundingBox      = frontPartyMember.BattleEntity.GetBoundingBox();
            Vector2     position         = new Vector2(boundingBox.X + (boundingBox.Width / 2.0f) + (boundingBox.Width * nudgeMultiplierX), boundingBox.Bottom);

            Trap trap = new Trap(ResourceManager.GetNewSprite(spriteName), position, actorPartyMember.EquippedWeapon.Attributes, actorPartyMember.EquippedWeapon.Data, actorPartyMember, battle);

            battle.GetPartyBattleLayoutForPartyMember(frontPartyMember).PlaceTrapInFrontOfPartyMember(frontPartyMember, trap);
        }
예제 #4
0
 private void populateWithScenery()
 {
     AddEntity(new Scenery(ResourceManager.GetNewSprite(Area.ScenerySpriteNames.Sample()), new Vector2(100.0f, 400.0f)));
 }