Ejemplo n.º 1
0
        public void ResetPlayer(EntityCommandBuffer cb, Entity player, WorldCoord worldCoord, Translation translation)
        {
            CreatureDescription descr = CreatureDescriptions[(int)ECreatureId.Player];

            Creature c = new Creature {
                id = (int)ECreatureId.Player
            };
            HealthPoints hp = new HealthPoints {
                max = descr.health, now = descr.health
            };
            AttackStat att = new AttackStat {
                range = descr.attackRange
            };
            Level lvl = new Level {
                level = 1
            };
            ExperiencePoints exp = new ExperiencePoints {
                now = 0, next = LevelSystem.GetXPRequiredForLevel(1)
            };
            GoldCount gp = new GoldCount {
                count = 0
            };
            Mobile mobile = new Mobile {
                Destination = new float3(0, 0, 0), Initial = new float3(0, 0, 0), MoveTime = 0, Moving = false
            };
            Animated animated = new Animated {
                Id = descr.spriteId, Direction = Direction.Right, Action = Action.None, AnimationTime = 0, AnimationTrigger = false
            };
            Sight sight = new Sight {
                SightRadius = 4
            };
            TurnPriorityComponent tp = new TurnPriorityComponent {
                Value = -1
            };

            // Only tint sprites if ascii
            Sprite2DRenderer s = new Sprite2DRenderer();
            LayerSorting     l = new LayerSorting {
                order = 2
            };

            s.color  = GlobalGraphicsSettings.ascii ? descr.asciiColor : Color.Default;
            s.sprite = SpriteSystem.IndexSprites[SpriteSystem.ConvertToGraphics(descr.ascii)];
            l.layer  = 2;

            cb.SetComponent(player, s);
            cb.SetComponent(player, c);
            cb.SetComponent(player, l);
            cb.SetComponent(player, hp);
            cb.SetComponent(player, att);
            cb.SetComponent(player, lvl);
            cb.SetComponent(player, exp);
            cb.SetComponent(player, gp);
            cb.SetComponent(player, mobile);
            cb.SetComponent(player, animated);
            cb.SetComponent(player, sight);
            cb.SetComponent(player, worldCoord);
            cb.SetComponent(player, translation);
            cb.SetComponent(player, tp);
        }
Ejemplo n.º 2
0
        public Entity SpawnCreature(EntityCommandBuffer cb, ECreatureId cId, int priority)
        {
            Entity entity             = cb.CreateEntity(_creatureArchetype);
            CreatureDescription descr = CreatureDescriptions[(int)cId];

            Sprite2DRenderer s = new Sprite2DRenderer();
            LayerSorting     l = new LayerSorting();
            Creature         c = new Creature {
                id = (int)cId
            };
            HealthPoints hp = new HealthPoints {
                max = descr.health, now = descr.health
            };
            AttackStat att = new AttackStat {
                range = descr.attackRange
            };
            Sight sight = new Sight {
                SightRadius = descr.sightRadius
            };
            PatrollingState     patrol   = new PatrollingState();
            MeleeAttackMovement movement = new MeleeAttackMovement();
            Speed speed = new Speed {
                SpeedRate = descr.speed
            };
            Mobile mobile = new Mobile {
                Destination = new float3(0, 0, 0), Initial = new float3(0, 0, 0), MoveTime = 0, Moving = false
            };
            Animated animated = new Animated {
                Id = descr.spriteId, Direction = Direction.Right, Action = Action.None, AnimationTime = 0, AnimationTrigger = false
            };
            ArmorClass ac = new ArmorClass {
                AC = descr.ac
            };
            TurnPriorityComponent tp = new TurnPriorityComponent {
                Value = priority
            };

            // Only tint sprites if ascii
            s.color   = GlobalGraphicsSettings.ascii ? descr.asciiColor : Color.Default;
            s.color.a = 0.0f; // Start invisible
            s.sprite  = SpriteSystem.IndexSprites[SpriteSystem.ConvertToGraphics(descr.ascii)];
            l.layer   = 2;

            cb.SetComponent(entity, s);
            cb.SetComponent(entity, c);
            cb.SetComponent(entity, l);
            cb.SetComponent(entity, hp);
            cb.SetComponent(entity, att);
            cb.SetComponent(entity, sight);
            cb.SetComponent(entity, movement);
            cb.SetComponent(entity, patrol);
            cb.SetComponent(entity, speed);
            cb.SetComponent(entity, mobile);
            cb.SetComponent(entity, animated);
            cb.SetComponent(entity, ac);

            return(entity);
        }
Ejemplo n.º 3
0
        protected override void OnUpdate()
        {
            var gss = EntityManager.World.GetExistingSystem <GameStateSystem>();

            if (gss.IsInGame)
            {
                Entities.ForEach((Entity creature, ref HealthPoints hp, ref Sprite2DRenderer renderer, ref Translation pos, ref Animated animated) =>
                {
                    if (hp.now <= 0)
                    {
                        if (GlobalGraphicsSettings.ascii)
                        {
                            if (EntityManager.HasComponent(creature, typeof(Player)))
                            {
                                gss.MoveToGameOver(PostUpdateCommands);
                                pos.Value = TinyRogueConstants.OffViewport;
                            }
                            else
                            {
                                PostUpdateCommands.DestroyEntity(creature);
                            }
                        }
                        else
                        {
                            var anim = EntityManager.World.GetExistingSystem <AnimationSystem>();

                            if (EntityManager.HasComponent(creature, typeof(Player)))
                            {
                                var player         = EntityManager.GetComponentData <Player>(creature);
                                var sequencePlayer = EntityManager.GetComponentData <Sprite2DSequencePlayer>(creature);

                                player.Dead               = true;
                                sequencePlayer.speed      = 0.5f;
                                animated.AnimationTime    = 0.75f;
                                animated.Action           = Action.Die;
                                animated.AnimationTrigger = true;

                                anim.SetAnimation(ref animated, ref sequencePlayer);

                                PostUpdateCommands.SetComponent(creature, player);
                                PostUpdateCommands.SetComponent(creature, animated);
                                PostUpdateCommands.SetComponent(creature, sequencePlayer);
                            }
                            else
                            {
                                Entity death  = PostUpdateCommands.CreateEntity();
                                Parent parent = new Parent();

                                Translation trans = pos;
                                Sprite2DRenderer deathRenderer = new Sprite2DRenderer {
                                    color = TinyRogueConstants.DefaultColor
                                };
                                Sprite2DSequencePlayer deathPlayer = new Sprite2DSequencePlayer {
                                    speed = 0.5f
                                };
                                Animated deathAnimated = new Animated {
                                    Id = animated.Id, Direction = animated.Direction, Action = Action.Die, AnimationTime = 0.75f, AnimationTrigger = true
                                };
                                LayerSorting layerSorting = new LayerSorting {
                                    layer = 2
                                };

                                anim.SetAnimation(ref deathAnimated, ref deathPlayer);

                                PostUpdateCommands.AddComponent(death, parent);
                                PostUpdateCommands.AddComponent(death, trans);
                                PostUpdateCommands.AddComponent(death, deathRenderer);
                                PostUpdateCommands.AddComponent(death, deathPlayer);
                                PostUpdateCommands.AddComponent(death, deathAnimated);
                                PostUpdateCommands.AddComponent(death, layerSorting);

                                PostUpdateCommands.DestroyEntity(creature);
                            }
                        }
                    }
                });
            }
        }
Ejemplo n.º 4
0
        public Entity SpawnPlayer(EntityManager entityManager)
        {
            Entity entity             = entityManager.CreateEntity(_playerArchetype);
            CreatureDescription descr = CreatureDescriptions[(int)ECreatureId.Player];

            Creature c = new Creature {
                id = (int)ECreatureId.Player
            };
            HealthPoints hp = new HealthPoints {
                max = descr.health, now = descr.health
            };
            AttackStat att = new AttackStat {
                range = descr.attackRange
            };
            Level lvl = new Level {
                level = 1
            };
            ExperiencePoints exp = new ExperiencePoints {
                now = 0, next = LevelSystem.GetXPRequiredForLevel(1)
            };
            GoldCount gp = new GoldCount {
                count = 0
            };
            Mobile mobile = new Mobile {
                Destination = new float3(0, 0, 0), Initial = new float3(0, 0, 0), MoveTime = 0, Moving = false
            };
            Animated animated = new Animated {
                Id = descr.spriteId, Direction = Direction.Right, Action = Action.None, AnimationTime = 0, AnimationTrigger = false
            };
            Sight sight = new Sight {
                SightRadius = 4
            };
            ArmorClass ac = new ArmorClass {
                AC = descr.ac
            };
            TurnPriorityComponent tp = new TurnPriorityComponent {
                Value = -1
            };

            // Only tint sprites if ascii
            Sprite2DRenderer s = new Sprite2DRenderer();
            LayerSorting     l = new LayerSorting {
                order = 2
            };

            s.color  = GlobalGraphicsSettings.ascii ? descr.asciiColor : Color.Default;
            s.sprite = SpriteSystem.IndexSprites[SpriteSystem.ConvertToGraphics(descr.ascii)];
            l.layer  = 2;

            entityManager.SetComponentData(entity, s);
            entityManager.SetComponentData(entity, c);
            entityManager.SetComponentData(entity, l);
            entityManager.SetComponentData(entity, hp);
            entityManager.SetComponentData(entity, att);
            entityManager.SetComponentData(entity, lvl);
            entityManager.SetComponentData(entity, exp);
            entityManager.SetComponentData(entity, gp);
            entityManager.SetComponentData(entity, mobile);
            entityManager.SetComponentData(entity, animated);
            entityManager.SetComponentData(entity, sight);
            entityManager.SetComponentData(entity, ac);
            entityManager.SetComponentData(entity, tp);

            return(entity);
        }