private void AddChest(Vector3 location, bool locked, bool trapped, bool addHealth) { int id = Game.EntityManager.CreateEntity(); var formComp = new FormComponent(); formComp.InitComponent(id, location, "Chest001", "Chest001_Broken"); Game.EntityManager.AddComponent(id, formComp); var openComp = new OpenComponent(); openComp.InitComponent(null); Game.EntityManager.AddComponent(id, openComp); var animComp = new AnimationComponent(); animComp.InitComponent(null); animComp.Animations.Add(new AnimationSystem.AnimationData() { EntityID = id, Name = "ChestClose", Sound = "ChestClose001", DisablePhysics = true, TriggerEvent = RPGGameEvent.Menu_Close }); animComp.Animations.Add(new AnimationSystem.AnimationData() { EntityID = id, Name = "ChestOpen90", Sound = "ChestOpen001", DisablePhysics = true, TriggerEvent = RPGGameEvent.Menu_Open }); Game.EntityManager.AddComponent(id, animComp); if (locked) { var lockComp = new LockComponent(); lockComp.InitComponent(null); lockComp.InitComponent(44); Game.EntityManager.AddComponent(id, lockComp); } if (trapped) { var trapComp = new TrapComponent(); trapComp.InitComponent(formComp, new EffectSystem.EffectData() { AreaOfEffectRadius = 10, Duration = 5, PrefabName = "AOE/Fireball", TargetType = EffectSystem.TargetTypeEnum.AreaOfEffect, Damage = new DieRollData(2, 4, 0, 0), DamageType = AttackSystem.DamageTypes.Crush, Description_Attack = "Fireball Blast" }); Game.EntityManager.AddComponent(id, trapComp); } if (addHealth) { var health = new HealthComponent() { Damage = 0, DeathType = HealthComponent.DeathTypes.Broken, HP_Max = 5000 }; Game.EntityManager.AddComponent(id, health); } }
private void AddDoor(Vector3 location) { int id = Game.EntityManager.CreateEntity(); var formComp = new FormComponent(); formComp.InitComponent(id, location, "Door001", ""); Game.EntityManager.AddComponent(id, formComp); var openComp = new OpenComponent(); openComp.InitComponent(null); Game.EntityManager.AddComponent(id, openComp); var animComp = new AnimationComponent(); animComp.InitComponent(null); animComp.Animations.Add(new AnimationSystem.AnimationData() { EntityID = id, Name = "DoorClose90", Sound = "DoorClose001", DisablePhysics = true, TriggerEvent = RPGGameEvent.Menu_Close }); animComp.Animations.Add(new AnimationSystem.AnimationData() { EntityID = id, Name = "DoorOpen90", Sound = "DoorOpen001", DisablePhysics = true, TriggerEvent = RPGGameEvent.Menu_Open }); Game.EntityManager.AddComponent(id, animComp); //// Theoretically, this should work if the attribute table is set in the blueprints. Untested //var cursorComp = new CursorComponent(); //cursorComp.InitComponent(null); //Game.EntityManager.AddComponent(id, cursorComp); }
private void OnBroken(int entityID) { // Check for anything "inside" the item that should be saved? // Replace FormComponent? FormComponent newForm = null; var form = this.EntityManager.GetComponent <FormComponent>(entityID); if (form != null && form.PrefabDeath != "") { newForm = new FormComponent(); newForm.InitComponent(entityID, form.Position_Center, form.PrefabDeath, ""); } // Other Components that suruve should be copied here // Remove components unless of a type to keep var removeList = this.EntityManager.GetComponents(entityID); foreach (var comp in removeList) { this.EntityManager.RemoveComponent(entityID, comp.GetType()); } // Add new Components if (newForm != null) { this.EntityManager.AddComponent(entityID, newForm); } this.EventManager.QueueEvent(RPGGameEvent.Death_Broken, new Broken() { EntityID = entityID }); }
private void AddPlayer() { playerID = Game.EntityManager.CreateEntity(); var inputBlock = new ActionComponent(); inputBlock.InitComponent(null); Game.EntityManager.AddComponent(playerID, inputBlock); var form = new FormComponent(); form.InitComponent(playerID, new Vector3(0, 50, 0), "Player", ""); Game.EntityManager.AddComponent(playerID, form); var animComp = new AnimationComponent(); animComp.InitComponent(null); Game.EntityManager.AddComponent(playerID, animComp); var move = new MovementComponent(); move.InitComponent(null); Game.EntityManager.AddComponent(playerID, move); var crouch = new CrouchComponent(); crouch.InitComponent(null); Game.EntityManager.AddComponent(playerID, crouch); var run = new RunComponent(); run.InitComponent(null); Game.EntityManager.AddComponent(playerID, run); var jump = new JumpComponent(); jump.InitComponent(null); Game.EntityManager.AddComponent(playerID, jump); var skill = new SkillComponent(); skill.InitComponent(null); Game.EntityManager.AddComponent(playerID, skill); var health = new HealthComponent() { Damage = 0, DeathType = HealthComponent.DeathTypes.LifeEnded, HP_Max = 50 }; health.InitComponent(null); Game.EntityManager.AddComponent(playerID, health); var menuOptions = new MenuComponent(); menuOptions.InitComponent(null); menuOptions.InitComponent(playerID, "Menu"); Game.EntityManager.AddComponent(playerID, menuOptions); }
//private void OnUnity_OnAreaOfEffectStay(GameEvent e) //{ // var data = (EntityBehaviour.Unity_OnTriggerStayData)e.EventData; // // AttackComponent // var attack = this.EntityManager.GetComponent<AttackComponent>(data.ItemID); // if (attack != null) // { // this.EventManager.QueueEvent(RPGGameEvent.AttackHit, new AttackSystem.AttackHit() { EntityID = data.ActorID, AttackerID = data.ItemID }); // } //} public static void CreateEffectEntity(EntityManager em, EffectData data) { if (data == null) { return; } int id = em.CreateEntity(); FormComponent form = null; DurationComponent duration = null; // FormComponent if (data.PrefabName != "") { form = new FormComponent(); form.InitComponent(id, data.Location, data.PrefabName, ""); em.AddComponent(id, form); // AreaOfEffectComponent if (data.TargetType == TargetTypeEnum.AreaOfEffect) { form.SetSphereColliderRadius(data.AreaOfEffectRadius); } } // DurationComponent if (data.Duration >= 0) { duration = new DurationComponent(); duration.InitComponent(data.Duration, false); em.AddComponent(id, duration); } // AttackComponent if (data.Description_Attack != "") { //var attack = new AttackComponent() { Damage = data.Damage, DamageType = data.DamageType, Description = data.Description_Attack }; //em.AddComponent(id, attack); } if (duration != null) { duration.TimerActive = true; } if (form != null) { form.SetActive(true); } }