Ejemplo n.º 1
0
        public void Init(string Name)
        {
            ProjectileContext GlobalProjectileContext = new ProjectileContext();
            ProjectileParams  MagicProjectileParams   = new ProjectileParams(GlobalProjectileContext);

            MagicUserContext GlobalMagicContext = new MagicUserContext();
            MagicUserParams  MagicParams        = new MagicUserParams(GlobalMagicContext);

            Dictionary <string, MagicElement> DicMagicElement = MagicElement.LoadRegularCore(MagicParams);

            foreach (KeyValuePair <string, MagicElement> ActiveMagicElement in MagicElement.LoadProjectileCores(MagicParams, MagicProjectileParams))
            {
                DicMagicElement.Add(ActiveMagicElement.Key, ActiveMagicElement.Value);
            }
            foreach (KeyValuePair <string, MagicElement> ActiveMagicElement in MagicElement.LoadElements(MagicParams))
            {
                DicMagicElement.Add(ActiveMagicElement.Key, ActiveMagicElement.Value);
            }

            ActiveSpell               = new MagicSpell(Name, null, GlobalMagicContext, DicMagicElement);
            ActiveMagicEditor         = new MagicEditor(ActiveSpell, GlobalProjectileContext, MagicProjectileParams.SharedParams);
            ActiveMagicEditor.Content = new ContentManager(Services);
            ActiveMagicEditor.Content.RootDirectory = "Content";
            Services.AddService(GraphicsDevice);
            ActiveMagicEditor.Load();
        }
Ejemplo n.º 2
0
        public Fireball(MagicUserParams MagicParams, ProjectileParams Params, IMagicUser Parent)
            : base(MagicParams, 500)
        {
            this.Params = Params;
            this.Parent = Parent;

            Damage = 5;
            Speed = new Vector2(-(float)Math.Cos(Params.SharedParams.OwnerAngle) * 6, (float)Math.Sin(Params.SharedParams.OwnerAngle) * 6);

            Rectangle CollisionBox = new Rectangle(0, 0, 50, 32);

            float MinX = Params.SharedParams.OwnerPosition.X - CollisionBox.Width / 2f;
            float MinY = Params.SharedParams.OwnerPosition.Y - CollisionBox.Height / 2f;
            float MaxX = MinX + CollisionBox.Width;
            float MaxY = MinY + CollisionBox.Height;

            Polygon NewPolygon = new Polygon();
            NewPolygon.ArrayVertex = new Vector2[4];
            NewPolygon.ArrayVertex[0] = new Vector2(MinX, MinY);
            NewPolygon.ArrayVertex[1] = new Vector2(MinX, MaxY);
            NewPolygon.ArrayVertex[2] = new Vector2(MaxX, MaxY);
            NewPolygon.ArrayVertex[3] = new Vector2(MaxX, MinY);

            NewPolygon.ComputePerpendicularAxis();
            NewPolygon.ComputerCenter();

            Collision.ListCollisionPolygon = new List<Polygon>(1) { NewPolygon };
            MagicParams.SetMagicUser(Parent);
        }
Ejemplo n.º 3
0
        public void TestMagicUnit()
        {
            List <MagicSpell> ListMagicSpell        = new List <MagicSpell>();
            UnitMagic         ActiveUser            = new UnitMagic("Dummy Magic", ListMagicSpell);
            MagicSpell        ActiveSpell           = new MagicSpell(ActiveUser, ActiveUser);
            MagicUserParams   Params                = new MagicUserParams(ActiveSpell.GlobalContext);
            ProjectileContext GlobalContext         = new ProjectileContext();
            ProjectileParams  MagicProjectileParams = new ProjectileParams(GlobalContext);

            GlobalContext.OwnerSandbox = Sandbox;
            MagicSpell FireballSpell = new MagicSpell(ActiveUser);

            ListMagicSpell.Add(FireballSpell);

            MagicCoreFireball FireballCore1 = new MagicCoreFireball(Params, MagicProjectileParams);

            FireballCore1.ListLinkedMagicElement.Add(new ChannelExternalManaSource(Params));
            FireballCore1.ListLinkedMagicElement.Add(new TriggerAfterTimeEllapsed(Params, 5));

            FireballSpell.ListMagicCore.Add(FireballCore1);

            ActiveUser.Init();

            Assert.AreEqual(1, ActiveUser.ListAttack.Count);
        }
 public ChangeAttackSpeedEffect(ProjectileParams Params)
     : base(Name, false, Params)
 {
     _Speed        = 0;
     _NumberType   = Operators.NumberTypes.Absolute;
     _SignOperator = Operators.SignOperators.Equal;
 }
 public ProjectileEffect(string EffectTypeName, bool IsPassive, ProjectileParams Params)
     : base(EffectTypeName, IsPassive)
 {
     if (Params != null)
     {
         this.Params = new ProjectileParams(Params);
     }
 }
Ejemplo n.º 6
0
 public OffsetEffect(MagicUserParams MagicParams, ProjectileParams AttackParams, MagicCoreOffset Owner, Vector2 Offset)
     : base("Offset Effect " + Key++, false, MagicParams)
 {
     IsStacking = true;
     MaximumStack = -1;//Allow a user to have more than one effect.
     this.AttackParams = new ProjectileParams(AttackParams);
     this.Owner = Owner;
     this.Offset = Offset;
 }
Ejemplo n.º 7
0
        public MagicCoreOffset(MagicUserParams Params, ProjectileParams AttackParams, float OffsetX, float OffsetY)
            : base("Offset Core", 0, 0, 40, Params, AttackParams)
        {
            SetAttributes(
                  new MagicElementAttributeSlider("Offset X", OffsetX, -100d, 100d, (X) => this.OffsetX = (float)X),
                  new MagicElementAttributeSlider("Offset Y", OffsetY, -100d, 100d, (Y) => this.OffsetY = (float)Y));

            this.OffsetX = OffsetX;
            this.OffsetY = OffsetY;
        }
Ejemplo n.º 8
0
        public CreateFireballEffect(double ExtraAngleInDegrees, MagicUserParams MagicParams, ProjectileParams Params, MagicCoreFireball Owner)
            : base("Fireball Effect", false, MagicParams)
        {
            this.ExtraAngleInDegrees = ExtraAngleInDegrees;
            this.Params = new ProjectileParams(Params);
            this.Owner = Owner;

            IsStacking = true;
            MaximumStack = -1;//Allow a user to have more than one fireball.
        }
Ejemplo n.º 9
0
        public UnitMagic()
            : base(null)
        {
            ArrayCharacterActive    = new Core.Characters.Character[0];
            ListMagicSpell          = new List <MagicSpell>();
            GlobalProjectileContext = new ProjectileContext();
            MagicProjectileParams   = new ProjectileParams(GlobalProjectileContext);

            GlobalMagicContext = new MagicUserContext();
            MagicParams        = new MagicUserParams(GlobalMagicContext);
        }
Ejemplo n.º 10
0
        public void TestMagicSanbox()
        {
            List <MagicSpell> ListMagicSpell = new List <MagicSpell>();
            UnitMagic         ActiveUser     = new UnitMagic("Dummy Magic", ListMagicSpell);

            Character DummyCharacter = new Character();

            DummyCharacter.Name          = "Dummy Pilot";
            DummyCharacter.Level         = 1;
            DummyCharacter.ArrayLevelMEL = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelRNG = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelDEF = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelSKL = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelEVA = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelHIT = new int[1] {
                200
            };
            DummyCharacter.ArrayLevelMaxSP = new int[1] {
                50
            };
            ActiveUser.ArrayCharacterActive = new Character[1] {
                DummyCharacter
            };

            ActiveUser.ChanneledMana = 1000;
            MagicSpell        ActiveSpell           = new MagicSpell(ActiveUser, ActiveUser);
            MagicUserParams   MagicParams           = new MagicUserParams(ActiveSpell.GlobalContext);
            ProjectileContext GlobalContext         = new ProjectileContext();
            ProjectileParams  MagicProjectileParams = new ProjectileParams(GlobalContext);

            GlobalContext.OwnerSandbox = Sandbox;
            MagicSpell FireballSpell = new MagicSpell(ActiveUser);

            ListMagicSpell.Add(FireballSpell);

            MagicCoreFireball FireballCore1 = new MagicCoreFireball(MagicParams, MagicProjectileParams);

            FireballSpell.ListMagicCore.Add(FireballCore1);

            ActiveUser.Init();
            FireballSpell.ComputeSpell()[0].AddSkillEffectsToTarget("");
            Assert.AreEqual(1, Sandbox.ListProjectile.Count);
        }
Ejemplo n.º 11
0
 public void Start()
 {
     Animator [] Animators = transform.GetComponentsInChildren <Animator>();
     for (int i = 0; i < Animators.Length; i++)
     {
         if (Animators[i].gameObject.name == "barley")
         {
             _animator = Animators[i];
             this._projectileParams = ProjectileParams.GetProjectileParams("barley", this.Damage, Animators[i].gameObject.GetComponentInChildren <FXController>().attackTransform);
         }
     }
 }
        private MagicSpell CreateFireball(UnitMagic ActiveUser, ProjectileParams MagicProjectileParams)
        {
            MagicSpell      ActiveSpell = new MagicSpell(ActiveUser, ActiveUser);
            MagicUserParams Params      = new MagicUserParams(ActiveSpell.GlobalContext);

            MagicCoreFireball FireballCore1 = (MagicCoreFireball) new MagicCoreFireball(Params, MagicProjectileParams).Copy();

            FireballCore1.ListLinkedMagicElement.Add(new ChannelExternalManaSource(Params).Copy());

            ActiveSpell.ListMagicCore.Add(FireballCore1);

            return(ActiveSpell);
        }
Ejemplo n.º 13
0
        public static Dictionary <string, MagicElement> LoadProjectileCores(MagicUserParams Params, ProjectileParams AttackParams)
        {
            Dictionary <string, MagicElement> DicMagicCoreByType = new Dictionary <string, MagicElement>();

            string[] Files = Directory.GetFiles("Magic", "*.dll");
            for (int F = 0; F < Files.Length; F++)
            {
                Assembly            ActiveAssembly = Assembly.LoadFile(Path.GetFullPath(Files[F]));
                List <MagicElement> ListMagicCore  = ReflectionHelper.GetObjectsFromTypes <MagicElement>(typeof(ProjectileMagicCore), ActiveAssembly.GetTypes(), Params, AttackParams);

                foreach (MagicElement Instance in ListMagicCore)
                {
                    DicMagicCoreByType.Add(Instance.Name, Instance);
                }
            }

            return(DicMagicCoreByType);
        }
 public ToggleAttackGravityEffect(ProjectileParams Params)
     : base(Name, false, Params)
 {
     _UseGravity = false;
 }
 public ReviveAttackEffect(ProjectileParams Params)
     : base(Name, false, Params)
 {
     _MaxExecutions = -1;
 }
 public DestroyAttackEffect(ProjectileParams Params)
     : base(Name, false, Params)
 {
 }
 public MatchTerrainTiltWithAttackEffect(ProjectileParams Params)
     : base(Name, false, Params)
 {
 }
 public RotateAttackEffect(ProjectileParams Params)
     : base(Name, false, Params)
 {
 }
Ejemplo n.º 19
0
 protected ProjectileMagicCore(string Name, int BasePower, int RequiredMana, int Radius,
                               MagicUserParams Params, ProjectileParams AttackParams)
     : base(Name, BasePower, RequiredMana, Radius, Params)
 {
     this.AttackParams = new ProjectileParams(AttackParams);
 }
Ejemplo n.º 20
0
 public MagicCoreFireball(MagicUserParams MagicParams, ProjectileParams Params)
     : base("Fireball Core", 1, 10, 40, MagicParams, Params)
 {
     SetAttributes(new MagicElementAttribute[] { new MagicElementAttributeSlider("Extra Angle", 0, -180, 180, (NewAngle) => ExtraAngleInDegrees = NewAngle) });
 }
Ejemplo n.º 21
0
 public MagicCoreOffset(MagicUserParams Params, ProjectileParams AttackParams)
     : this(Params, AttackParams, 0, 0)
 {
 }
Ejemplo n.º 22
0
        public UnitMagic(string Name, ContentManager Content, BattleMap Map, Dictionary <string, Unit> DicUnitType, Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect)
            : base(Name)
        {
            this.Map                = Map;
            ArrayCharacterActive    = new Core.Characters.Character[0];
            ListMagicSpell          = new List <MagicSpell>();
            GlobalProjectileContext = new ProjectileContext();
            MagicProjectileParams   = new ProjectileParams(GlobalProjectileContext);

            GlobalMagicContext = new MagicUserContext();
            MagicParams        = new MagicUserParams(GlobalMagicContext);

            Dictionary <string, MagicElement> DicMagicElement = MagicElement.LoadRegularCore(MagicParams);

            foreach (KeyValuePair <string, MagicElement> ActiveMagicElement in MagicElement.LoadProjectileCores(MagicParams, MagicProjectileParams))
            {
                DicMagicElement.Add(ActiveMagicElement.Key, ActiveMagicElement.Value);
            }
            foreach (KeyValuePair <string, MagicElement> ActiveMagicElement in MagicElement.LoadElements(MagicParams))
            {
                DicMagicElement.Add(ActiveMagicElement.Key, ActiveMagicElement.Value);
            }

            FileStream   FS = new FileStream("Content/Units/Magic/" + Name + ".peu", FileMode.Open, FileAccess.Read);
            BinaryReader BR = new BinaryReader(FS, Encoding.UTF8);

            BR.BaseStream.Seek(0, SeekOrigin.Begin);

            OriginalUnitName = BR.ReadString();
            if (!string.IsNullOrEmpty(OriginalUnitName) && DicUnitType != null)
            {
                OriginalUnit = Unit.FromFullName(OriginalUnitName, Content, DicUnitType, DicRequirement, DicEffect);
                _UnitStat    = OriginalUnit.UnitStat;
            }

            int ListMagicSpellCount = BR.ReadInt32();

            ListMagicSpell = new List <MagicSpell>(ListMagicSpellCount);
            for (int S = 0; S < ListMagicSpellCount; ++S)
            {
                ListMagicSpell.Add(new MagicSpell(BR.ReadString(), this, GlobalMagicContext, DicMagicElement));
            }

            if (Content != null)
            {
                string UnitDirectory = Path.GetDirectoryName("Content\\Units\\Normal\\" + Name);
                string XNADirectory  = UnitDirectory.Substring(8);

                if (File.Exists(UnitDirectory + "\\Map Sprite\\" + Name + ".xnb"))
                {
                    SpriteMap = Content.Load <Texture2D>(XNADirectory + "\\Map Sprite\\" + this.FullName);
                }
                else
                {
                    SpriteMap = Content.Load <Texture2D>("Units/Default");
                }

                if (File.Exists(UnitDirectory + "\\Unit Sprite\\" + Name + ".xnb"))
                {
                    SpriteUnit = Content.Load <Texture2D>(XNADirectory + "\\Unit Sprite\\" + this.FullName);
                }
            }

            FS.Close();
            BR.Close();
        }
 public ProjectileEffect(string EffectTypeName, bool IsPassive)
     : base(EffectTypeName, IsPassive)
 {
     Params = null;
 }
 public BounceAttackOffGroundEffect(ProjectileParams Params)
     : base(Name, false, Params)
 {
 }
Ejemplo n.º 25
0
        public void TestMagicSanboxSimulation()
        {
            List <MagicSpell> ListMagicSpell = new List <MagicSpell>();
            UnitMagic         ActiveUser     = new UnitMagic("Dummy Magic", ListMagicSpell);

            Character DummyCharacter = new Character();

            DummyCharacter.Name          = "Dummy Pilot";
            DummyCharacter.Level         = 1;
            DummyCharacter.ArrayLevelMEL = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelRNG = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelDEF = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelSKL = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelEVA = new int[1] {
                100
            };
            DummyCharacter.ArrayLevelHIT = new int[1] {
                200
            };
            DummyCharacter.ArrayLevelMaxSP = new int[1] {
                50
            };
            ActiveUser.ArrayCharacterActive = new Character[1] {
                DummyCharacter
            };

            ActiveUser.ChanneledMana = 1000;
            MagicSpell        ActiveSpell           = new MagicSpell(ActiveUser, ActiveUser);
            MagicUserParams   Params                = new MagicUserParams(ActiveSpell.GlobalContext);
            ProjectileContext GlobalContext         = new ProjectileContext();
            ProjectileParams  MagicProjectileParams = new ProjectileParams(GlobalContext);

            GlobalContext.OwnerSandbox = Sandbox;
            ListMagicSpell.Add(ActiveSpell);

            MagicCoreFireball FireballCore1 = new MagicCoreFireball(Params, MagicProjectileParams);

            FireballCore1.ListLinkedMagicElement.Add(new ChannelExternalManaSource(Params));
            FireballCore1.ListLinkedMagicElement.Add(new TriggerAfterTimeEllapsed(Params, 5));

            MagicCoreFireball FireballCore2 = new MagicCoreFireball(Params, MagicProjectileParams);

            FireballCore2.ListLinkedMagicElement.Add(new ChannelInternalManaSource(Params));
            FireballCore2.ListLinkedMagicElement.Add(new TriggerAfterTimeEllapsed(Params, 5));

            MagicCoreFireball FireballCore3 = new MagicCoreFireball(Params, MagicProjectileParams);

            FireballCore3.ListLinkedMagicElement.Add(new ChannelInternalManaSource(Params));
            FireballCore3.ListLinkedMagicElement.Add(new TriggerAfterTimeEllapsed(Params, 5));

            FireballCore1.ListLinkedMagicElement.Add(FireballCore2);
            FireballCore1.ListLinkedMagicElement.Add(FireballCore3);

            ActiveSpell.ListMagicCore.Add(FireballCore1);

            ActiveUser.Init();

            List <Core.Item.BaseAutomaticSkill> ListAttackAttribute = ListMagicSpell[0].ComputeSpell();
            CreateFireballEffect FireballEffect = (CreateFireballEffect)ListAttackAttribute[0].CurrentSkillLevel.ListActivation[1].ListEffect[0];

            FireballEffect.ChanneledMana = 2000;
            Constants.TotalGameTime      = 10;

            Sandbox.SimulateAttack(ListAttackAttribute);

            Assert.AreEqual(10, Constants.TotalGameTime);
            Assert.AreEqual(15, Sandbox.TotalDamage);
        }