//--------------------------------------------------------------------------- private static Pickup Create(string name, Vector3 location, Vector3 force) { Pickup pickup = EntityFactory.Create <Pickup>(string.Format("{0}Pickup", name)); pickup.AddComponent <TransformComponent>().Init(location); PhysicsComponent physics = pickup.AddComponent <PhysicsComponent>(); physics.Init(BodyType.Dynamic, 0.97f, 2.0f); CircleColliderComponent collider = pickup.AddComponent <CircleColliderComponent>(); collider.Init(25, BodyType.Dynamic); collider.SetCollidesWith(ECollisionCategory.Stage); collider.SetCollisionCategory(ECollisionCategory.Pickup); collider.SetRestitution(0.3f); //collider.SetSensor(true); physics.ApplyForce(force, true); pickup.AddComponent <DespawnComponent>(); return(pickup); }
//--------------------------------------------------------------------------- public static Pickup Create(EPickups pickupType, Vector3 location, Vector3 force) { Pickup pickup = Create(pickupType.ToString(), location, force); IPickupComponent pickupComponent = null; Sprite sprite = m_Sprites[pickupType]; pickup.AddComponent <SpriteComponent>().Init(sprite, Vector2.Zero, Vector2.One * 2); pickup.AddComponent <ShadowComponent>().Init(sprite, Vector2.One * 2, new Vector2(0, 3)); pickup.AddComponent <LightingComponent>().Init(sprite, Vector2.Zero, Vector2.One * 2, Color.White, 0.5f); switch (pickupType) { case EPickups.Health: pickupComponent = pickup.AddComponent <HealthPickupComponent>(); break; case EPickups.Mana: pickupComponent = pickup.AddComponent <ManaPickupComponent>(); break; case EPickups.Coin: pickupComponent = pickup.AddComponent <CoinPickupComponent>(); break; default: AssertManager.Get().Show("Value used by 'Create' does not fit range of EPickups"); break; } if (pickupComponent != null) { pickup.GetComponent <CircleColliderComponent>().Enter += (source, target) => { pickupComponent.OnPickup(target); }; } return(pickup); }
//--------------------------------------------------------------------------- public static Pickup Create(EItemType itemType, Vector3 location, Vector3 force) { Pickup pickup = Create(itemType.ToString(), location, force); Sprite sprite = ItemManager.Get().Find(itemType).Sprite; pickup.AddComponent <SpriteComponent>().Init(sprite, Vector2.Zero, Vector2.One * 2); pickup.AddComponent <ShadowComponent>().Init(sprite, Vector2.One * 2, new Vector2(0, 3)); pickup.AddComponent <LightingComponent>().Init(sprite, Vector2.Zero, Vector2.One * 2, Color.White, 0.5f); ParticleSpawnerComponent particleSpawner = pickup.AddComponent <ParticleSpawnerComponent>(); Color color = ItemManager.Get().GetColorByType(itemType); ParticleDesc desc = ParticleDesc.Stars; desc.ParticleColor = (time) => color; desc.LightColor = (time) => color; particleSpawner.Emitter = new CircleParticleEmitter(0, 30, desc) { Sprite = CollisionManager.Get().PointTexture, Light = CollisionManager.Get().PointTexture, SpawnRate = (time) => 20 }; pickup.AddComponent <LightingComponent>().Init(AssetManager.Get().Find <Texture2D>(ELightAssets.CircleLight), Vector2.Zero, Vector2.One * 0.5f, Color.White, 0.8f); ItemPickupComponent pickupComponent = pickup.AddComponent <ItemPickupComponent>(); if (pickupComponent != null) { pickupComponent.Type = itemType; pickup.GetComponent <CircleColliderComponent>().Enter += (source, target) => { pickupComponent.OnPickup(target); }; } return(pickup); }