mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 04:14:22 +00:00
56 lines
2 KiB
C#
56 lines
2 KiB
C#
using Microsoft.Xna.Framework;
|
|
using ProjectZ.InGame.GameObjects.Base;
|
|
using ProjectZ.InGame.GameObjects.Base.CObjects;
|
|
using ProjectZ.InGame.GameObjects.Base.Components;
|
|
|
|
namespace ProjectZ.InGame.GameObjects.Things
|
|
{
|
|
internal class ObjBushRespawner : GameObject
|
|
{
|
|
private readonly string _spawnItem;
|
|
private readonly string _spriteId;
|
|
private readonly bool _hasCollider;
|
|
private readonly bool _drawShadow;
|
|
private readonly bool _setGrassField;
|
|
private readonly int _drawLayer;
|
|
private readonly string _pickupKey;
|
|
|
|
private int _lastFieldTime;
|
|
|
|
public ObjBushRespawner(Map.Map map, int posX, int posY, string spawnItem, string spriteId,
|
|
bool hasCollider, bool drawShadow, bool setGrassField, int drawLayer, string pickupKey) : base(map)
|
|
{
|
|
EntityPosition = new CPosition(posX, posY, 0);
|
|
EntitySize = new Rectangle(0, 0, 16, 16);
|
|
|
|
_spawnItem = spawnItem;
|
|
_spriteId = spriteId;
|
|
_hasCollider = hasCollider;
|
|
_drawShadow = drawShadow;
|
|
_setGrassField = setGrassField;
|
|
_drawLayer = drawLayer;
|
|
_pickupKey = pickupKey;
|
|
|
|
_lastFieldTime = Map.GetUpdateState(EntityPosition.Position);
|
|
|
|
// add key change listener
|
|
AddComponent(UpdateComponent.Index, new UpdateComponent(Update));
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
// field went out of the update range?
|
|
var updateState = Map.GetUpdateState(EntityPosition.Position);
|
|
if (_lastFieldTime < updateState)
|
|
SpawnObject();
|
|
}
|
|
|
|
private void SpawnObject()
|
|
{
|
|
Map.Objects.DeleteObjects.Add(this);
|
|
|
|
Map.Objects.SpawnObject(new ObjBush(Map, (int)EntityPosition.X, (int)EntityPosition.Y,
|
|
_spawnItem, _spriteId, _hasCollider, _drawShadow, _setGrassField, _drawLayer, _pickupKey));
|
|
}
|
|
}
|
|
} |