Initial Commit
This commit is contained in:
commit
ee5c2f922d
2255 changed files with 547750 additions and 0 deletions
123
Assets/Scripts/UI/ItemDraggingSystem.cs
Normal file
123
Assets/Scripts/UI/ItemDraggingSystem.cs
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
using Assets.Scripts.UI;
|
||||
using DefaultNamespace;
|
||||
using Events;
|
||||
using System;
|
||||
using TMPro;
|
||||
using Tween;
|
||||
using Unity.Entities;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using Zenject;
|
||||
|
||||
namespace UI
|
||||
{
|
||||
[UpdateInGroup(typeof(PresentationSystemGroup))]
|
||||
public class ItemDraggingSystem : AdvancedComponentSystem, IInitializable
|
||||
{
|
||||
[Serializable]
|
||||
public class Settings
|
||||
{
|
||||
public TMP_Text Amount;
|
||||
public Canvas ItemCanvas;
|
||||
public RectTransform ItemContainer;
|
||||
public GameObjectEntity ItemGroup;
|
||||
public SpriteImage ItemImage;
|
||||
}
|
||||
|
||||
[Inject] private readonly Camera camera;
|
||||
[Inject] private readonly Settings settings;
|
||||
|
||||
[Inject] private TweenSystem tweenSystem;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
settings.ItemCanvas.enabled = false;
|
||||
}
|
||||
|
||||
protected override void OnStartRunning()
|
||||
{
|
||||
settings.ItemCanvas.enabled = false;
|
||||
}
|
||||
|
||||
protected override void OnStopRunning()
|
||||
{
|
||||
if (settings.ItemCanvas != null)
|
||||
{
|
||||
settings.ItemCanvas.enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnSystemUpdate()
|
||||
{
|
||||
var enableItemCanvasFlag = false;
|
||||
|
||||
Entities.ForEach(
|
||||
(Entity entity, ItemDragEvent e, ref PlayerInput input) =>
|
||||
{
|
||||
enableItemCanvasFlag = true;
|
||||
|
||||
if (e.ItemPrefab.IsEmpty)
|
||||
{
|
||||
settings.Amount.text = e.Item.Amount.ToString();
|
||||
settings.Amount.enabled = e.Item.Amount > 1;
|
||||
e.ItemPrefab = new AsyncOperationWrapper<ItemPrefab>(Addressables.LoadAssetAsync<ItemPrefab>(e.Item.Item.ToString()));
|
||||
e.ItemPrefab.Completed += operation =>
|
||||
{
|
||||
if (operation.IsValid)
|
||||
{
|
||||
settings.ItemImage.sprite = operation.Result?.Icon;
|
||||
}
|
||||
};
|
||||
|
||||
settings.ItemContainer.anchoredPosition = Input.mousePosition;
|
||||
|
||||
//PostUpdateCommands.StartTween(settings.ItemGroup.Entity, 0.6f, EaseType.easeOutElastic, new TweenMoveToMouseData() { FromPosition = e.ScreenPos });
|
||||
PostUpdateCommands.SetSharedComponent(entity, e);
|
||||
}
|
||||
else if (!e.ItemPrefab.IsValid)
|
||||
{
|
||||
PostUpdateCommands.RemoveComponent<ItemDragEvent>(entity);
|
||||
tweenSystem.StopAllTweens(settings.ItemGroup.Entity);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!tweenSystem.HasTween(settings.ItemGroup.Entity))
|
||||
{
|
||||
settings.ItemContainer.anchoredPosition = Input.mousePosition;
|
||||
}
|
||||
|
||||
if (!input.Drag)
|
||||
{
|
||||
var slot = -1;
|
||||
var inventory = Entity.Null;
|
||||
var pos = EntityManager.HasComponent<Rigidbody2D>(entity)
|
||||
? EntityManager.GetComponentObject<Rigidbody2D>(entity).position
|
||||
: (Vector2)camera.ScreenToWorldPoint(e.ScreenPos, Camera.MonoOrStereoscopicEye.Mono);
|
||||
|
||||
Entities.ForEach(
|
||||
(ref SlotUiData slotUiData, ref OverEvent overEvent) =>
|
||||
{
|
||||
slot = slotUiData.Index;
|
||||
inventory = slotUiData.Inventory;
|
||||
});
|
||||
|
||||
if (inventory == Entity.Null || !EntityManager.Exists(inventory))
|
||||
{
|
||||
Entities.ForEach((InventoryWindowData windowData, ref OverEvent overEvent) => { inventory = windowData.Inventory; });
|
||||
}
|
||||
|
||||
var newEntity = PostUpdateCommands.CreateEntity();
|
||||
PostUpdateCommands.AddComponent(
|
||||
newEntity,
|
||||
new ItemDropEvent { Pos = pos, Item = e.Item, Inventory = inventory, ToSlot = slot, FromSlot = e.Slot });
|
||||
|
||||
PostUpdateCommands.RemoveComponent<ItemDragEvent>(entity);
|
||||
tweenSystem.StopAllTweens(settings.ItemGroup.Entity);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
settings.ItemCanvas.enabled = enableItemCanvasFlag;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue