mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 04:14:22 +00:00
55 lines
2.3 KiB
C#
55 lines
2.3 KiB
C#
|
using System;
|
||
|
using Microsoft.Xna.Framework;
|
||
|
using ProjectZ.InGame.GameObjects.Base;
|
||
|
using ProjectZ.InGame.GameObjects.Base.CObjects;
|
||
|
using ProjectZ.InGame.GameObjects.Base.Components;
|
||
|
using ProjectZ.InGame.SaveLoad;
|
||
|
using ProjectZ.InGame.Things;
|
||
|
|
||
|
namespace ProjectZ.InGame.GameObjects.Things
|
||
|
{
|
||
|
internal class ObjAnimator : GameObject
|
||
|
{
|
||
|
public Animator Animator;
|
||
|
public AnimationComponent AnimationComponent;
|
||
|
public CSprite Sprite;
|
||
|
|
||
|
public ObjAnimator(Map.Map map, int posX, int posY, int offsetX, int offsetY,
|
||
|
int layer, string animatorName, string animationName, bool deleteOnFinish) : base(map)
|
||
|
{
|
||
|
SprEditorImage = Resources.SprItem;
|
||
|
EditorIconSource = new Rectangle(64, 168, 16, 16);
|
||
|
|
||
|
EntityPosition = new CPosition(posX, posY, 0);
|
||
|
|
||
|
Animator = AnimatorSaveLoad.LoadAnimator(animatorName);
|
||
|
|
||
|
// this should never happen...
|
||
|
if (Animator == null)
|
||
|
{
|
||
|
Console.WriteLine("Error: could not load animation \"{0}\"", animatorName);
|
||
|
IsDead = true;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Animator.Play(animationName);
|
||
|
|
||
|
EntitySize = new Rectangle(
|
||
|
offsetX + Animator.CurrentAnimation.Offset.X + Animator.CurrentAnimation.AnimationLeft,
|
||
|
offsetY + Animator.CurrentAnimation.Offset.Y + Animator.CurrentAnimation.AnimationTop,
|
||
|
Animator.CurrentAnimation.AnimationWidth, Animator.CurrentAnimation.AnimationHeight);
|
||
|
|
||
|
Sprite = new CSprite(EntityPosition);
|
||
|
AnimationComponent = new AnimationComponent(Animator, Sprite, new Vector2(offsetX, offsetY));
|
||
|
if (deleteOnFinish)
|
||
|
Animator.OnAnimationFinished = () => Map.Objects.DeleteObjects.Add(this);
|
||
|
|
||
|
AddComponent(BaseAnimationComponent.Index, AnimationComponent);
|
||
|
AddComponent(DrawComponent.Index, new DrawCSpriteComponent(Sprite, layer));
|
||
|
}
|
||
|
|
||
|
public ObjAnimator(Map.Map map, int posX, int posY, int layer, string animatorName, string animationName,
|
||
|
bool deleteOnFinish) : this(map, posX, posY, 0, 0, layer, animatorName, animationName, deleteOnFinish)
|
||
|
{ }
|
||
|
}
|
||
|
}
|