314 lines
9.5 KiB
C#
314 lines
9.5 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
using UnityEngine.EventSystems;
|
||
using System;
|
||
using Cinemachine;
|
||
using System.IO;
|
||
using DG.Tweening;
|
||
using UnityEngine.Networking;
|
||
|
||
public class mapDrag : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler
|
||
{
|
||
//public Image BGmap;
|
||
public RectTransform BGmap;
|
||
Vector3 offset;
|
||
Vector3 originPos;
|
||
Vector3 outPos;
|
||
|
||
public Slider sliderScale;
|
||
public GameObject S1;
|
||
public GameObject S2;
|
||
public GameObject S3;
|
||
public GameObject S4;
|
||
public GameObject M1;
|
||
public GameObject M2;
|
||
public GameObject M3;
|
||
public GameObject M4;
|
||
public GameObject Q1;
|
||
public GameObject Q2;
|
||
public GameObject Q3;
|
||
public GameObject Q4;
|
||
|
||
private Vector2? initialTouch1Pos = null;
|
||
private Vector2? initialTouch2Pos = null;
|
||
private float initialSliderValue;
|
||
|
||
public float minScale;
|
||
public float maxScale;
|
||
public Animator XX;
|
||
public string buildingName;
|
||
public TMPro.TMP_Text zi;
|
||
public Image noMN;
|
||
public Image gu;
|
||
public Image jin;
|
||
public Image jin2;
|
||
public Image wz;
|
||
public AudioSource AS;
|
||
|
||
// Start is called before the first frame update
|
||
void Start()
|
||
{
|
||
sliderScale.onValueChanged.AddListener(OnScaleChanged);
|
||
}
|
||
|
||
void Update()
|
||
{
|
||
if (Input.touchCount == 2)
|
||
{
|
||
HandlePinchZoom();
|
||
}
|
||
}
|
||
private void HandlePinchZoom()
|
||
{
|
||
Touch touch0 = Input.GetTouch(0);
|
||
Touch touch1 = Input.GetTouch(1);
|
||
|
||
// Calculate the distance between the two touches
|
||
float currentDistance = (touch0.position - touch1.position).magnitude;
|
||
|
||
if (initialTouch1Pos == null || initialTouch2Pos == null)
|
||
{
|
||
// Set initial positions
|
||
initialTouch1Pos = touch0.position;
|
||
initialTouch2Pos = touch1.position;
|
||
initialSliderValue = sliderScale.value;
|
||
}
|
||
else
|
||
{
|
||
// Calculate the initial distance
|
||
float initialDistance = (initialTouch1Pos.Value - initialTouch2Pos.Value).magnitude;
|
||
|
||
// Calculate the distance change
|
||
float distanceChange = currentDistance - initialDistance;
|
||
|
||
// Map the distance change to Slider value
|
||
float valueChange = distanceChange * 0.01f; // Adjust sensitivity if needed
|
||
sliderScale.value = Mathf.Clamp(initialSliderValue + valueChange, minScale, maxScale);
|
||
}
|
||
}
|
||
|
||
public void OnPointerUp()
|
||
{
|
||
// Reset initial touch positions when touches are released
|
||
initialTouch1Pos = null;
|
||
initialTouch2Pos = null;
|
||
}
|
||
|
||
private void OnScaleChanged(float arg0)
|
||
{
|
||
BGmap.localScale = Vector3.one * arg0;
|
||
}
|
||
|
||
public void OnDrag(PointerEventData eventData)
|
||
{
|
||
BGmap.anchoredPosition = Input.mousePosition + offset;
|
||
}
|
||
|
||
public void OnBeginDrag(PointerEventData eventData)
|
||
{
|
||
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(BGmap,Input.mousePosition,eventData.enterEventCamera,out outPos))
|
||
{
|
||
originPos = BGmap.anchoredPosition;
|
||
//BGmap.SetAsLastSibling();
|
||
offset = (Vector3)BGmap.anchoredPosition - outPos;
|
||
}
|
||
}
|
||
|
||
public void OnEndDrag(PointerEventData eventData)
|
||
{
|
||
|
||
}
|
||
|
||
public void DisS()
|
||
{
|
||
S1.SetActive(true);
|
||
S2.SetActive(true);
|
||
S3.SetActive(true);
|
||
S4.SetActive(true);
|
||
}
|
||
public void DisM()
|
||
{
|
||
M1.SetActive(true);
|
||
M2.SetActive(true);
|
||
M3.SetActive(true);
|
||
M4.SetActive(true);
|
||
}
|
||
public void DisQ()
|
||
{
|
||
Q1.SetActive(true);
|
||
Q2.SetActive(true);
|
||
Q3.SetActive(true);
|
||
Q4.SetActive(true);
|
||
}
|
||
|
||
public void UNDisAll()
|
||
{
|
||
S1.SetActive(false); S2.SetActive(false); S3.SetActive(false); S4.SetActive(false);
|
||
Q1.SetActive(false); Q2.SetActive(false); Q3.SetActive(false); Q4.SetActive(false);
|
||
M1.SetActive(false); M2.SetActive(false); M3.SetActive(false); M4.SetActive(false);
|
||
|
||
}
|
||
|
||
public void getName(string name)//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ת<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>İ<EFBFBD>ť<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>name<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||
{
|
||
buildingName = name;
|
||
}
|
||
|
||
public void disXX()
|
||
{
|
||
if (!File.Exists(Application.streamingAssetsPath + "/XinXi.txt"))
|
||
{
|
||
Debug.LogError("<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||
return;
|
||
}
|
||
string[] lines = File.ReadAllLines(Application.streamingAssetsPath + "/XinXi.txt");
|
||
|
||
for (int i = 0; i < lines.Length; i++)
|
||
{
|
||
string[] data = lines[i].Split('@');
|
||
if (data.Length >= 2)
|
||
{
|
||
string itemName = data[0];
|
||
string description = data[1];
|
||
}
|
||
if (data[0] == buildingName)
|
||
{
|
||
zi.text = data[1];
|
||
zi.text = zi.text.Replace("\\n", "\n");
|
||
|
||
}
|
||
}
|
||
string g = "noModels/gu/";
|
||
string j = "noModels/jin/";
|
||
string w = "noModels/weizhi/";
|
||
string n = "noModels/name/";
|
||
//Sprite spriteName = Resources.Load<Sprite>("noModels/gu/" + buildingName);
|
||
Sprite spriteName = loadSpriteFromSA(buildingName, g);
|
||
gu.sprite = spriteName;
|
||
imageHD(spriteName, gu);
|
||
//gu.preserveAspect = true;
|
||
//Sprite jin1 = Resources.Load<Sprite>("noModels/jin/" + buildingName) as Sprite;
|
||
Sprite jin1 = loadSpriteFromSA(buildingName, j);
|
||
jin.sprite = jin1;
|
||
jin2.sprite = jin1;
|
||
//imageHD(jin1, jin);
|
||
imageHD(jin1, jin2);
|
||
//Sprite weizhi = Resources.Load<Sprite>("noModels/weizhi/" + buildingName);
|
||
Sprite weizhi = loadSpriteFromSA(buildingName, w);
|
||
wz.sprite = weizhi;
|
||
imageHD(weizhi, wz);
|
||
//Sprite Name = Resources.Load<Sprite>("noModels/name/" + buildingName);
|
||
Sprite Name = loadSpriteFromSA(buildingName, n);
|
||
noMN.sprite = Name;
|
||
noMN.preserveAspect = true;
|
||
Debug.Log("noModels/name/" + buildingName);
|
||
// Debug.Log(jin1+"-----"+Name+"-----"+noMN.sprite.name);
|
||
jin.DOFade(0, 2).From();
|
||
jin.transform.DOLocalMoveY((gu.rectTransform.rect.height) + 120, 2).From();
|
||
zi.DOFade(0, 2).From();
|
||
//AS.clip = Resources.Load<AudioClip>("sound/" + buildingName);
|
||
loadSound();
|
||
}
|
||
void imageHD(Sprite sprite,Image image)
|
||
{
|
||
float targetWidth = 920;
|
||
float widthRatio = sprite.rect.width / sprite.rect.height;
|
||
float targetHeight = targetWidth / widthRatio;
|
||
image.sprite = sprite;
|
||
image.rectTransform.sizeDelta = new Vector2(targetWidth, targetHeight);
|
||
}
|
||
public void XXback()
|
||
{
|
||
XX.GetComponent<Animator>().Play("back");
|
||
//Content.transform.DORestart();
|
||
float delayTime = 1f; // <20><>ʱ2<CAB1><32><EFBFBD><EFBFBD>ִ<EFBFBD>лص<D0BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||
DOTween.To(() => 0, x => { }, 0, delayTime)
|
||
.OnComplete(() =>
|
||
{
|
||
zi.text = null;
|
||
});
|
||
//gu.sprite = null;
|
||
//jin.sprite = null;
|
||
//wz.sprite = null;
|
||
//zi.text = null;
|
||
}
|
||
|
||
public Sprite loadSpriteFromSA(string buildingName, string ML)
|
||
{
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>StreamingAssets<74>µľ<C2B5><C4BE><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
string filePath = Path.Combine(Application.streamingAssetsPath, ML + buildingName + ".png");
|
||
|
||
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||
byte[] fileData = File.ReadAllBytes(filePath);
|
||
|
||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Texture2D<32><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
|
||
Texture2D texture = new Texture2D(2, 2);
|
||
|
||
// <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>ͼƬ<CDBC><C6AC>Ϣ<EFBFBD><CFA2>Texture2D<32><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>سɹ<D8B3>
|
||
if (texture.LoadImage(fileData))
|
||
{
|
||
// <20><><EFBFBD>ݼ<EFBFBD><DDBC>غõ<D8BA>Texture2D<32><44><EFBFBD><EFBFBD>Sprite<74><65><EFBFBD><EFBFBD>
|
||
return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>null
|
||
return null;
|
||
}
|
||
|
||
public void LoadSoundFromSA(string buildingName, string ML, Action<AudioClip> onAudioLoaded)
|
||
{
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
||
string filePath = Path.Combine(Application.streamingAssetsPath, ML, buildingName + ".wav");
|
||
|
||
// <20>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||
if (!File.Exists(filePath))
|
||
{
|
||
Debug.LogError($"<22><>Ƶ<EFBFBD>ļ<EFBFBD> {filePath} <20><><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>");
|
||
onAudioLoaded(null); // <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>null
|
||
return;
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD>Э<EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
||
StartCoroutine(LoadAudioClipCoroutine(filePath, onAudioLoaded));
|
||
}
|
||
|
||
private IEnumerator LoadAudioClipCoroutine(string filePath, Action<AudioClip> onAudioLoaded)
|
||
{
|
||
// <20><><EFBFBD><EFBFBD>UnityWebRequest<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
||
UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("file://" + filePath, AudioType.WAV);
|
||
yield return www.SendWebRequest();
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
|
||
if (www.result != UnityWebRequest.Result.Success)
|
||
{
|
||
Debug.LogError($"<22><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>: {www.error}");
|
||
onAudioLoaded(null); // <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>null
|
||
}
|
||
else
|
||
{
|
||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC>ص<EFBFBD><D8B5><EFBFBD>Ƶ
|
||
AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www);
|
||
onAudioLoaded(audioClip); // <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC>ص<EFBFBD><D8B5><EFBFBD>Ƶ
|
||
}
|
||
}
|
||
public void loadSound()
|
||
{
|
||
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻص<DDBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||
this.LoadSoundFromSA(buildingName, "sound/", (audioClip) =>
|
||
{
|
||
if (audioClip != null)
|
||
{
|
||
Debug.Log("<22><>Ƶ<EFBFBD><C6B5><EFBFBD>سɹ<D8B3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>");
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ﲥ<EFBFBD><EFB2A5><EFBFBD><EFBFBD>Ƶ
|
||
AS.clip = audioClip;
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("<22><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>");
|
||
}
|
||
});
|
||
}
|
||
}
|