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); }
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; }
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); } } }
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); }
public void InteractPanelOff() { if (interact != null) { interact = null; for (int i = 0; i < interactPanel.Length; ++i) { interactPanel[i].SetActive(false); } } }
/*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); }
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); }
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); } } } } } }
void Start() { singleton = this; highlitTiles = new List <InteractTile>(); }