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(); }
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); }
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); } }
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; }
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; }
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. }
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); }
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); }
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); }
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) { }
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); }
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) }); }
public MagicCoreOffset(MagicUserParams Params, ProjectileParams AttackParams) : this(Params, AttackParams, 0, 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) { }
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); }