using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xna.Framework;
using StardewValley;
using StardewValley.Characters;
namespace StardustCore.Events
{
public static class EventHelperExtensions
{
///
/// Creates the event string to add the object to the player's inventory.
///
///
public static void addObjectToPlayersInventory(this EventHelper EventHelper,int ParentSheetIndex, int Amount=1, bool MakeActiveObject=false)
{
StringBuilder b = new StringBuilder();
b.Append("Omegasis.EventFramework.AddObjectToPlayersInventory ");
b.Append(ParentSheetIndex);
b.Append(" ");
b.Append(Amount);
b.Append(" ");
b.Append(MakeActiveObject);
EventHelper.add(b);
}
public static void ViewportLerp(this EventHelper EventHelper, Point NewPosition, double Speed)
{
StringBuilder b = new StringBuilder();
b.Append("Omegasis.EventFramework.ViewportLerp ");
b.Append(NewPosition.X);
b.Append(" ");
b.Append(NewPosition.Y);
b.Append(" ");
b.Append(Speed);
EventHelper.add(b);
}
public static void ViewportLerpTile(this EventHelper EventHelper, Point NewTilePosition, double Speed)
{
StringBuilder b = new StringBuilder();
b.Append("Omegasis.EventFramework.ViewportLerp ");
b.Append(NewTilePosition.X*Game1.tileSize);
b.Append(" ");
b.Append(NewTilePosition.Y*Game1.tileSize);
b.Append(" ");
b.Append(Speed);
EventHelper.add(b);
}
///
/// Lerps the camera an offset tile amount.
///
///
///
/// How many frames (aka update ticks) it takes to finish. Aka 60~=1 second
public static void ViewportLerpTileOffset(this EventHelper EventHelper, Point NewTilePositionOffset, int Frames=60,bool Concurrent=false)
{
StringBuilder b = new StringBuilder();
b.Append("Omegasis.EventFramework.ViewportLerp ");
b.Append((NewTilePositionOffset.X * Game1.tileSize));
b.Append(" ");
b.Append((NewTilePositionOffset.Y * Game1.tileSize));
b.Append(" ");
b.Append(Frames);
b.Append(" ");
b.Append(Concurrent);
EventHelper.add(b);
}
///
/// Creates the code to add in a junimo actor at the given location.
///
///
///
///
///
public static void AddInJunimoActor(this EventHelper EventHelper,string ActorName,Vector2 Position,Color Color)
{
StringBuilder b = new StringBuilder();
b.Append("Omegasis.EventFramework.AddInJunimoActor ");
b.Append(ActorName);
b.Append(" ");
b.Append(Position.X);
b.Append(" ");
b.Append(Position.Y);
b.Append(" ");
b.Append(Color.R);
b.Append(" ");
b.Append(Color.G);
b.Append(" ");
b.Append(Color.B);
EventHelper.add(b);
}
}
}