mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-25 16:03:02 +00:00
48 lines
1.8 KiB
C#
48 lines
1.8 KiB
C#
using Microsoft.Xna.Framework;
|
|
using ProjectZ.InGame.GameObjects.Base;
|
|
using ProjectZ.InGame.GameObjects.Base.CObjects;
|
|
using ProjectZ.InGame.GameObjects.Base.Components;
|
|
using ProjectZ.InGame.Things;
|
|
using System;
|
|
|
|
namespace ProjectZ.InGame.GameObjects.Things
|
|
{
|
|
internal class ObjZZZ : GameObject
|
|
{
|
|
private readonly CSprite _sprite;
|
|
private readonly Vector2 _direction;
|
|
private readonly Vector2 _dirOrthogonal;
|
|
private float _moveCounter;
|
|
private float _transparency;
|
|
|
|
public ObjZZZ(Map.Map map, Vector2 position, Vector2 direction) : base(map)
|
|
{
|
|
EntityPosition = new CPosition(position.X, position.Y, 0);
|
|
EntitySize = new Rectangle(-8, -8, 16, 16);
|
|
|
|
_sprite = new CSprite("tarin_zzz", EntityPosition);
|
|
|
|
_direction = direction;
|
|
_dirOrthogonal = new Vector2(_direction.Y, -_direction.X);
|
|
|
|
AddComponent(UpdateComponent.Index, new UpdateComponent(Update));
|
|
AddComponent(DrawComponent.Index, new DrawCSpriteComponent(_sprite, Values.LayerTop));
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
// fade in/out
|
|
var target = _moveCounter < 750 ? 1 : 0;
|
|
_transparency = AnimationHelper.MoveToTarget(_transparency, target, 0.25f * Game1.TimeMultiplier);
|
|
_sprite.Color = Color.White * _transparency;
|
|
|
|
// move
|
|
_moveCounter += Game1.DeltaTime;
|
|
EntityPosition.Set(EntityPosition.Position + _direction * 0.175f * Game1.TimeMultiplier + _dirOrthogonal * Game1.TimeMultiplier * 0.125f * MathF.Sin(_moveCounter / 100));
|
|
|
|
// despawn
|
|
if (_moveCounter > 850)
|
|
Map.Objects.DeleteObjects.Add(this);
|
|
}
|
|
}
|
|
} |