Example #1
0
        private IEnumerable Intro(Story story, EntityWorld world)
        {
            var bgGenerator = ServiceLocator.Instance.GetService<SpaceBackgroundGeneratorService>();
            bgGenerator.GenerateBackground(world, 12345);

            var entity = world.CreateStoryOverlay(Properties.Resources.String_ActOne_Intro01);

            yield return Coroutine.WaitFor(TimeSpan.FromSeconds(2));
            entity.FadeGuiElement(TimeSpan.FromSeconds(1.5), 0)
                .OnDone = () => entity.Delete();
            yield return Coroutine.WaitFor(TimeSpan.FromSeconds(2));

            var variant = new ShipVariant
            {
                HullId = "Jormugand",
                TrimDecalColor = Color.Cyan,
                BaseDecalColor = new Color(212, 113, 108),
            };
            _playerEntity = world.CreateShip(variant, new Vector2(500,0),0, physics:true);
            _playerEntity.Tag = "PlayerShip";
            _playerEntity.Refresh();
            var cameraControl = world.SystemManager.GetSystem<Systems.CameraControlSystem>();
            cameraControl.Mode = Systems.CameraMode.FollowEntity;
            cameraControl.FollowedEntity = _playerEntity;

            var test = world.CreateShip("mobius", new Vector2(0, 0), MathHelper.Pi * 1.5f, physics:true);
            test.GetComponent<ShipModelComponent>().BaseDecalColor = Color.Khaki;

            story.State.Fire(Story.Triggers.NextScene);
            yield return null;
        }
Example #2
0
        public override void Process(Entity e)
        {
            Transform transform = transformMapper.Get(e);

            UpdateInput();
            if (moveLeft)
            {
                transform.AddX(world.GetDelta() * -0.3f);
            }
            if (moveRight)
            {
                transform.AddX(world.GetDelta() * 0.3f);
            }

            if (shoot)
            {
                Entity missile = EntityFactory.CreateMissile(world);
                missile.GetComponent <Transform>().SetLocation(transform.GetX() + 30, transform.GetY() - 20);
                missile.GetComponent <Velocity>().SetVelocity(-0.5f);
                missile.GetComponent <Velocity>().SetAngle(90);
                missile.Refresh();

                shoot = false;
            }
        }
        public override void Process(Entity e)
        {
            Transform transform = transformMapper.Get(e);

            UpdateInput();
            if (moveLeft)
            {
                transform.X += world.Delta * -0.3f;
            }
            if (moveRight)
            {
                transform.X += world.Delta * 0.3f;
            }

            if (shoot)
            {
                Entity missile = EntityFactory.CreateMissile(world);
                missile.GetComponent <Transform>().SetLocation(transform.X + 30, transform.Y - 20);
                missile.GetComponent <Velocity>().Speed = -0.5f;
                missile.GetComponent <Velocity>().Angle = 90;
                missile.Refresh();

                shoot = false;
            }
        }
 public Entity BuildEntity(Entity et1, EntityWorld world , params object[] args)
 {
     et1.AddComponent(new Power());
     et1.GetComponent<Power>().POWER = 100;
     et1.Refresh();
     return et1;
 }
Example #5
0
        /// <summary>The build entity.</summary>
        /// <param name="entity">The entity.</param>
        /// <param name="entityWorld">The entityWorld.</param>
        /// <param name="args">The args.</param>
        /// <returns>The <see cref="Entity" />.</returns>
        public Entity BuildEntity(Entity entity, EntityWorld entityWorld, params object[] args)
        {
            entity.AddComponent(new Damage(1f));

            entity.Refresh();

            return(entity);
        }
Example #6
0
        /// <summary>
        /// Create a Drawlet, which is a moveable, drawable Entity
        /// </summary>
        /// <returns></returns>
        public static Entity CreateDrawlet()
        {
            Entity e = CreateGamelet();

            e.AddComponent(new DrawComp());
            e.Refresh();
            return(e);
        }
Example #7
0
        /// <summary>
        /// Quick program to test my navigation stuff
        /// http://www.ffevo.net/wiki/index.php/FFACETools
        /// Credits goes to cpirie
        /// </summary>
        /// <param name="args"></param>
        private static void Main(string[] args)
        {
            FFXIVLIB instance = new FFXIVLIB();
            Entity   player   = instance.GetEntityInfo(0);

            while (true)
            {
                string sResult = "Heading: ";
                double degrees = player.Structure.Heading * (180 / Math.PI) + 180;
                if (degrees > 360)
                {
                    degrees -= 360;
                }
                else if (degrees < 0)
                {
                    degrees += 360;
                }
                sResult += Math.Floor(degrees) + "° ";

                if (337 < degrees || 23 >= degrees)
                {
                    sResult += "(N)";
                }
                else if (23 < degrees && 68 >= degrees)
                {
                    sResult += "(NW)";
                }
                else if (68 < degrees && 113 >= degrees)
                {
                    sResult += "(W)";
                }
                else if (113 < degrees && 158 >= degrees)
                {
                    sResult += "(SW)";
                }
                else if (158 < degrees && 203 >= degrees)
                {
                    sResult += "(S)";
                }
                else if (203 < degrees && 248 >= degrees)
                {
                    sResult += "(SE)";
                }
                else if (248 < degrees && 293 >= degrees)
                {
                    sResult += "(E)";
                }
                else if (293 < degrees && 337 >= degrees)
                {
                    sResult += "(NE)";
                }
                Console.WriteLine("Heading: {0} Deg: {1}, X: {2}, Y: {3}", player.Structure.Heading.ToString(),
                                  sResult, player.Structure.X.ToString(), player.Structure.Y.ToString());
                player.Refresh();
                Thread.Sleep(1000);
            }
// ReSharper disable once FunctionNeverReturns
        }
Example #8
0
        /// <summary>
        /// Create a Gamelet, which is an Entity with position and velocity, but no shape/drawability (yet).
        /// </summary>
        /// <returns></returns>
        public static Entity CreateGamelet()
        {
            Entity e = CreateEntity();

            e.AddComponent(new PositionComp());
            e.AddComponent(new VelocityComp());
            e.Refresh();
            return(e);
        }
Example #9
0
        /// <summary>
        /// Create a Spritelet, which is a moveable sprite
        /// </summary>
        /// <param name="graphicsFile">The content graphics file with or without extension. If
        /// extension given eg "ball.png", the uncompiled file will be loaded at runtime. If no extension
        /// given eg "ball", precompiled XNA content will be loaded (.xnb files).</param>
        /// <returns></returns>
        public static Entity CreateSpritelet(string graphicsFile)
        {
            Entity e          = CreateDrawlet();
            var    spriteComp = new SpriteComp(graphicsFile);

            e.AddComponent(spriteComp);
            e.Refresh();
            return(e);
        }
Example #10
0
        /// <summary>The build entity.</summary>
        /// <param name="entity">The entity.</param>
        /// <param name="entityWorld">The entity world.</param>
        /// <param name="args">The args.</param>
        /// <returns>The built <see cref="Entity" />.</returns>
        public Entity BuildEntity(Entity entity, EntityWorld entityWorld, params object[] args)
        {
            entity.AddComponent(new TestPowerComponent());
            entity.GetComponent <TestPowerComponent>().Power = 100;

            entity.Refresh();

            return(entity);
        }
Example #11
0
        public static void multsystem()
        {
            healthBag.Clear();
            componentPool.Clear();

            healthBag.Add(new Health());
            healthBag.Add(new Health());
            componentPool.Add(typeof(Health), healthBag);

            Bag <Component> tempBag;
            EntityWorld     world         = new EntityWorld();
            SystemManager   systemManager = world.SystemManager;

            world.EntityManager.RemovedComponentEvent += new RemovedComponentHandler(RemovedComponent);
            world.EntityManager.RemovedEntityEvent    += new RemovedEntityHandler(RemovedEntity);
            EntitySystem hs = systemManager.SetSystem(new SingleHealthBarRenderSystem(), ExecutionType.Update);

            hs = systemManager.SetSystem(new DummySystem(), ExecutionType.Update);
            hs = systemManager.SetSystem(new DummySystem2(), ExecutionType.Update);
            hs = systemManager.SetSystem(new DummySystem3(), ExecutionType.Update);
            systemManager.InitializeAll();


            List <Entity> l = new List <Entity>();

            for (int i = 0; i < 100000; i++)
            {
                Entity et = world.CreateEntity();
                et.AddComponent(new Health());
                et.GetComponent <Health>().HP += 100;
                et.Refresh();
                l.Add(et);
            }

            for (int i = 0; i < 100; i++)
            {
                DateTime dt = DateTime.Now;
                world.LoopStart();
                systemManager.UpdateAsynchronous(ExecutionType.Update);
                //systemManager.UpdateSynchronous(ExecutionType.Update);
                Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
            }

            //int df = 0;
            //foreach (var item in l)
            //{
            //    if (item.GetComponent<Health>().GetHealth() == 90)
            //    {
            //        df++;
            //    }
            //    else
            //    {
            //        Console.WriteLine("errro");
            //    }
            //}
        }
Example #12
0
        /// <summary>The build entity.</summary>
        /// <param name="entity">The entity.</param>
        /// <param name="entityWorld">The entityWorld.</param>
        /// <param name="args">The args.</param>
        /// <returns>The <see cref="Entity" />.</returns>
        public Entity BuildEntity(Entity entity, EntityWorld entityWorld, params object[] args)
        {
            entity.AddComponentFromPool <Position>();
            entity.AddComponentFromPool <Pickupable>();
            entity.AddComponentFromPool <Appearance>();
            entity.GetComponent <Appearance>().Initialize("Images/ManaCrystal.xml");
            entity.Refresh();

            return(entity);
        }
        protected override void ProcessEntities(Dictionary <int, Entity> entities)
        {
            Entity e = EntityFactory.CreateEnemyShip(world);

            e.GetComponent <Transform>().SetLocation(r.Next(spriteBatch.GraphicsDevice.Viewport.Width), r.Next(400) + 50);
            e.GetComponent <Velocity>().SetVelocity(0.05f);
            e.GetComponent <Velocity>().SetAngle(r.Next() % 2 == 0 ? 0 : 180);

            e.Refresh();
        }
Example #14
0
        public static void Randomize()
        {
            Clear();
            Sprite startingCells = new Sprite(cells.spriteSheet[0][0].grid);

            int remainingCells;

            if (limitRandomizedCells)
            {
                remainingCells = (Game.viewport.size.x * Game.viewport.size.y) / 10;
            }
            else
            {
                remainingCells = (Game.size.x * Game.size.y) / 10;
            }

            while (remainingCells > 0)
            {
                int y;
                int x;

                if (limitRandomizedCells)
                {
                    y = Tools.rng.Next(Game.viewport.position.y, Game.viewport.position.y + Game.viewport.size.y);
                    x = Tools.rng.Next(Game.viewport.position.x, Game.viewport.position.x + Game.viewport.size.x);
                }
                else
                {
                    y = Tools.rng.Next(0, Game.size.y);
                    x = Tools.rng.Next(0, Game.size.x);
                }

                if (startingCells.grid[y][x].background == deadColor)
                {
                    startingCells.grid[y][x].background = aliveColor;
                    remainingCells -= 1;
                }
            }

            cells.spriteSheet[0][0] = startingCells;
            cells.Refresh();
        }
        public Entity BuildEntity(Entity e, params object[] args)
        {
            string text = (string)args[0];
            Vector2 position = (Vector2)args[1];
            float time = 0.9f;

            e.AddComponent<FadingText>(new FadingText(text, time, position));

            e.Refresh();
            return e;
        }
Example #16
0
        /// <summary>
        /// Attaches a control to an <see cref="Entity"/> instance, using the specified offset.
        /// </summary>
        /// <param name="control">Control instance being attached to the entity.</param>
        /// <param name="entity">Entity instance to which the control is being attached.</param>
        /// <param name="offset">Offset from the entity's position to display the control.</param>
        public static void AttachToEntity(this Control control, Entity entity, Vector2 offset)
        {
            ControlComponent controlComponent = new ControlComponent()
            {
                Control = control,
                Offset  = offset
            };

            entity.AddComponent <ControlComponent>(controlComponent);
            entity.Refresh();
        }
        /// <summary>The build entity.</summary>
        /// <param name="entity">The entity.</param>
        /// <param name="entityWorld">The entityWorld.</param>
        /// <param name="args">The args.</param>
        /// <returns>The <see cref="Entity" />.</returns>
        public Entity BuildEntity(Entity entity, EntityWorld entityWorld, params object[] args)
        {
            entity.AddComponentFromPool <Enchantment>();
            entity.AddComponentFromPool <Team>();
            entity.AddComponentFromPool <Position>();
            entity.AddComponentFromPool <Appearance>();

            entity.Refresh();

            return(entity);
        }
Example #18
0
        /// <summary>The build entity.</summary>
        /// <param name="entity">The entity.</param>
        /// <param name="entityWorld">The entityWorld.</param>
        /// <param name="args">The args.</param>
        /// <returns>The <see cref="Entity" />.</returns>
        public Entity BuildEntity(Entity entity, EntityWorld entityWorld, params object[] args)
        {
            entity.AddComponentFromPool <Position>();
            entity.AddComponentFromPool <Pickupable>();
            entity.GetComponent <Pickupable>().currentValue = 0.2f;
            entity.GetComponent <Pickupable>().maxValue     = 0;
            entity.AddComponentFromPool <Appearance>();

            entity.Refresh();

            return(entity);
        }
Example #19
0
        /// <summary>
        /// Creates a Textlet, which is a moveable piece of text. (TODO: font)
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static Entity CreateTextlet(string text)
        {
            Entity e = CreateDrawlet();

            e.AddComponent(new ScaleComp());
            TextComp tc = new TextComp(text);

            tc.Font = _game.Content.Load <SpriteFont>("TTDebugFont"); // FIXME allow other fonts
            e.AddComponent(tc);
            e.Refresh();
            return(e);
        }
Example #20
0
 /// <summary>
 /// Add a Modifier script to an Entity, based on a code block (delegate) and a VectorFunction
 /// </summary>
 /// <param name="e">Entity to add modifier script to</param>
 /// <param name="scriptCode">Code block (delegate) that is the script</param>
 /// <param name="func">Function whose value will be passed in ScriptContext.FunctionValue to script</param>
 /// <returns></returns>
 public static VectorModifierScript AddModifier(Entity e, VectorModifierDelegate scriptCode, IVectorFunction func)
 {
     if (!e.HasComponent<ScriptComp>())
     {
         e.AddComponent(new ScriptComp());
         e.Refresh();
     }
     var sc = e.GetComponent<ScriptComp>();
     var script = new VectorModifierScript(scriptCode, func);
     sc.Add(script);
     return script;
 }
Example #21
0
        /// <summary>The build entity.</summary>
        /// <param name="entity">The entity.</param>
        /// <param name="entityWorld">The entityWorld.</param>
        /// <param name="args">The args.</param>
        /// <returns>The <see cref="Entity" />.</returns>
        public Entity BuildEntity(Entity entity, EntityWorld entityWorld, params object[] args)
        {
            entity.AddComponentFromPool <Health>();
            entity.AddComponentFromPool <ScreenPosition>();
            entity.AddComponentFromPool <PlatformPosition>();
            entity.AddComponentFromPool <PlayerNumber>();
            entity.AddComponentFromPool <Input>();

            entity.Refresh();

            return(entity);
        }
Example #22
0
        public static void HybridQueueSystemTeste()
        {
            EntityWorld           world                 = new EntityWorld();
            SystemManager         systemManager         = world.SystemManager;
            HybridQueueSystemTest HybridQueueSystemTest = new ArtemisTest.HybridQueueSystemTest();
            EntitySystem          hs = systemManager.SetSystem(HybridQueueSystemTest, ExecutionType.Update);

            systemManager.InitializeAll();

            List <Entity> l = new List <Entity>();

            for (int i = 0; i < 100; i++)
            {
                Entity et = world.CreateEntity();
                et.AddComponent(new Health());
                et.GetComponent <Health>().HP += 100;
                et.Refresh();
                l.Add(et);
            }

            for (int i = 0; i < 100; i++)
            {
                Entity et = world.CreateEntity();
                et.AddComponent(new Health());
                et.GetComponent <Health>().HP += 100;
                HybridQueueSystemTest.
                AddToQueue(et);
                l.Add(et);
            }

            int j = 0;

            while (HybridQueueSystemTest.QueueCount > 0)
            {
                j++;
                DateTime dt = DateTime.Now;
                world.LoopStart();
                systemManager.UpdateSynchronous(ExecutionType.Update);
                Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
            }

            for (int i = 0; i < 100; i++)
            {
                Debug.Assert(l[i].GetComponent <Health>().HP == 100 - (10 * j));
            }

            for (int i = 100; i < 200; i++)
            {
                Debug.Assert(l[i].GetComponent <Health>().HP == 90);
            }
        }
Example #23
0
        static void multi()
        {
            healthBag.Add(new Health());
            healthBag.Add(new Health());
            componentPool.Add(typeof(Health), healthBag);

            Bag <Component> tempBag;
            EntityWorld     world         = new EntityWorld();
            SystemManager   systemManager = world.GetSystemManager();

            world.GetEntityManager().RemovedComponentEvent += new RemovedComponentHandler(RemovedComponent);
            world.GetEntityManager().RemovedEntityEvent    += new RemovedEntityHandler(RemovedEntity);

            EntitySystem hs = systemManager.SetSystem(new MultHealthBarRenderSystem(), ExecutionType.Update);

            //EntitySystem hs = systemManager.SetSystem(new SingleHEAVYHealthBarRenderSystem(),ExecutionType.Update);
            systemManager.InitializeAll();

            List <Entity> l = new List <Entity>();

            for (int i = 0; i < 1000; i++)
            {
                Entity et = world.CreateEntity();
                et.AddComponent(new Health());
                et.GetComponent <Health>().AddHealth(100);
                et.Refresh();
                l.Add(et);
            }

            for (int i = 0; i < 100; i++)
            {
                DateTime dt = DateTime.Now;
                world.LoopStart();
                systemManager.UpdateSynchronous(ExecutionType.Update);
                Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
            }

            int df = 0;

            foreach (var item in l)
            {
                if (item.GetComponent <Health>().GetHealth() == 90)
                {
                    df++;
                }
            }


            Console.ReadLine();
        }
Example #24
0
        private void InitPlayerShip()
        {
            Entity e = world.CreateEntity();

            e.SetGroup("SHIPS");

            e.AddComponent(pool.TakeComponent <Transform>());
            e.AddComponent(pool.TakeComponent <SpatialForm>());
            e.AddComponent(pool.TakeComponent <Health>());
            e.GetComponent <SpatialForm>().SetSpatialFormFile("PlayerShip");
            e.GetComponent <Health>().SetHealth(30);
            e.GetComponent <Transform>().SetCoords(new Vector3(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height - 50, 0));
            e.Refresh();
            world.GetTagManager().Register("PLAYER", e);
        }
Example #25
0
        private void InitEnemyShips()
        {
            Random r = new Random();

            for (int i = 0; 2 > i; i++)
            {
                Entity e = EntityFactory.CreateEnemyShip(world);

                e.GetComponent <Transform>().SetLocation(r.Next(GraphicsDevice.Viewport.Width), r.Next(400) + 50);
                e.GetComponent <Velocity>().SetVelocity(0.05f);
                e.GetComponent <Velocity>().SetAngle(r.Next() % 2 == 0 ? 0 : 180);

                e.Refresh();
            }
        }
Example #26
0
        /// <summary>The build entity.</summary>
        /// <param name="entity">The entity.</param>
        /// <param name="entityWorld">The entityWorld.</param>
        /// <param name="args">The args.</param>
        /// <returns>The <see cref="Entity" />.</returns>
        public Entity BuildEntity(Entity entity, EntityWorld entityWorld, params object[] args)
        {
            entity.AddComponentFromPool <Health>();
            entity.AddComponentFromPool <Damage>();
            entity.AddComponentFromPool <Team>();
            entity.AddComponentFromPool <Position>();
            entity.AddComponentFromPool <Velocity>();
            entity.AddComponentFromPool <Collision>();
            entity.AddComponentFromPool <Appearance>();
            entity.AddComponentFromPool <SpawnPoint>();
            entity.AddComponentFromPool <StatsDisplay>();
            entity.AddComponentFromPool <AI>();


            entity.Refresh();

            return(entity);
        }
Example #27
0
        public override void Process(Entity e)
        {
            if (!e.HasComponent<AI>())
                return;

            AI ai = e.GetComponent<AI>();

            bool behavior;

            if (ai.Target != null)
            {
                if (World.EntityManager.GetEntity((ai.Target.UserData as Entity).Id) == null)
                    ai.Target = null;
                else if (!(!ai.Recalculate && ai.Calculated) && ai.Target != null && (ai.Target.UserData as Entity) != null && !(behavior = ai.Behavior(ai.Target))) //Run ai behavior, if behavior returns true look for new target.
                {
                    ai.Calculated = true;

                    if (ai.Target == null && e.Group != "Players" && e.Group != "Structures" && !e.Tag.Contains("Cannon"))
                    {
                        if (e.HasComponent<Health>())
                            e.GetComponent<Health>().SetHealth(null, 0);
                        else
                            e.Delete();
                    }

                    return;
                }
            }

            ai.Calculated = true;
            ai.Target = _FindNewTarget(ai, e.GetComponent<Body>());

            if (ai.Target == null && e.Group != "Players" && e.Group != "Structures" && !e.Tag.Contains("Boss"))
            {
                if (e.HasComponent<Health>())
                    e.GetComponent<Health>().SetHealth(null, 0);
                else
                    e.Delete();
            }
            else if (ai.Target == null && e.Group == "Players")
                ai.Behavior(null);

            e.Refresh();
        }
        public override void Process(Entity e)
        {
            Weapon weapon = weaponMapper.Get(e);

            long t = weapon.ShotAt + TimeSpan.FromSeconds(2).Ticks;

            if (t < DateTime.Now.Ticks)
            {
                Transform transform = transformMapper.Get(e);

                Entity missile = EntityFactory.CreateMissile(world);
                missile.GetComponent <Transform>().SetLocation(transform.X + 20, transform.Y + 20);
                missile.GetComponent <Velocity>().Speed = -0.5f;
                missile.GetComponent <Velocity>().Angle = 270;
                missile.Refresh();

                weapon.ShotAt = DateTime.Now.Ticks;
            }
        }
Example #29
0
        public static void SystemComunicationTeste()
        {
            EntitySystem.BlackBoard.SetEntry <int>("Damage", 5);

            EntityWorld              world                    = new EntityWorld();
            SystemManager            systemManager            = world.SystemManager;
            DummyCommunicationSystem DummyCommunicationSystem = new DummyCommunicationSystem();

            systemManager.SetSystem(DummyCommunicationSystem, ExecutionType.Update);
            systemManager.InitializeAll();

            List <Entity> l = new List <Entity>();

            for (int i = 0; i < 100; i++)
            {
                Entity et = world.CreateEntity();
                et.AddComponent(new Health());
                et.GetComponent <Health>().HP += 100;
                et.Refresh();
                l.Add(et);
            }

            {
                DateTime dt = DateTime.Now;
                world.LoopStart();
                systemManager.UpdateSynchronous(ExecutionType.Update);
                Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
            }

            EntitySystem.BlackBoard.SetEntry <int>("Damage", 10);

            {
                DateTime dt = DateTime.Now;
                world.LoopStart();
                systemManager.UpdateSynchronous(ExecutionType.Update);
                Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
            }

            foreach (var item in l)
            {
                Debug.Assert(item.GetComponent <Health>().HP == 85);
            }
        }
        /// <summary>Processes the entities.</summary>
        /// <param name="entities">The entities.</param>
        protected override void ProcessEntities(IDictionary <int, Entity> entities)
        {
            Bag <Entity> bullets = this.EntityWorld.GroupManager.GetEntities("BULLETS");
            Bag <Entity> ships   = this.EntityWorld.GroupManager.GetEntities("SHIPS");

            if (bullets != null && ships != null)
            {
                ///being brutal !!!
                for (int shipIndex = 0; ships.Count > shipIndex; ++shipIndex)
                {
                    Entity ship = ships.Get(shipIndex);
                    for (int bulletIndex = 0; bullets.Count > bulletIndex; ++bulletIndex)
                    {
                        Entity bullet = bullets.Get(bulletIndex);

                        if (this.CollisionExists(bullet, ship))
                        {
                            TransformComponent bulletTransform = bullet.GetComponent <TransformComponent>();
                            Entity             bulletExplosion = this.EntityWorld.CreateEntityFromTemplate(BulletExplosionTemplate.Name);
                            bulletExplosion.GetComponent <TransformComponent>().Position = bulletTransform.Position;
                            bulletExplosion.Refresh();
                            bullet.Delete();

                            HealthComponent healthComponent = ship.GetComponent <HealthComponent>();
                            healthComponent.AddDamage(4);

                            if (!healthComponent.IsAlive)
                            {
                                TransformComponent shipTransform = ship.GetComponent <TransformComponent>();
                                Entity             shipExplosion = this.EntityWorld.CreateEntityFromTemplate(ShipExplosionTemplate.Name);
                                shipExplosion.GetComponent <TransformComponent>().Position = shipTransform.Position;
                                shipExplosion.Refresh();
                                ship.Delete();
                                break;
                            }
                        }
                    }
                }
            }
        }
Example #31
0
        public static void DummyTests()
        {
            EntityWorld              world                    = new EntityWorld();
            SystemManager            systemManager            = world.SystemManager;
            DummyCommunicationSystem DummyCommunicationSystem = new DummyCommunicationSystem();

            systemManager.SetSystem(DummyCommunicationSystem, ExecutionType.Update);
            systemManager.InitializeAll();

            for (int i = 0; i < 100; i++)
            {
                Entity et = world.CreateEntity();
                et.AddComponent(new Health());
                et.GetComponent <Health>().HP += 100;
                et.Group = "teste";
                et.Refresh();
            }

            {
                Entity et = world.CreateEntity("tag");
                et.AddComponent(new Health());
                et.GetComponent <Health>().HP += 100;
                et.Refresh();
            }

            {
                DateTime dt = DateTime.Now;
                world.LoopStart();
                systemManager.UpdateSynchronous(ExecutionType.Update);
                Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
            }

            Debug.Assert(world.TagManager.GetEntity("tag") != null);
            Debug.Assert(world.GroupManager.GetEntities("teste").Size == 100);
            Debug.Assert(world.EntityManager.ActiveEntitiesCount == 101);
            Debug.Assert(world.SystemManager.Systems.Size == 1);
        }
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderBanKa]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            BanKaOrder BanKaOrder = new BanKaOrder();

            BanKaOrder = JsonToObject.ConvertJsonToModel(BanKaOrder, json);
            if (BanKaOrder.BKTId.IsNullOrEmpty() || BanKaOrder.PayPWD.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (BanKaOrder.PayPWD.Length < 6)//6位及以上
            {
                DataObj.OutError("1000");
                return;
            }
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == BanKaOrder.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }
            if (baseUsers.PayLock == 1)//密码错误太多次锁定
            {
                DataObj.OutError("2050");
                return;
            }

            //这里是执行指纹解锁
            bool IfCheckOk = true;

            if (BanKaOrder.PayPWD.Substring(0, 3) == "HF_")
            {
                string PassWord = BanKaOrder.PayPWD;
                PassWord = PassWord.Replace("HF_", "");
                string Token = baseUsers.Token;
                Token = Token + "GoodPay";
                string Md5Token = Token.GetMD5().ToUpper();
                string Pass     = Md5Token.Substring(0, 4) + Md5Token.Substring(Md5Token.Length - 4, 4);
                if (Pass != PassWord)
                {
                    IfCheckOk = false;
                }
            }
            else if (baseUsers.PayPwd != BanKaOrder.PayPWD.GetPayMD5())
            {
                //原支付密码错误
                IfCheckOk = false;
            }
            if (!IfCheckOk)
            {
                //付密码错误
                SysSet SysSet = Entity.SysSet.FirstOrNew();
                //系统统一修改标识SAME002
                baseUsers.PayErr++;
                if (baseUsers.PayErr >= SysSet.PayLock)
                {
                    baseUsers.PayLock = 1;
                }
                Entity.SaveChanges();
                Users Out = new Users();
                Out.PayErr   = SysSet.PayLock - baseUsers.PayErr;
                Out.Cols     = "PayErr";
                DataObj.Data = Out.OutJson();
                DataObj.Code = "2010";
                DataObj.OutString();
                return;
            }

            baseUsers.PayErr = 0;


            //检测是否已经购买过
            BanKaOrder BKO = Entity.BanKaOrder.FirstOrDefault(n => n.UId == baseUsers.Id && n.BKTId == BanKaOrder.BKTId && n.OrderState == 2 && n.PayState == 1);

            if (BKO != null)
            {
                DataObj.OutError("6051");
                return;
            }

            //获取产品
            BanKaType BanKaType = Entity.BanKaType.FirstOrDefault(n => n.Id == BanKaOrder.BKTId && n.State == 1);

            if (BanKaType == null)
            {
                DataObj.OutError("1000");
                return;
            }
            if (BanKaType.Amoney > baseUsers.Amount)
            {//余额不足
                DataObj.OutError("6026");
                return;
            }

            BanKaOrder.UId    = baseUsers.Id;
            BanKaOrder.Amoney = BanKaType.Amoney;

            BanKaOrder.OrderState = 1;
            BanKaOrder.PayState   = 0;
            BanKaOrder.AddTime    = DateTime.Now;

            BanKaOrder.Agent      = baseUsers.Agent;
            BanKaOrder.AId        = baseUsers.AId;
            BanKaOrder.AgentState = 0;
            //这里是利润计算==========
            BanKaOrder.AgentGet = 0;
            BanKaOrder.AIdGet   = 0;

            Entity.BanKaOrder.AddObject(BanKaOrder);

            Entity.SaveChanges();

            Entity.Refresh(RefreshMode.StoreWins, BanKaOrder);

            //开始支付流程
            //==================================================================
            //帐户变动记录
            int     USERSID  = baseUsers.Id;
            string  TNUM     = BanKaOrder.OId;
            decimal PAYMONEY = BanKaOrder.Amoney;
            string  SP_Ret   = Entity.SP_UsersMoney(USERSID, TNUM, PAYMONEY, 2, BanKaType.Title);

            if (SP_Ret != "3")
            {
                Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", USERSID, TNUM, 2, PAYMONEY, SP_Ret), "SP_UsersMoney");
                BanKaOrder.OrderState = 0;
                Entity.SaveChanges();
                DataObj.OutError("8888");
                return;
            }
            //==================================================================
            //交易标识
            BanKaOrder.OrderState = 2;
            BanKaOrder.PayState   = 1;
            Entity.SaveChanges();

            DataObj.Data = BanKaOrder.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Example #33
0
 /// <summary>
 /// Add a script to an Entity, based on a function (delegate)
 /// </summary>
 /// <param name="e">The Entity to add script to</param>
 /// <param name="scriptCode">Script to run</param>
 /// <returns>IScript object created from the function</returns>
 public static BasicScript AddScript(Entity e, ScriptDelegate scriptCode)
 {
     if (!e.HasComponent<ScriptComp>())
     {
         e.AddComponent(new ScriptComp());
         e.Refresh();
     }
     var sc = e.GetComponent<ScriptComp>();
     var script = new BasicScript(scriptCode);
     sc.Add(script);
     return script;
 }
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[UsersTrueNameByAPI]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserAuth UserAuth = new UserAuth();

            UserAuth = JsonToObject.ConvertJsonToModel(UserAuth, json);

            SysSet SysSet = this.Entity.SysSet.FirstOrNew();

            if (!UserAuth.IdentityCode.IsNullOrEmpty())
            {
                var y        = UserAuth.IdentityCode.Substring(6, 4);
                var m        = UserAuth.IdentityCode.Substring(10, 2);
                var d        = UserAuth.IdentityCode.Substring(12, 2);
                var birthday = new DateTime(int.Parse(y), int.Parse(m), int.Parse(d));
                var now      = DateTime.Now;
                int age      = now.Year - birthday.Year;
                if (now.Month < birthday.Month || (now.Month == birthday.Month && now.Day < birthday.Day))
                {
                    age--;
                }
                if (age > SysSet.AuthMaxAge || age < SysSet.AuthMinAge)
                {
                    DataObj.OutError("1104");
                    return;
                }
            }

            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (UserAuth.Token.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (UserAuth.NeekName.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.X.IsNullOrEmpty() || Users.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }

            string HaoFu_Auth_Open = ConfigurationManager.AppSettings["HaoFu_Auth_Open"].ToString();
            //SysSet SysSet = Entity.SysSet.FirstOrNew();

            byte CardItemNum  = 0;
            byte CardType     = 0;
            byte UsedCardType = 0;

            if (Equipment.RqType == "Apple")
            {
                CardItemNum = SysSet.IosSet10;
                if (SysSet.IosSet11 == 0)
                {
                    CardType = 0;
                }
                if (SysSet.IosSet11 == 1)
                {
                    CardType = 2;
                }
                if (SysSet.IosSet11 == 2)
                {
                    CardType = 1;
                }
            }
            else
            {
                CardItemNum = SysSet.ApkSet10;
                if (SysSet.ApkSet11 == 0)
                {
                    CardType = 0;
                }
                if (SysSet.ApkSet11 == 1)
                {
                    CardType = 2;
                }
                if (SysSet.ApkSet11 == 2)
                {
                    CardType = 1;
                }
            }
            if (HaoFu_Auth_Open != "true")
            {
                CardItemNum = 6;//兼容直连六要素接口
            }
            if (CardItemNum == 6)
            {
                if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty() || UserAuth.Mobile.IsNullOrEmpty() || UserAuth.CVV.IsNullOrEmpty() || UserAuth.EndDate.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                CardType = 2;//六要素一定是信用卡
            }
            else if (CardItemNum == 4)
            {
                if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty() || UserAuth.Mobile.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
            }
            else if (CardItemNum == 3)
            {
                if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
            }
            else
            {
                DataObj.OutError("1000");
                return;
            }
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserAuth.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae == 2)   //已实名认证
            {
                DataObj.OutError("2007");
                return;
            }
            int CardIdCount = Entity.Users.Count(n => n.CardId == UserAuth.IdentityCode && n.CardStae == 2);

            if (CardIdCount > 0) //身份证已用过
            {
                DataObj.OutError("2020");
                return;
            }
            //验证账号是否被限制
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == baseUsers.UserName && UBL.State == 1) != null)
            {
                //提示暂不支持您入网
                DataObj.OutError("2027");
                return;
            }
            //验证身份证是否被限制
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == UserAuth.IdentityCode && UBL.State == 2) != null)
            {
                //提示暂不支持您入网
                DataObj.OutError("2027");
                return;
            }
            //验证银行卡是否被限制
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == UserAuth.BankAccount && UBL.State == 3) != null)
            {
                //提示暂不支持您入网
                DataObj.OutError("2027");
                return;
            }
            //2016-10-07 非法关键词限制
            if (!SysSet.NoWord.IsNullOrEmpty())
            {
                string NeekName = Users.NeekName;
                NeekName = NeekName.Replace(" ", "").Replace(" ", "");
                string[] NoWord    = SysSet.NoWord.Split('|');
                bool     hasNoWord = false;
                string   noword    = "";
                foreach (var p in NoWord)
                {
                    if (NeekName.Contains(p))
                    {
                        hasNoWord = true;
                        noword    = p;
                        break;
                    }
                }
                if (hasNoWord)
                {
                    DataObj.Msg = "禁止使用关键词“" + noword + "”";
                    DataObj.OutError("2025");
                    return;
                }
            }

            //2016-09-30 限制重名提交
            Users tempUsers = Entity.Users.FirstOrDefault(n => n.NeekName == Users.NeekName && n.State == 1 && (n.CardStae == 2 || n.CardStae == 1));

            if (tempUsers != null)
            {
                DataObj.OutError("2024");
                return;
            }

            int Count = Entity.UserAuth.Count(n => n.UId == baseUsers.Id && n.IsCharge == 1);

            if (Count >= SysSet.AuthTimes)
            {
                DataObj.OutError("2022");
                return;
            }

            if (!UserAuth.EndDate.IsNullOrEmpty())
            {
                //处理年月问题传上来是MMYY
                //20151112调整成YYMM
                if (UserAuth.EndDate.Length == 4)
                {
                    string MM = UserAuth.EndDate.Substring(0, 2);
                    string YY = UserAuth.EndDate.Substring(2, 2);
                    UserAuth.EndDate = YY + MM;
                }
            }

            UserAuth.AddTime  = DateTime.Now;
            UserAuth.UId      = baseUsers.Id;
            UserAuth.IsCharge = 0;
            Entity.UserAuth.AddObject(UserAuth);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, UserAuth);

            #region 贴牌配置
            int ApkSet3   = SysSet.ApkSet3;
            int IosSet3   = SysSet.IosSet3;
            var vSysAgent = Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent);
            if (vSysAgent == null)
            {
                DataObj.OutError("1000");
                return;
            }
            var topSysAgent = vSysAgent.GetTopAgent(Entity);
            if (topSysAgent != null && topSysAgent.IsTeiPai == 1)
            {
                ApkSet3 = topSysAgent.Set3;
                IosSet3 = topSysAgent.Set3;
            }
            #endregion

            #region 激活码逻辑
            Card Card        = null;
            bool IsCheckCard = false;
            //必填
            if ((ApkSet3 == 1 && this.Equipment.RqType == "Android") || (IosSet3 == 1 && this.Equipment.RqType == "Apple"))
            {
                IsCheckCard = true;
                if (UserAuth.CardNum.IsNullOrEmpty() || UserAuth.CardPWD.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
            }

            //选填
            if ((ApkSet3 == 3 && this.Equipment.RqType == "Android") || (IosSet3 == 3 && this.Equipment.RqType == "Apple"))
            {
                if (!UserAuth.CardNum.IsNullOrEmpty() && !UserAuth.CardPWD.IsNullOrEmpty())
                {
                    IsCheckCard = true;
                }
            }

            if (IsCheckCard)
            {
                Card = Entity.Card.FirstOrDefault(n => n.Code == UserAuth.CardNum && n.PasWd == UserAuth.CardPWD && n.Auto == 1);
                if (Card == null)
                {
                    DataObj.OutError("5001");
                    return;
                }
                if (Card.State != 1)
                {
                    string StateStr = string.Empty;
                    switch (Card.State)
                    {
                    case 2:
                        StateStr = "已授权";
                        break;

                    case 3:
                        StateStr = "已使用";
                        break;

                    case 0:
                        StateStr = "已失效";
                        break;
                    }

                    DataObj.Msg = "激活码" + StateStr;
                    DataObj.OutError("5001");
                    return;
                }
                if (Card.AId.IsNullOrEmpty())
                {
                    DataObj.OutError("5002");
                    return;
                }
                if (Card.AdminId.IsNullOrEmpty())
                {
                    DataObj.OutError("5002");
                    return;
                }
                Card.State        = 3;//使用中
                baseUsers.CardNum = Card.Code;
            }
            #endregion

            string ret_code = "";
            string ret_msg  = "";
            string isCharge = "";

            string CONTENT = "";

            #region 第三方接口查询
            if (HaoFu_Auth_Open == "true")
            {
                if (CardItemNum != 6)
                {
                    UsedCardType = GetCardType(UserAuth.BankAccount);
                    if (CardType == 1)//要求借记卡
                    {
                        if (UsedCardType != 1)
                        {
                            DataObj.OutError("2023");
                            Utils.WriteLog(CardType + "===" + UsedCardType + "无法查询的卡:" + UserAuth.BankAccount, "bankcard");
                            return;
                        }
                    }
                    if (CardType == 2)//要求信用卡
                    {
                        if (UsedCardType != 2)
                        {
                            DataObj.OutError("2023");
                            Utils.WriteLog(CardType + "===" + UsedCardType + "无法查询的卡:" + UserAuth.BankAccount, "bankcard");
                            return;
                        }
                    }
                }
                else
                {
                    UsedCardType = 2;
                }

                string HaoFu_Auth_MerId  = ConfigurationManager.AppSettings["HaoFu_Auth_MerId"].ToString();
                string HaoFu_Auth_MerKey = ConfigurationManager.AppSettings["HaoFu_Auth_MerKey"].ToString();
                string HaoFu_Auth_Url    = ConfigurationManager.AppSettings["HaoFu_Auth_Url"].ToString();

                string data       = "{\"action\":\"authuser\",\"merid\":\"" + HaoFu_Auth_MerId + "\",\"orderid\":\"" + UserAuth.OId + "\",\"bankaccount\":\"" + UserAuth.BankAccount + "\",\"accountname\":\"" + UserAuth.AccountName + "\",\"identitycode\":\"" + UserAuth.IdentityCode + "\",\"mobile\":\"" + UserAuth.Mobile + "\",\"cvv\":\"" + UserAuth.CVV + "\",\"enddate\":\"" + UserAuth.EndDate + "\"}";
                string DataBase64 = LokFuEncode.Base64Encode(data, "utf-8");
                string Sign       = (DataBase64 + HaoFu_Auth_MerKey).GetMD5();

                DataBase64 = HttpUtility.UrlEncode(DataBase64, Encoding.UTF8);
                string postdata = "req=" + DataBase64 + "&sign=" + Sign;

                CONTENT = Utils.PostRequest(HaoFu_Auth_Url, postdata, "utf-8");

                JObject JS = new JObject();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(CONTENT);
                }
                catch (Exception Ex)
                {
                    Log.Write("[UsersTrueNameByAPI]:", "【CONTENT】" + CONTENT, Ex);
                }
                if (JS == null)
                {
                    DataObj.OutError("2021");
                    return;
                }
                string resp = JS["resp"].ToString();
                CONTENT = LokFuEncode.Base64Decode(resp, "utf-8");
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(CONTENT);
                }
                catch (Exception Ex)
                {
                    Log.Write("[UsersTrueNameByAPI]:", "【CONTENT2】" + CONTENT, Ex);
                }
                if (JS == null)
                {
                    DataObj.OutError("2021");
                    return;
                }
                ret_code = JS["respcode"].ToString();
                ret_msg  = JS["respmsg"].ToString();
                if (JS["ischarge"] != null)
                {
                    isCharge = JS["ischarge"].ToString();
                }
                if (isCharge == "1")
                {
                    UserAuth.IsCharge = 1;
                }
                else
                {
                    UserAuth.IsCharge = 0;
                }
            }
            #endregion

            #region 审核处理
            UserAuth.RetCode = ret_code;
            UserAuth.RetMsg  = ret_msg;
            UserAuth.RetLog  = CONTENT;

            baseUsers.TrueName = UserAuth.AccountName;
            baseUsers.NeekName = UserAuth.NeekName;
            baseUsers.CardId   = UserAuth.IdentityCode;

            baseUsers.CardFace = "";

            baseUsers.CardType = 1;
            if (UsedCardType == 2)
            {
                baseUsers.HasT0 = 1;
            }
            else
            {
                baseUsers.HasT0 = 0;
            }

            string Code = "0000";
            if (ret_code == "0000")
            {
                baseUsers.CardStae = 2;//直接审核通过
                //=======================================
                string GPSAddress = Users.RegAddress;
                if (GPSAddress.IsNullOrEmpty())
                {
                    GPSAddress = Utils.GetAddressByGPS(Users.X, Users.Y);
                }
                if (!GPSAddress.IsNullOrEmpty())
                {
                    baseUsers.RegAddress = GPSAddress;
                    baseUsers.X          = Users.X;
                    baseUsers.Y          = Users.Y;
                }
                //=======================================
                UserTrack.ENo        = DataObj.ENo;
                UserTrack.OPType     = "自动认证";
                UserTrack.GPSAddress = GPSAddress;
                UserTrack.GPSX       = Users.X;
                UserTrack.GPSY       = Users.Y;
                baseUsers.SeavGPSLog(UserTrack, Entity);
                //=======================================

                //20151125需要对有绑卡的用户验证是否是来源与推广,增加抽奖次数
                #region  人推广
                if (!baseUsers.MyPId.IsNullOrEmpty())
                {
                    if (baseUsers.ShareType == 2)
                    {
                        //支付通道升级推广
                        PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == baseUsers.PayConfigId && n.State == 1 && n.ShareNumber > 0);
                        if (PCC != null)
                        {
                            int count = Entity.Users.Count(n => n.CardStae == 2 && n.State == 1 && n.MyPId == baseUsers.MyPId && n.PayConfigId == baseUsers.PayConfigId && n.Id != baseUsers.Id);

                            count++;                      //这里统计会漏掉当前用户的,需要增加1个。

                            if (count == PCC.ShareNumber) //相等的那一次调整,避免超出了还一直调整
                            {
                                Users UP = Entity.Users.FirstOrDefault(n => n.Id == baseUsers.MyPId);
                                if (PCC.CState == 1)
                                {
                                    if (UP.Cash0 > PCC.Cash0)
                                    {
                                        UP.Cash0 = PCC.Cash0;
                                    }
                                    if (UP.ECash0 > PCC.ECash0)
                                    {
                                        UP.ECash0 = PCC.ECash0;
                                    }
                                }
                                if (PCC.EState == 1)
                                {
                                    if (UP.Cash1 > PCC.Cash1)
                                    {
                                        UP.Cash1 = PCC.Cash1;
                                    }
                                    if (UP.ECash1 > PCC.ECash1)
                                    {
                                        UP.ECash1 = PCC.ECash1;
                                    }
                                }
                                IList <UserPay> List = Entity.UserPay.Where(n => n.UId == baseUsers.MyPId).ToList();//获取用户配置
                                foreach (var p in List)
                                {
                                    PayConfigTemp PCT = Entity.PayConfigTemp.FirstOrDefault(n => n.PId == p.PId && n.PCCId == PCC.Id);
                                    //获取套餐配置
                                    if (PCT != null)
                                    {
                                        if (PCT.State == 1)
                                        {
                                            if (p.Cost > PCT.Cost)
                                            {
                                                p.Cost = PCT.Cost;
                                            }
                                        }
                                    }
                                }
                                string UserPayCashName = "UserPay_" + UP.Id.ToString() + "_" + Equipment.RqType;
                                CacheBuilder.EntityCache.Remove(UserPayCashName, null);
                                string PayConfigChangeCashName = "PayConfigChange_" + UP.Agent + "_" + UP.Id;
                                CacheBuilder.EntityCache.Remove(PayConfigChangeCashName, null);
                                //Utils.WriteLog("UserPayCashName:" + UserPayCashName + " PayConfigChangeCashName:" + PayConfigChangeCashName, "ClearCache");
                            }
                        }
                    }
                    if (baseUsers.ShareType == 1)
                    {
                        //增加推广抽奖次数
                        TurnUsers TurnUsers = Entity.TurnUsers.FirstOrNew(n => n.UId == baseUsers.MyPId);
                        if (!TurnUsers.Id.IsNullOrEmpty())
                        {
                            TurnUsers.Times++;
                        }
                    }
                    #region 分享统计数
                    //===================================增加分享统计数===================================
                    //获取用户所属各级分润配置
                    // IList<UserPromoteGet> UserPromoteGetList = Entity.UserPromoteGet.Where(n => n.AgentID == baseUsers.Agent).OrderBy(n => n.PromoteLevel).ToList();
                    int MaxLevel = SysSet.GlobaPromoteMaxLevel;
                    //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0
                    IList <Users> UsersList = baseUsers.GetUsersById(Entity, MaxLevel);
                    foreach (var U in UsersList.Where(n => n.Tier > 0))
                    {
                        ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier);
                        if (ShareTotal == null)
                        {
                            ShareTotal          = new ShareTotal();
                            ShareTotal.UId      = U.Id;
                            ShareTotal.AddTime  = DateTime.Now;
                            ShareTotal.ShareNum = 1;
                            ShareTotal.Amount   = 0;
                            ShareTotal.Profit   = 0;
                            ShareTotal.Tier     = U.Tier;
                            Entity.ShareTotal.AddObject(ShareTotal);
                        }
                        else
                        {
                            ShareTotal.ShareNum += 1;
                        }
                        Entity.SaveChanges();
                    }
                    //===================================增加分享统计数 End===================================
                    #endregion
                }
                #endregion

                if (Card != null)
                {
                    //代理商信息
                    baseUsers.Agent = Card.AId;
                    baseUsers.AId   = Card.AdminId;
                    //推广信息
                    if (!Card.PUId.IsNullOrEmpty())
                    {
                        if (baseUsers.MyPId.IsNullOrEmpty())
                        {
                            //不是费率升级推广才有效
                            baseUsers.MyPId       = Card.PUId;
                            baseUsers.PayConfigId = 0;
                            baseUsers.ShareType   = 1;
                        }
                    }
                    Card.State = 2;
                }
            }
            else
            {
                Code = "2021";
                baseUsers.CardStae = 3;//审核失败
                baseUsers.CardNum  = "";
                if (Card != null)
                {
                    Card.State = 1;
                }
            }
            Entity.SaveChanges();
            #endregion
            DataObj.Data = UserAuth.OutJson();
            DataObj.Code = Code;
            DataObj.OutString();
        }
Example #35
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderPayConfig]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            PayConfigOrder PayConfigOrder = new PayConfigOrder();

            PayConfigOrder = JsonToObject.ConvertJsonToModel(PayConfigOrder, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (PayConfigOrder.PCCId.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (PayConfigOrder.X.IsNullOrEmpty() || PayConfigOrder.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == PayConfigOrder.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }

            //获取分支机构信息
            SysAgent SysAgent = new SysAgent();

            if (!baseUsers.Agent.IsNullOrEmpty())
            {
                SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
            }
            //获取系统配置
            //SysSet SysSet = Entity.SysSet.FirstOrDefault();

            PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == PayConfigOrder.PCCId);

            if (PCC == null)
            {
                DataObj.OutError("1001");
                return;
            }

            PayConfigOrder.UId    = baseUsers.Id;
            PayConfigOrder.Agent  = baseUsers.Agent;
            PayConfigOrder.AId    = baseUsers.AId;
            PayConfigOrder.Amoney = PCC.BPrice.GetValueOrDefault();

            PayConfigOrder.OrderState = 1;
            PayConfigOrder.PayState   = 0;
            PayConfigOrder.AddTime    = DateTime.Now;
            //这里是利润计算==========
            //分支机构提成=产品价格-代理商价格
            decimal GetAll = PCC.BPrice.GetValueOrDefault() - PCC.CPrice.GetValueOrDefault();

            //利润舍位
            GetAll = GetAll.Floor();
            //总利润
            PayConfigOrder.AIdGet = (double)GetAll;
            //分支机构佣金设置为0,待分润计算后再写入
            PayConfigOrder.AgentGet = 0;

            PayConfigOrder.AgentState = 0;

            //这里暂时写0,等后面支付再重新计算
            PayConfigOrder.SysRate  = 0;
            PayConfigOrder.Poundage = PayConfigOrder.Amoney * (decimal)PayConfigOrder.SysRate;

            //写入订单总表
            Orders Orders = new Orders();

            Orders.UId   = PayConfigOrder.UId;
            Orders.TName = PCC.Title;

            Orders.PayType = 0;
            Orders.PayName = "升级费率";

            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = 6;
            Orders.TState   = 1;
            Orders.Amoney   = PayConfigOrder.Amoney;
            Orders.Poundage = PayConfigOrder.Poundage;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = 0;

            Orders.Agent      = PayConfigOrder.Agent;
            Orders.AgentState = 0;
            Orders.AId        = PayConfigOrder.AId;
            Orders.FId        = 0;

            string OrderAddress = PayConfigOrder.OrderAddress;

            if (OrderAddress.IsNullOrEmpty())
            {
                OrderAddress = Utils.GetAddressByGPS(PayConfigOrder.X, PayConfigOrder.Y);
            }
            Orders.OrderAddress = OrderAddress;
            Orders.X            = PayConfigOrder.X;
            Orders.Y            = PayConfigOrder.Y;

            Entity.Orders.AddObject(Orders);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, Orders);

            PayConfigOrder.OId = Orders.TNum;
            Entity.PayConfigOrder.AddObject(PayConfigOrder);
            Entity.SaveChanges();

            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = Orders.PayName;
            UserTrack.UserName   = Orders.TNum;
            UserTrack.GPSAddress = Orders.OrderAddress;
            UserTrack.GPSX       = Orders.X;
            UserTrack.GPSY       = Orders.Y;
            Orders.SeavGPSLog(UserTrack, Entity);
            //=======================================
            Orders.SendMsg(Entity);//发送消息类
            //=======================================
            Orders.Cols = "TNum,PayId,Amount,PayState";
            string TNum = Orders.TNum;
            string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8);

            Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign;
            //=======================================

            //获取最佳支付通道
            IList <PayConfig>  PayConfigList  = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Cost).ToList();
            IList <SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl
            IList <SysControl> SCList         = new List <SysControl>();
            IList <PayConfig>  PCList         = new List <PayConfig>();

            foreach (var p in SysControlList)
            {
                SysControl T = p.ChkState();
                if (T.State == 1)
                {
                    SCList.Add(p);
                }
            }
            foreach (var p in PayConfigList)
            {
                SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id);
                if (T != null)
                {
                    if (PayConfigOrder.Amoney >= (decimal)T.SNum && PayConfigOrder.Amoney <= (decimal)T.ENum)
                    {
                        PCList.Add(p);
                    }
                }
            }
            IList <PayConfig> CashList = PCList.Where(n => n.GroupType == "Cash").OrderBy(n => n.Cost).ToList();
            IList <PayConfig> BankList = PCList.Where(n => n.GroupType == "Bank").OrderBy(n => n.Cost).ToList();
            IList <PayConfig> WxList   = PCList.Where(n => n.GroupType == "WeiXin").OrderBy(n => n.Cost).ToList();
            IList <PayConfig> AliList  = PCList.Where(n => n.GroupType == "AliPay").OrderBy(n => n.Cost).ToList();

            IList <PayConfig> List = new List <PayConfig>();

            if (CashList.Count > 0)
            {
                PayConfig Cash = new PayConfig();
                Cash.GroupType = "Cash";
                Cash.Name      = "余额支付";
                Cash.State     = 1;
                Cash.Cols      = "Name,GroupType,State";
                List.Add(Cash);
            }
            if (BankList.Count > 0)
            {
                PayConfig Bank = new PayConfig();
                Bank.GroupType = "Bank";
                Bank.Name      = "银联支付";
                Bank.State     = 1;
                Bank.Cols      = "Name,GroupType,State";
                List.Add(Bank);
            }
            //if (WxList.Count > 0)
            //{
            //    PayConfig Wx = new PayConfig();
            //    Wx.GroupType = "WeiXin";
            //    Wx.Name = "微信支付";
            //    Wx.State = 0;
            //    Wx.Cols = "Name,GroupType,State";
            //    List.Add(Wx);
            //}
            if (AliList.Count > 0)
            {
                PayConfig Ali = new PayConfig();
                Ali.GroupType = "AliPay";
                Ali.Name      = "支付宝支付";
                Ali.State     = 1;
                Ali.Cols      = "Name,GroupType,State";
                List.Add(Ali);
            }
            string PCString = List.EntityToJson();
            JArray PCJson   = (JArray)JsonConvert.DeserializeObject(PCString);

            Orders.PayConfig = PCJson;

            Orders.Cols += ",PayConfig";

            //Orders.paycon
            DataObj.Data = Orders.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Example #36
0
        private void AddEditorComponentsToPartEntity(Entity entity)
        {
            entity.AddComponent(new EditorComponent());

            var select = new BoundingBoxSelectorComponent() { IsEnabled = false };
            entity.AddComponent(select);

            var drawbounds = new DrawBoundingBoxComponent();
            drawbounds.IsEnabled = false;
            entity.AddComponent(drawbounds);
            select.SelectedChanged += (s, e) =>
            {
                drawbounds.IsEnabled = select.IsSelected;
                if (!select.IsSelected)
                    entity.RemoveComponent<MouseControlledTransformComponent>();
            };

            entity.AddComponent(entity.GetComponent<IShipPartComponent>().Part.Transform);
            if (entity.HasComponent<DummyPartComponent>())
            {
                entity.AddComponent(new GenericDrawableComponent((a, b, e) => {
                    var xform = e.GetComponent<Transform>();
                    b.DrawCircle(xform.Position, 9, 15, Color.Cyan);
                    b.DrawLine(xform.Position.X - 10, xform.Position.Y, xform.Position.X + 10, xform.Position.Y, Color.LightCyan);
                    b.DrawLine(xform.Position.X, xform.Position.Y - 10, xform.Position.X, xform.Position.Y + 10, Color.LightCyan);
                }));
            }
            entity.Refresh();
        }
Example #37
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderDaiLi_3_0]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            DaiLiOrder DaiLiOrder = new DaiLiOrder();

            DaiLiOrder = JsonToObject.ConvertJsonToModel(DaiLiOrder, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            //设置开通等级
            if (DaiLiOrder.Tier.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (DaiLiOrder.X.IsNullOrEmpty() || DaiLiOrder.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }

            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == DaiLiOrder.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }

            //获取分支机构信息
            //AgentType AgentType = Entity.AgentType.FirstOrNew(n => n.Id == DaiLiOrder.Levels);
            //if (AgentType.Id.IsNullOrEmpty()) {
            //    DataObj.OutError("1000");
            //    return;
            //}
            //if (AgentType.AgentID != baseUsers.Agent) {
            //    //用户代理与开通等级代理不同
            //    DataObj.OutError("1000");
            //    return;
            //}
            SysAgent SysAgent = Entity.SysAgent.FirstOrNew(o => o.LinkMobile == baseUsers.UserName);

            if (!SysAgent.LinkMobile.IsNullOrEmpty())
            {
                if (SysAgent.Tier < 5 || DaiLiOrder.Tier >= SysAgent.Tier)
                {
                    DataObj.OutError("9000");
                    return;
                }
            }

            DaiLiOrder.UId      = baseUsers.Id;
            DaiLiOrder.UserName = baseUsers.UserName;
            DaiLiOrder.TureName = baseUsers.TrueName;

            DaiLiOrder.Agent = baseUsers.Agent;
            DaiLiOrder.AId   = baseUsers.AId;
            // DaiLiOrder.Amoney = AgentType.RegisterFee;

            DaiLiOrder.OrderState = 1;
            DaiLiOrder.PayState   = 0;
            DaiLiOrder.AddTime    = DateTime.Now;
            DaiLiOrder.SameGet    = 0;
            //这里是利润计算==========
            DaiLiOrder.AIdGet     = Convert.ToDouble(DaiLiOrder.Amoney); //总利润
            DaiLiOrder.AgentGet   = 0;                                   //分支机构佣金设置为0,待分润计算后再写入
            DaiLiOrder.AgentState = 0;

            //写入订单总表
            Orders Orders = new Orders();

            Orders.UId      = DaiLiOrder.UId;
            Orders.TName    = "自助开通代理";
            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = 10;
            Orders.TState   = 1;
            Orders.Amoney   = DaiLiOrder.Amoney;
            Orders.Poundage = 0;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = 15;

            Orders.Agent      = DaiLiOrder.Agent;
            Orders.AgentState = 0;
            Orders.AId        = DaiLiOrder.AId;
            Orders.FId        = 0;

            string OrderAddress = DaiLiOrder.OrderAddress;

            if (OrderAddress.IsNullOrEmpty())
            {
                OrderAddress = Utils.GetAddressByGPS(DaiLiOrder.X, DaiLiOrder.Y);
            }
            Orders.OrderAddress = OrderAddress;
            Orders.X            = DaiLiOrder.X;
            Orders.Y            = DaiLiOrder.Y;

            Entity.Orders.AddObject(Orders);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, Orders);

            DaiLiOrder.OId = Orders.TNum;
            Entity.DaiLiOrder.AddObject(DaiLiOrder);
            Entity.SaveChanges();

            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = Orders.PayName;
            UserTrack.UserName   = Orders.TNum;
            UserTrack.GPSAddress = Orders.OrderAddress;
            UserTrack.GPSX       = Orders.X;
            UserTrack.GPSY       = Orders.Y;
            Orders.SeavGPSLog(UserTrack, Entity);
            //=======================================
            Orders.SendMsg(Entity);//发送消息类
            //=======================================
            Orders.Cols = "TNum,PayId,Amoney,PayState";
            string TNum = Orders.TNum;
            string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8);

            // Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign;
            Orders.PayId = PayPath + "/mobile/orders/GoPay.html?sign=" + Sign + "&tnum=" + TNum;
            //=======================================

            //获取最佳支付通道
            #region 结算中心
            //IList<PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Cost).ToList();
            //IList<SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl
            //IList<SysControl> SCList = new List<SysControl>();
            //IList<PayConfig> PCList = new List<PayConfig>();
            //foreach (var p in SysControlList)
            //{
            //    SysControl T = p.ChkState();
            //    if (T.State == 1)
            //    {
            //        SCList.Add(p);
            //    }
            //}
            //foreach (var p in PayConfigList)
            //{
            //    SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id);
            //    if (T != null)
            //    {
            //        if (Orders.Amoney >= (decimal)T.SNum && Orders.Amoney <= (decimal)T.ENum)
            //        {
            //            PCList.Add(p);
            //        }
            //    }
            //}
            //IList<PayConfig> CashList = PCList.Where(n => n.GroupType == "Cash").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> BankList = PCList.Where(n => n.GroupType == "Bank").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> WxList = PCList.Where(n => n.GroupType == "WeiXin").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> AliList = PCList.Where(n => n.GroupType == "AliPay").OrderBy(n => n.Cost).ToList();

            //IList<PayConfig> List = new List<PayConfig>();
            //if (CashList.Count > 0)
            //{
            //    PayConfig Cash = new PayConfig();
            //    Cash.GroupType = "Cash";
            //    Cash.Name = "余额支付";
            //    Cash.State = 1;
            //    Cash.Cols = "Name,GroupType,State";
            //    List.Add(Cash);
            //}
            //if (BankList.Count > 0)
            //{
            //    PayConfig Bank = new PayConfig();
            //    Bank.GroupType = "Bank";
            //    Bank.Name = "银联支付";
            //    Bank.State = 1;
            //    Bank.Cols = "Name,GroupType,State";
            //    List.Add(Bank);
            //}
            //if (WxList.Count > 0)
            //{
            //    PayConfig Wx = new PayConfig();
            //    Wx.GroupType = "WeiXin";
            //    Wx.Name = "微信支付";
            //    Wx.State = 0;
            //    Wx.Cols = "Name,GroupType,State";
            //    List.Add(Wx);
            //}
            //if (AliList.Count > 0)
            //{
            //    PayConfig Ali = new PayConfig();
            //    Ali.GroupType = "AliPay";
            //    Ali.Name = "支付宝支付";
            //    Ali.State = 1;
            //    Ali.Cols = "Name,GroupType,State";
            //    List.Add(Ali);
            //}
            //string PCString = List.EntityToJson();
            //JArray PCJson = (JArray)JsonConvert.DeserializeObject(PCString);
            //Orders.PayConfig = PCJson;

            //Orders.Cols += ",PayConfig";
            #endregion
            //Orders.paycon
            DataObj.Data = Orders.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
        /// <summary>
        /// Builds the crystal at a specified position and a color.
        /// </summary>
        /// <param name="e"></param>
        /// <param name="args">[0] = position; [1] = color; [2] amount</param>
        /// <returns></returns>
        public Entity BuildEntity(Entity e, params object[] args)
        {
            Vector2 pos = (Vector2)args[0];
            Color color = (Color)args[1];
            string source = "redcrystal";

            e.AddComponent<Components.Timer>(new Components.Timer(10));

            if (color == Color.Red)
                source = "redcrystal";
            if (color == Color.Blue)
                source = "bluecrystal";
            if (color == Color.Yellow)
                source = "yellowcrystal";
            if (color == Color.Green)
                source = "greencrystal";
            if (color == Color.Gray)
                source = "graycrystal";

            Sprite s = e.AddComponent<Sprite>(new Sprite(_SpriteSheet, source, 0.2f + (float)crystals / 10000f));
            Body b = e.AddComponent<Body>(new Body(_World, e));
            b.IsBullet = true;
            FixtureFactory.AttachEllipse((float)ConvertUnits.ToSimUnits(s.CurrentRectangle.Width / 1.5), (float)ConvertUnits.ToSimUnits(s.CurrentRectangle.Height / 1.5), 3, 1f, b);

            b.Position = pos;
            b.BodyType = GameLibrary.Dependencies.Physics.Dynamics.BodyType.Dynamic;

            e.GetComponent<Body>().OnCollision += LambdaComplex.CrystalCollision();

            if (args.Length > 4)
            {
                e.AddComponent<Crystal>(new Crystal(color, (int)args[2], true));
                e.AddComponent<AI>(new AI((args[3] as Entity).GetComponent<Body>(), AI.CreateFollow(e, 5f, false)));
            }
            else if (args.Length > 3)
            {
                e.AddComponent<Crystal>(new Crystal(color, (int)args[2]));
                e.AddComponent<AI>(new AI((args[3] as Entity).GetComponent<Body>(), AI.CreateFollow(e, 5f, false)));
            }

            else
            {
                e.AddComponent<Crystal>(new Crystal(color, (int)args[2]));
            }
            e.Group = "Crystals";

            e.AddComponent<AI>(new AI((args[3] as Entity).GetComponent<Body>(), //AI was severely lagging the game.
                (target) =>
                {
                    if ((target.UserData as Entity).HasComponent<Health>() && (target.UserData as Entity).GetComponent<Health>().IsAlive && target.Position != b.Position && (target.UserData as Entity).Group == "Players")
                    {
                        Vector2 distance = target.Position - b.Position;
                        distance.Normalize();
                        b.LinearVelocity = distance * new Vector2(14);
                        return false;
                    }
                    else
                    {
                        e.Delete();
                        return false;
                    }
                }));

            e.Refresh();
            return e;
        }
Example #39
0
 public override void Process(Entity entity)
 {
     if (!entity.HasComponent<TimeStamp>())
     {
         Int32 unixTimestamp = (Int32)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
         entity.AddComponent(new TimeStamp(unixTimestamp));
         entity.Refresh();
     }
 }
Example #40
0
        /// <summary>
        /// Builds all of the entities in the SpaceWorld.
        /// </summary>
        /// <param name="Content"></param>
        /// <param name="args">{0-4} Player indices in use.</param>
        protected override void BuildEntities(ContentManager Content, params object[] args)
        {
            Indices.Clear();
            //Set up player(s)
            PlayerIndex[] index = args[0] as PlayerIndex[];
            DirectorSystem.PlayerIndicies = index;

            for (int i = 0;  i < 4; ++i)
            {
                if (i < index.Length)
                {
                    Entity e = CreateEntity("Player", index[i]);
                    Body bitch = e.GetComponent<Body>();

                    e.Refresh();
                    e.GetComponent<Inventory>().YELLOW = 50;
                    Player.Add(e);
                    Indices.Add(index[i]);
                    ++Players;
                }
                else
                {
                    Entity e = CreateEntity("Player", (PlayerIndex)(i), true);
                    Body bitch = e.GetComponent<Body>();

                    e.Refresh();
                    e.GetComponent<Inventory>().YELLOW = 50;
                    Player.Add(e);
                    ++Players;
                }
            }

            CreateEntityGroup("StarField", "Stars");

            //Set up base.
            Base = this.CreateEntity("Base");
            Base.Refresh();

            SpawnState[] states = args[2] as SpawnState[];
            enemySpawnSystem.LoadContent(Base, Player.ToArray(), level, states);
        }