Beispiel #1
0
        private Projectile Create(string animName, int width, int height, float density)
        {
            SpinelessEntitySettings ses = new SpinelessEntitySettings();

            ses.ActivateByDefault    = false;
            ses.ClipFile             = "projectiles";
            ses.EntityClass          = "Spineless.Entities.Projectile, Spineless";
            ses.DefaultAnimName      = animName;
            ses.Physics              = new SpinelessPhysicsSettings();
            ses.Physics.Width        = ConvertUnits.ToSimUnits(width);
            ses.Physics.Height       = ConvertUnits.ToSimUnits(height);
            ses.Physics.Density      = density;
            ses.Physics.Offset       = new Vector2(0, -(ses.Physics.Height / 2));
            ses.Position             = PROJECTILE_START_POS;
            ses.Physics.Category     = SpinelessCollisionCategories.AllProjectiles;
            ses.Physics.CollidesWith = SpinelessCollisionCategories.Terrain | SpinelessCollisionCategories.Enemy;

            Projectile p = (Projectile)ses.CreateEntity();

            p.Initialize(lvl);

            p.Deactivated += new Action <Entity>(OnProjectileDeactivated);
            p.Physics.Bodies[0].FixtureList[0].CollidesWith        = (Category)(SpinelessCollisionCategories.Terrain | SpinelessCollisionCategories.Enemy);
            p.Physics.Bodies[0].FixtureList[0].CollisionCategories = (Category)SpinelessCollisionCategories.SplashProjectile;
            p.Physics.Bodies[0].FixtureList[0].OnCollision         = OnProjectileCollision;
            p.Physics.Bodies[0].FixtureList[0].UserData            = p;

            return(p);
        }
Beispiel #2
0
        Unit Create(UnitType et)
        {
            SpinelessEntitySettings es = new SpinelessEntitySettings();

            es.EntityClass       = "Spineless.Entities.Unit,Spineless";
            es.DefaultAnimName   = "walk";
            es.ClipFile          = enemyClipNames[et];
            es.Physics           = new SpinelessPhysicsSettings();
            es.Physics.Width     = 0.6f;
            es.Physics.Height    = 1f;
            es.Physics.Offset    = new Vector2(0.0f, -0.5f);
            es.Physics.Density   = 2.0f;
            es.ActivateByDefault = false;
            var e = (Unit)es.CreateEntity();

            e.UnitType     = et;
            e.Activated   += UnitActivated;
            e.Deactivated += UnitDeactivated;
            e.Initialize(screen);


            e.Physics.Bodies[0].Friction = 0.1f;
            e.Physics.Bodies[0].FixtureList[0].UserData = e;

            e.UnitManager = this;
            //e.Behaviour   = behaviours.Create<IBaseUnit>(et);

            var unitSettings = settings[et];

            e.Health         = unitSettings.Health;
            e.Speed          = unitSettings.Speed;
            e.Damage         = unitSettings.Damage;
            e.AttackInterval = unitSettings.AttackInterval;

            unitLists[et].Add(e);
            return(e);
        }