You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
4.8 KiB

using Microsoft.Extensions.Localization;
using System;
using System.Collections.Generic;
using BlazorApV1.Weather;
using BlazorApV1.Models;
using BlazorApV1.Pages;
using System.Linq;
using System.Threading.Tasks;
using BlazorApV1.Services;
using System.Text.Json;
using Microsoft.JSInterop;
using Blazorise.DataGrid;
using Blazorise;
using Microsoft.AspNetCore.Components;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
namespace BlazorApV1.Components
{
public partial class Inventory
{
[CascadingParameter]
public Inventory Director { get; set; }
[Parameter]
public Item Item { get; set; }
[Parameter]
public int Index { get; set; }
[Parameter]
public bool IsntDrop { get; set; }
internal void OnDragEnter()
{
if (IsntDrop)
{
return;
}
Director.Actions.Add(new InventoryAction { Action = "Drag Enter", Item = this.Item, Index = this.Index });
}
internal void OnDragLeave()
{
if (IsntDrop)
{
return;
}
Director.Actions.Add(new InventoryAction { Action = "Drag Leave", Item = this.Item, Index = this.Index });
}
internal void OnDrop()
{
if (IsntDrop == true || Director.CurrentDragItem == null)
{
return;
}
if (this.Item == null)
{
this.Item = ItemFactory.Create(Director.CurrentDragItem);
Director.RecipeItems[this.Index] = this.Item;
Director.Actions.Add(new InventoryAction { Action = "Drop", Item = this.Item, Index = this.Index });
if (Director.CurrentDragItemIndex != -1)
{
Director.CurrentDragItem = null;
Director.RecipeItems[Director.CurrentDragItemIndex] = null;
Director.Actions.Add(new InventoryAction { Action = "Moove", Item = this.Item, Index = this.Index });
}
}
else if (this.Item.Id == Director.CurrentDragItem.Id && Director.CurrentDragItemIndex != this.Index)
{
if (this.Item.StackSize > this.Item.Num)
{
ItemFactory.Add(this.Item, Director.CurrentDragItem);
Director.RecipeItems[this.Index] = this.Item;
Director.Actions.Add(new InventoryAction { Action = "Drop", Item = this.Item, Index = this.Index });
Director.Actions.Add(new InventoryAction { Action = "Moove", Item = this.Item, Index = this.Index });
}
}
else if (Director.CurrentDragItemIndex != -1)
{
Director.RecipeItems[Director.CurrentDragItemIndex] = this.Item;
this.Item = ItemFactory.Create(Director.CurrentDragItem);
Director.RecipeItems[this.Index] = this.Item;
Director.Actions.Add(new InventoryAction { Action = "Swap Position", Item = this.Item, Index = this.Index });
}
Director.RecipeItems[this.Index] = this.Item;
string fileName = "Stack.json";
string jsonString = JsonSerializer.Serialize(Director.RecipeItems);
File.WriteAllText(fileName, jsonString);
}
private void OnDragStart()
{
Director.CurrentDragItem = this.Item;
Director.CurrentDragItemIndex = this.Index;
Director.Actions.Add(new InventoryAction { Action = "Drag Start", Item = this.Item, Index = this.Index });
}
private void OnDragEnd()
{
if (Director.Actions.Last().Action == "Drag Leave" && Director.CurrentDragItemIndex != -1 && this.Item != null)
{
this.Item = null;
Director.Actions.Add(new InventoryAction { Action = "Delete", Item = this.Item, Index = this.Index });
Director.RecipeItems[this.Index] = null;
string fileName = "End.json";
string jsonString = JsonSerializer.Serialize(Director.RecipeItems);
File.WriteAllText(fileName, jsonString);
}
if (Director.Actions.Last().Action == "Moove" && Director.CurrentDragItemIndex != -1)
{
this.Item = null;
Director.RecipeItems[this.Index] = null;
string fileName = "Stack.json";
string jsonString = JsonSerializer.Serialize(Director.RecipeItems);
File.WriteAllText(fileName, jsonString);
}
if (Director.Actions.Last().Action == "Swap Position")
{
this.Item = Director.RecipeItems[this.Index];
}
}
}
}