160 lines
5.3 KiB
C#
160 lines
5.3 KiB
C#
/// <summary>
|
|
///********************************************************
|
|
/// 作者: DDG
|
|
/// 日期: 2024/10/18 13:53:32
|
|
/// 功能:
|
|
///********************************************************
|
|
/// <summary>
|
|
|
|
using QuickOutline;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using ZXKFramework;
|
|
|
|
public class GameManager : MonoSingleton<GameManager>
|
|
{
|
|
public Bomb bomb;
|
|
|
|
GameModel gameModel;
|
|
|
|
/// <summary>
|
|
/// 当前点击的物体高亮使用的OutLine(黄色)
|
|
/// </summary>
|
|
public OutLineManager outLineManager = new OutLineManager();
|
|
|
|
/// <summary>
|
|
/// 当前点击的物体需要放置的位置的OutLine(绿色)
|
|
/// </summary>
|
|
OutLineManager greenOutLineManager = new OutLineManager();
|
|
Adsorb adsorb = new Adsorb();
|
|
|
|
[HideInInspector]
|
|
public List<MouseMoveObj> allMouseMove;
|
|
|
|
[HideInInspector]
|
|
public List<Collider> allOutLine;
|
|
|
|
OrderDragManager orderDragManager;
|
|
/// <summary>
|
|
/// 不需要拖拽的物体(但是需要有介绍)
|
|
/// </summary>
|
|
[Header("请将需要有介绍文字但不需要拖拽的物体放到这里")]
|
|
public List<GameObject> allNoDragGame;
|
|
|
|
[Header("透明物体")]
|
|
public List<GameObject> allAlphaGame;
|
|
|
|
public void Start()
|
|
{
|
|
allMouseMove = new List<MouseMoveObj>();
|
|
gameModel = MVC.GetModel<GameModel>();
|
|
gameModel.Init();
|
|
orderDragManager = OrderDragManager.Instance;
|
|
orderDragManager.Init();
|
|
adsorb.Init(transform);
|
|
GameObject parent = transform.FindFirst("OutLineManager");
|
|
outLineManager.Init(parent.transform, parent.GetComponent<Outline>());
|
|
outLineManager.CloseAllOutLine();
|
|
|
|
GameObject greenOutLine = transform.FindFirst("GreenOutLineManager");
|
|
greenOutLineManager.Init(greenOutLine.transform, greenOutLine.GetComponent<Outline>());
|
|
greenOutLineManager.CloseAllOutLine();
|
|
|
|
List<ShowJieGou> allJieGou = gameModel.excelData.allShowJieGou;
|
|
for (int i = 0; i < allJieGou.Count; i++)
|
|
{
|
|
MouseMoveObj loMouseMoveObj = transform.FindFirst(allJieGou[i].Name).GetOrAddComponent<MouseMoveObj>();
|
|
Collider loGameOBJ = transform.FindFirst($"{allJieGou[i].Name}_OutLine").GetOrAddComponent<Collider>();
|
|
|
|
allMouseMove.Add(loMouseMoveObj);
|
|
allOutLine.Add(loGameOBJ);
|
|
|
|
loMouseMoveObj.enabled = false;
|
|
loMouseMoveObj.isMove = true;
|
|
loMouseMoveObj.down += m =>
|
|
{
|
|
gameModel.isMouseMove = false;
|
|
outLineManager.OpenHightLightAndCloseOther(m.name);
|
|
greenOutLineManager.OpenHightLightAndCloseOther($"{m.name}_OutLine");
|
|
///可以拖拽说明现在是拆开状态,所以可以记录初始位置
|
|
orderDragManager.AddDragGame(loMouseMoveObj.name, loMouseMoveObj.transform.localPosition);
|
|
};
|
|
loMouseMoveObj.up += m =>
|
|
{
|
|
gameModel.isMouseMove = true;
|
|
outLineManager.CloseAllOutLine();
|
|
greenOutLineManager.CloseAllOutLine();
|
|
AdsorbItem loAdsorbItem;
|
|
adsorb.allAds.TryGetValue(m.name, out loAdsorbItem);
|
|
if (loAdsorbItem != null)
|
|
{
|
|
if (orderDragManager.isDragRight(loMouseMoveObj.gameObject))//是否拖拽正确
|
|
{
|
|
if (orderDragManager.NextDrag())
|
|
{
|
|
orderDragManager.AddOrderID();//增加顺序ID
|
|
}
|
|
loAdsorbItem.CheakHoming();//拼装物体
|
|
if (orderDragManager.IsPieceTogetherFinish())//所有物体是否拼装完毕
|
|
{
|
|
//把模型状态更改为合并
|
|
Game.Instance.uiManager.GetUI<MainWnd>().ChangeIsBomb(false);
|
|
//初始化拖拽顺序
|
|
orderDragManager.InitDragOrder();
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
orderDragManager.ReturnToStartPos(loMouseMoveObj.gameObject);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
for (int i = 0; i < allMouseMove.Count; i++)
|
|
{
|
|
if (allNoDragGame.Contains(allMouseMove[i].gameObject))
|
|
{
|
|
allMouseMove.RemoveAt(i);
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void MergeAdsorb(string name)
|
|
{
|
|
AdsorbItem loAdsorbItem;
|
|
adsorb.allAds.TryGetValue(name, out loAdsorbItem);
|
|
if (loAdsorbItem != null)
|
|
{
|
|
loAdsorbItem.CheakHoming();
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("拼装错误 " + name);
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
//if (Input.GetKeyDown(KeyCode.K))
|
|
//{
|
|
// bomb.Move();
|
|
// for (int i = 0; i < allMouseMove.Count; i++)
|
|
// {
|
|
// allMouseMove[i].enabled = true;
|
|
// }
|
|
//}
|
|
//if (Input.GetKeyDown(KeyCode.L))
|
|
//{
|
|
// bomb.Back();
|
|
// for (int i = 0; i < allMouseMove.Count; i++)
|
|
// {
|
|
// allMouseMove[i].enabled = false;
|
|
// }
|
|
//}
|
|
}
|
|
}
|