Ejemplo n.º 1
0
        public Player(Texture2D texture, Map map)
            : base()
        {
            _animationComponent = new TextureAnimatedComponent(this, texture, 4, 4, 0.3f)
            {
                SetAnimation = (gameTime) => SetAnimationEvent(gameTime),
                GetLayer     = () => MathHelper.Clamp((_moveComponent.CurrentRectangle.Y) / 1000f, 0, 1),
            };

            _interactComponent = new InteractComponent(this, () => _moveComponent.CurrentRectangle)
            {
            };

            _moveComponent = new MoveComponent(this, map, (gameTime) => SetMovementEvent(gameTime))
            {
                Speed = 2,
                CurrentRectangleOffset = new Rectangle(0, 40, 0, 0),
                OnBattle = () => EnterBattle = true,
            };

            _mapComponent = new MapComponent(this, map, GetMapRectangle);

            Components.Add(_moveComponent);
            Components.Add(_interactComponent);
            Components.Add(_animationComponent);
            //Components.Add(_mapComponent);
        }
Ejemplo n.º 2
0
        public Animal(Texture2D texture, SpriteFont font, Map map)
            : base()
        {
            _animationComponent = new TextureAnimatedComponent(this, texture, 4, 4, 0.3f)
            {
                SetAnimation = (gameTime) => SetAnimationEvent(gameTime),
                GetLayer     = () => MathHelper.Clamp((_moveComponent.CurrentRectangle.Y) / 1000f, 0, 1),
            };

            _interactComponent = new InteractComponent(this, () => _moveComponent.CurrentRectangle)
            {
                OnInteract = () => OnInteractEvent(),
            };

            _moveComponent = new MoveComponent(this, map, (gameTime) => SetMovementEvent(gameTime))
            {
                Speed = 1,
            };

            _mapComponent = new MapComponent(this, map, GetMapRectangle);

            Components.Add(_moveComponent);
            Components.Add(_interactComponent);
            Components.Add(_animationComponent);
            Components.Add(_mapComponent);

            _font = font;
        }
Ejemplo n.º 3
0
    void OnTriggerStay(Collider col)
    {
        if (col.CompareTag("Player"))
        {
            return;
        }

        if (col.gameObject.GetComponent <InteractComponent>() != null && !(col.gameObject.GetComponent <InteractComponent>().isUsing))
        {
            interact = col.gameObject.GetComponent <InteractComponent>();
            if (col.CompareTag("Interact"))
            {
                interactPanel[0].SetActive(true);
            }
            else
            {
                interactPanel[1].SetActive(true);
            }
        }
        else if (col.gameObject.GetComponentInParent <InteractComponent>() != null && !col.gameObject.GetComponentInParent <InteractComponent>().isUsing)
        {
            interact = col.gameObject.GetComponentInParent <InteractComponent>();
            if (col.CompareTag("Interact"))
            {
                interactPanel[0].SetActive(true);
            }
            else
            {
                interactPanel[1].SetActive(true);
            }
        }
    }
Ejemplo n.º 4
0
        public Enemy(Texture2D body, Texture2D tail, Map map)
            : base()
        {
            _bodyComponent = new TextureComponent(this, body)
            {
                GetLayer       = () => GetBodyLayer(),
                PositionOffset = new Vector2(-((body.Width % Map.TileWidth) / 2), Map.TileHeight - (body.Height % Map.TileHeight))
            };

            _tailComponent = new TextureComponent(this, tail)
            {
                GetLayer       = () => Direction == Directions.Up ? _bodyComponent.Layer + 0.001f : _bodyComponent.Layer - 0.001f,
                PositionOffset = new Vector2(0, body.Height - tail.Height),
            };

            _moveComponent = new MoveComponent(this, map, (gameTime) => SetMovementEvent(gameTime))
            {
                CurrentRectangleOffset = new Rectangle(0, 40, 0, 40),
                Speed = 1,
            };

            _mapComponent = new MapComponent(this, map, GetMapRectangle);

            _interactComponent = new InteractComponent(this, () => _mapComponent.MapRectangle)
            {
                OnInteract = () => OnInteractEvent(),
            };

            Components.Add(_moveComponent);
            Components.Add(_bodyComponent);
            Components.Add(_tailComponent);
            Components.Add(_mapComponent);
            Components.Add(_interactComponent);
        }
Ejemplo n.º 5
0
 public void InteractPanelOff()
 {
     if (interact != null)
     {
         interact = null;
         for (int i = 0; i < interactPanel.Length; ++i)
         {
             interactPanel[i].SetActive(false);
         }
     }
 }
Ejemplo n.º 6
0
    /*private struct InventoryWeapons {
     *  BaseWeapon weaponStats;
     *  int currAmmo;
     * }*/

    private void Start()
    {
        activeCam           = FPCam;
        coverComp           = GetComponent <CoverComponent>();
        noiseEmitter        = GetComponent <PawnNoiseEmitterComponent>();
        interactComp        = GetComponent <InteractComponent>();
        animController      = GetComponentInChildren <Animator>();
        collider            = GetComponent <CapsuleCollider>();
        startColliderHeight = collider.height;
        heroState           = new StandingState();
        heroState.Enter(this);
    }
Ejemplo n.º 7
0
        public Building(Texture2D texture, Map map)
        {
            _textureComponent = new TextureComponent(this, texture)
            {
                GetLayer = () => MathHelper.Clamp((Y + 40) / 1000f, 0, 1),
            };

            _interactComponent = new InteractComponent(this, GetInteractRectangle)
            {
                OnInteract = () => Console.WriteLine("Enter me"),
            };

            _mapComponent = new MapComponent(this, map, GetMapRectangle);

            Components.Add(_interactComponent);
            Components.Add(_textureComponent);
            Components.Add(_mapComponent);
        }
Ejemplo n.º 8
0
        public void Update(GameTime gameTime)
        {
            ComponentManager cm = ComponentManager.GetInstance();

            foreach (var player in players)
            {
                PlayerComponent        playerComponent         = player.Item1;
                PlayerControlComponent controlComponent        = player.Item2;
                PositionComponent      playerPositionComponent = player.Item3;

                int closestInteractable = FindClosestInteractable(player.Entity, playerPositionComponent.Position);

                if (closestInteractable != -1)
                {
                    if (controlComponent.Interact.IsButtonDown() && !cm.GetComponentForEntity <InventoryComponent>(player.Entity).IsOpen)
                    {
                        InteractComponent interComp = cm.GetComponentForEntity <InteractComponent>(closestInteractable);

                        // Its a trap(Deal damage)
                        if (interComp.Type == InteractType.Trap && cm.HasEntityComponent <AttackComponent>(closestInteractable))
                        {
                            cm.GetComponentForEntity <HealthComponent>(player.Entity).IncomingDamage.Add(closestInteractable);
                        }

                        //Talk(show text)
                        else if (interComp.Type == InteractType.Talk && cm.HasEntityComponent <TextComponent>(closestInteractable))
                        {
                            foreach (var inter in cm.GetComponentsOfType <InteractComponent>())
                            {
                                if (cm.HasEntityComponent <TextComponent>(inter.Key))
                                {
                                    cm.GetComponentForEntity <TextComponent>(inter.Key).IsActive = false;
                                }
                            }
                            cm.GetComponentForEntity <TextComponent>(closestInteractable).IsActive = true;
                        }
                        //Loot(Give item to looter)
                        else if (interComp.Type == InteractType.Loot &&
                                 cm.HasEntityComponent <InventoryComponent>(player.Entity) &&
                                 cm.HasEntityComponent <ItemComponent>(closestInteractable))
                        {
                            if (cm.HasEntityComponent <HealthComponent>(closestInteractable) && cm.GetComponentForEntity <HealthComponent>(closestInteractable).IsAlive)
                            {
                                break;
                            }
                            InventoryComponent invenComp = cm.GetComponentForEntity <InventoryComponent>(player.Entity);
                            if (invenComp.AmountOfItems < invenComp.Items.Length)
                            {
                                //Remove components
                                cm.RemoveComponentFromEntity <InteractComponent>(closestInteractable);
                                cm.RemoveComponentFromEntity <CollisionComponent>(closestInteractable);
                                cm.RemoveComponentFromEntity <PositionComponent>(closestInteractable);
                                //Give the item to the player
                                cm.AddEntityWithComponents(new IComponent[] {
                                    (ItemComponent)cm.GetComponentForEntity <ItemComponent>(closestInteractable).Clone(),
                                });
                                invenComp.ItemsToAdd.Add(closestInteractable);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 9
0
 void Start()
 {
     singleton    = this;
     highlitTiles = new List <InteractTile>();
 }