NewN_UAVPlane/Assets/Temp/Scripts/Scenariopage.cs

712 lines
25 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Tenkoku.Core;
using UnityEditor.Animations;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using static NetMQ.NetMQSelector;
public class Scenariopage : MonoBehaviour
{
public Button scenario_file_btn;//想定文件按钮
public RectTransform ScrollView_unpack;//打开保存退出按钮显示
public RectTransform Scenariofile_panl;//想定页面
public Image object_list_panl;//对象列表面板
public Image Radius_panl;//值范围面板
public Image mianban;//
public Button object_list_btn;//对象列表按钮
public Button basic_info_btn;//基本信息按钮
public Image basic_information_iamg;//基本信息面板
public Button off4_btn;//基本信息关闭按钮
public Button model_list_btn;//模型按钮
public RectTransform select_device_iamg;//模型页面
public Button verify;//设备信息确认按钮
public Button Cancel_btnn;//设备信息取消按钮
public Image details_panl;//设备详情页面
public Button Fork_off_btn;//设备详情叉掉面板
public Button queren_btn;//设备详情确认按钮
public Button quxiao_btn;//设备详情取消按钮
public Image model_panl;//模型页面按钮
public Button off_btn;//选择设备的关闭按钮
public RectTransform environment_configuration1;//环境页面
public Button environment_setting_btn;//环境按钮
public Button fork_off_btn;//关闭按钮
public Button send_back_btn;//返回按钮
public Button verify_bton1;//基本信息确定按钮
public Button cancel_bton1;//基本信息取消按钮
public Button huanjin_btn;//环境配置确认按钮
public Button huanjin_btn1;//环境配置取消按钮
public Button quan_btn;//全部按钮
public Button can_btn;//探测按钮
public Button lu_btn;//陆
public Button kong_btn;//空
public Button qita_btn;//其他
public Image moxin_yemian;//显示模型框
public Image moyin_yemian1;
public Image moyin_yemian2;
public Image moyin_yemian3;
public Image moyin_yemian4;
private bool scenario = true;
private bool model = true;
private bool duixiang = true;
public Button queding;
public Dropdown windDrop;
public Dropdown windDir;
public TenkokuModule tenkokuModule;
public Button unpack_btn;//想定编辑打开按钮
public Button save_btn;//保存按钮
public Button quit;//退出按钮
public Button setting_btn;//对象列表的第二个设置按钮
//值的范围面板
public Button off1_btn;//关闭范围值的按钮
public Button verify1_btn;//值的确认按钮
public Button cancel_btn;//值的关闭按钮
public Slider tiem_slider;//时间的滑条
public Text tiem_text;//和滑条显示对应的时间
public Slider smash_slider;//击毁的滑动条
public Text smash_text;//击毁数值显示
public Slider distance_slider;//距离滑动条
public Text distance_text;
public Slider Angle_slider;//角度滑动条
public Text angle_text;
//弹窗一
public Button shezhi_btn11;//
public Button off_btn23;
public Button guan_btn;
public Button qu_btn22;
public Slider shijian;
public Text shi_text;
public Slider xuslider;
public Text xusshi_text;
public Slider Rcs;
public Text Rcs_text;
public Image contingency_list_panl;//想定列表面板
public Button off_btnn5;//关闭按钮
public Button queren_btnn3;//确认按钮
private string url = "http://172.16.1.254:48888/Handler/Thinkingfile.ashx?action=all";
public List<Text> textlist = new List<Text>();
[SerializeField]
public Editinformation scen = new Editinformation();
[SerializeField]
public List<Traininginformation> data1 = new List<Traininginformation>();
[SerializeField]
List<SubjectsInfoItemm> subjectsInfoItemms = new List<SubjectsInfoItemm>();
//List<Traininginformation> data1 = new List<Traininginformation>();
public Slider yangguang;//阳光的滑动条
public Text yangguang_text; //显示阳光的滑动数值
public Image basic_information_iamg1;//训练科目基本信息页面
public Text xunkian_txt;//显示的想定的名字
public Text time_txt;//显示基本信息的训练时间
public Text mode_text;//显示基本信息页面训练模式
public Text post_txt;//显示基本信息的设备数量
public Button off4_btn1;//训练科目基本信息叉掉按钮;
public Button verify_bton2;//训练科目基本信息确认按钮
public Button cancel_bton2;//训练科目基本信息取消按钮
public GameObject scenario_name;//想定编辑的预设体
public Transform weizhi;//生成的位置
[SerializeField] List<Toggle> togglelist = new List<Toggle>();//存放想定文件下的打勾按钮
public ToggleGroup togglezujian;//获取toggle组件
public Underneath underneath;//想定文件下的科目预设体
public Transform scenario_file_iamg;//生成的预设体的位置
[SerializeField] List<Underneath> underneathList = new List<Underneath>();
public GameObject scenarname;//想定名称
public Scenarioname scenar_name;//想定名称
[SerializeField] List<Scenarioname> scenarList = new List<Scenarioname>();
public Text year_text;//年
public Text month_text;//月
public Text day_text;//天
public Text when_text;//时
public Environmentconfiguration Environmentconfiguration;
public Slider Slider;//天气变化的滑动条
public Text tips_text;//环境编辑提示文本
[SerializeField] List<Environment> environments = new List<Environment>();
void Start()
{
//调用接口
StartCoroutine(Post1(url, (bol, str) =>
{
Scenario(bol, str);
}));
Scenario();//想定文件
Basic();//基本信息按钮
Scenariofile();//想定文件下面按钮
Environment1();//环境按钮
send_back_btn.onClick.AddListener(() =>
{
GameMain.tiao = false;
SceneManager.LoadScene("SampleScene");
});
//SetLightValue(1f);
queding.onClick.AddListener(() =>
{
//SetWindValue();
//SetWindDirection();
environment_configuration1.gameObject.SetActive(false);
});
Jiben();//基本信息确认取消按钮
Huanjin();
Moxing();
Moxingxuanze();
Duixiaang();//对象列表按钮面板
Fanwei();//值的范围面板
TZYM();//弹窗
Dixaing();//想定列表按钮
Settingbtn();//科目训练按钮三
}
private void Settingbtn()
{
off4_btn1.onClick.AddListener(() =>
{
basic_information_iamg1.gameObject.SetActive(false);
});
verify_bton2.onClick.AddListener(() =>
{
Scenariofile_panl.gameObject.SetActive(false);
basic_information_iamg1.gameObject.SetActive(false);
});
cancel_bton2.onClick.AddListener(() =>
{
basic_information_iamg1.gameObject.SetActive(false);
});
}
private void Dixaing()
{
off_btnn5.onClick.AddListener(() =>
{
contingency_list_panl.gameObject.SetActive(false);
});
queren_btnn3.onClick.AddListener(() =>
{
contingency_list_panl.gameObject.SetActive(false);
Scenariofile_panl.gameObject.SetActive(true);
});
}
private void TZYM()
{
shezhi_btn11.onClick.AddListener(() =>
{
mianban.gameObject.SetActive(true);
});
off_btn23.onClick.AddListener(() =>
{
mianban.gameObject.SetActive(false);
});
guan_btn.onClick.AddListener(() =>
{
mianban.gameObject.SetActive(false);
});
qu_btn22.onClick.AddListener(() =>
{
mianban.gameObject.SetActive(false);
});
}
void LateUpdate()
{
tenkokuModule.weather_OvercastAmt = Mathf.Lerp(0.0f, 1.0f, 1 - Slider.value / 10);
SetWindDirection();
SetWindValue();
tiem_text.text = tiem_slider.value.ToString("0") + "s";
smash_text.text = smash_slider.value.ToString("0") + "s";
distance_text.text = distance_slider.value.ToString("f1") + "km";
angle_text.text = Angle_slider.value.ToString("0") + "°";
shi_text.text = shijian.value.ToString("0") + "分钟";
xusshi_text.text = xuslider.value.ToString("f1") + "m/s";
Rcs_text.text = Rcs.value.ToString("f2");
yangguang_text.text = yangguang.value.ToString("0");
}
private void Fanwei()
{
setting_btn.onClick.AddListener(() =>
{
Radius_panl.gameObject.SetActive(true);
});
off1_btn.onClick.AddListener(() =>
{
Radius_panl.gameObject.SetActive(false);
});
verify1_btn.onClick.AddListener(() =>
{
Radius_panl.gameObject.SetActive(false);
});
cancel_btn.onClick.AddListener(() =>
{
Radius_panl.gameObject.SetActive(false);
});
}
private void Duixiaang()
{
object_list_btn.onClick.AddListener(() =>
{
if (duixiang == true)
{
model_panl.gameObject.SetActive(false);
Scenariofile_panl.gameObject.SetActive(false);
object_list_panl.gameObject.SetActive(true);
duixiang = false;
}
else
{
object_list_panl.gameObject.SetActive(false);
duixiang = true;
}
});
}
//
private void Scenariofile()
{
//想定文件下的打开按钮
unpack_btn.onClick.AddListener(() =>
{
model_panl.gameObject.SetActive(false);
ScrollView_unpack.gameObject.SetActive(false);
object_list_panl.gameObject.SetActive(false);
contingency_list_panl.gameObject.SetActive(true);
});
//想定文件下的保存按钮
save_btn.onClick.AddListener(() =>
{
ScrollView_unpack.gameObject.SetActive(false);
});
//想定文件下的退出按钮
quit.onClick.AddListener(() =>
{
ScrollView_unpack.gameObject.SetActive(false);
});
//想定页面关闭按钮
//scenario_btnn.onClick.AddListener(() =>
//{
// Scenariofile_panl.gameObject.SetActive(false);
//});
//选择设备的关闭按钮
off_btn.onClick.AddListener(() =>
{
select_device_iamg.gameObject.SetActive(false);
});
//选择设备确认按钮
verify.onClick.AddListener(() =>
{
select_device_iamg.gameObject.SetActive(false);
});
//选择设备取消按钮
Cancel_btnn.onClick.AddListener(() =>
{
select_device_iamg.gameObject.SetActive(false);
});
}
void Scenario(bool bol, string str)
{
if (bol)
{
Debug.Log(str);
scen = JsonMapper.ToObject<Editinformation>(str);//解析最外层的想定名称json文件
for (int i = 0; i < scen.data.Count; i++)
{
Traininginformation temp = new Traininginformation();//接收json解析的新对象这样接收对象就不会被覆盖因为每次都是需要一个新的对象
temp = Jsonanalyze.FromJson<Traininginformation>(scen.data[i].VirtualPath);//解析里面字符串json文件
data1.Add(temp);//把对象添加到对象链表中
}
if (scen.state)//如果state这个bool值为true进来
{
if (scenarList.Count > 0)//如果想定链表的数量量大于零个进入
{
for (int j = 0; j < scenarList.Count; j++)//循环一下对应的列表
{
Destroy(scenarList[j].gameObject);//删除链表每一个物体
}
scenarList.Clear();//清空链表
}
for (int i = 0; i < data1.Count; i++)//循环一下对象的个数
{
int index = i;//用一个值去接收循环的数值,因为用于按钮这些操作可能会被覆盖,得不到对应的值
Scenarioname scenarioname = Instantiate(scenar_name, weizhi);//生成想定名称预设体和位置
//这是预设体对应的类去接收
scenarioname.Scenario(scen.data[index].Name.ToString(), togglezujian, () =>//传对应的值到文本
{
Singlechoice(data1[index]);//把相对应的对象传到方法中
});
scenarList.Add(scenarioname);//把对象添加到链表中
}
}
}
}
private void Singlechoice(Traininginformation ti)//用相应类对象去接收
{
if (underneathList.Count > 0)//如果链表的个数大于零进入
{
for (int i = 0; i < underneathList.Count; i++)//循环链表的个数
{
Destroy(underneathList[i].gameObject);//把链表对应的个数一一删除
}
underneathList.Clear();//清除链表
}
for (int f = 0; f < ti.subjectsInfo.Count; f++)//循环对应链表对应的个数
{
int index = f;//用数去接收for循环
Underneath underneathItem = Instantiate(underneath, scenario_file_iamg);//把克隆对象生成预设体,用相应对象去接收
underneathItem.SetValue(ti.subjectsInfo[index].subjectName, (() =>//传对应的值给文本
{
OnUnderNeathSetBtn(ti.subjectsInfo[index].subjectName, ti.subjectsInfo[index].SubTime.ToString(), ti.subjectsInfo[index].mode, ti.subjectsInfo[index].seatInfos.Count.ToString());
}));
underneathList.Add(underneathItem);//把生成对象加入链表中
}
}
public void OnUnderNeathSetBtn(string _name, string _time, string _trainModel, string deviceCount)//接收需要传的对应值
{
xunkian_txt.text = _name;
time_txt.text = _time;
mode_text.text = _trainModel;
post_txt.text = deviceCount;
basic_information_iamg1.gameObject.SetActive(true);
}
public IEnumerator Post1(string url, System.Action<bool, string> action)
{
WWWForm form = new WWWForm();//网络通信
UnityWebRequest request = UnityWebRequest.Post(url, form);
yield return request.SendWebRequest();
if (request.isNetworkError || request.isHttpError)
{
action(false, null);
Debug.Log("网络请求失败了");
}
else
{
if (!string.IsNullOrEmpty(request.downloadHandler.text))
{
action(true, request.downloadHandler.text);
}
else
{
action(false, null);
}
}
}
/// <summary>
/// 模型页面的相互跳转
/// </summary>
///
private void Moxingxuanze()
{
quan_btn.onClick.AddListener(() =>
{
moxin_yemian.gameObject.gameObject.SetActive(true);
moyin_yemian1.gameObject.gameObject.SetActive(false);
moyin_yemian2.gameObject.gameObject.SetActive(false);
moyin_yemian3.gameObject.gameObject.SetActive(false);
moyin_yemian4.gameObject.gameObject.SetActive(false);
});
can_btn.onClick.AddListener(() =>
{
moxin_yemian.gameObject.gameObject.SetActive(false);
moyin_yemian1.gameObject.gameObject.SetActive(true);
moyin_yemian2.gameObject.gameObject.SetActive(false);
moyin_yemian3.gameObject.gameObject.SetActive(false);
moyin_yemian4.gameObject.gameObject.SetActive(false);
});
lu_btn.onClick.AddListener(() =>
{
moxin_yemian.gameObject.gameObject.SetActive(false);
moyin_yemian1.gameObject.gameObject.SetActive(false);
moyin_yemian2.gameObject.gameObject.SetActive(true);
moyin_yemian3.gameObject.gameObject.SetActive(false);
moyin_yemian4.gameObject.gameObject.SetActive(false);
});
kong_btn.onClick.AddListener(() =>
{
moxin_yemian.gameObject.gameObject.SetActive(false);
moyin_yemian1.gameObject.gameObject.SetActive(false);
moyin_yemian2.gameObject.gameObject.SetActive(false);
moyin_yemian3.gameObject.gameObject.SetActive(true);
moyin_yemian4.gameObject.gameObject.SetActive(false);
});
qita_btn.onClick.AddListener(() =>
{
moxin_yemian.gameObject.gameObject.SetActive(false);
moyin_yemian1.gameObject.gameObject.SetActive(false);
moyin_yemian2.gameObject.gameObject.SetActive(false);
moyin_yemian3.gameObject.gameObject.SetActive(false);
moyin_yemian4.gameObject.gameObject.SetActive(true);
});
}
/// <summary>
/// 模型数据库界面
/// </summary>
private void Moxing()
{
model_list_btn.onClick.AddListener(() =>
{
if (model == true)
{
environment_configuration1.gameObject.SetActive(false);
object_list_panl.gameObject.SetActive(false);
basic_information_iamg.gameObject.SetActive(false);
model_panl.gameObject.SetActive(true);
select_device_iamg.gameObject.SetActive(true);
model = false;
}
else
{
model_panl.gameObject.SetActive(false);
select_device_iamg.gameObject.SetActive(false);
model = true;
}
});
}
/// <summary>
/// 环境界面确认取消按钮
/// </summary>
public string tmie;
private void Huanjin()
{
huanjin_btn.onClick.AddListener(() =>
{
if (year_text.text.Length>=1)
{
tmie = year_text.text + " " + month_text.text + " " + day_text.text + " " + when_text.text;
PlayerPrefs.GetString("time", "" + tmie + "");
PlayerPrefs.GetString("RainAmt", "" + tenkokuModule.weather_RainAmt + "");
PlayerPrefs.GetString("SnowAmt", "" + tenkokuModule.weather_SnowAmt + "");
PlayerPrefs.GetString("WindAmt", "" + tenkokuModule.weather_WindAmt + "");
PlayerPrefs.GetString("WindDir", "" + tenkokuModule.weather_WindDir + "");
PlayerPrefs.GetString("OvercastAmt", "" + tenkokuModule.weather_OvercastAmt + "");
Debug.Log(tmie);//日期时间
Debug.Log(tenkokuModule.weather_RainAmt);//雨的大小
Debug.Log(tenkokuModule.weather_SnowAmt);//雪的大小
Debug.Log(tenkokuModule.weather_WindAmt);//风速的大小
Debug.Log(tenkokuModule.weather_WindDir.ToString("0"));//风向
Debug.Log(tenkokuModule.weather_OvercastAmt.ToString("f2"));//白天黑夜
StartCoroutine(Post());
environment_configuration1.gameObject.SetActive(false);
}
else
{
tips_text.text = "请输入日期";
Invoke("Tips", 1.5f);
}
});
huanjin_btn1.onClick.AddListener(() =>
{
environment_configuration1.gameObject.SetActive(false);
});
}
IEnumerator Post()
{
Environment warther = new Environment();
warther.Time = tmie;
warther.Rain = tenkokuModule.weather_RainAmt.ToString();
warther.Snow = tenkokuModule.weather_SnowAmt.ToString();
warther.WindSpeed =tenkokuModule.weather_WindAmt.ToString();
warther.WindDir = tenkokuModule.weather_WindDir.ToString("0");
warther.Light =tenkokuModule.weather_OvercastAmt.ToString("f2");
// environments.Add(warther);
string json = JsonUtility.ToJson(warther);
WWWForm w =new WWWForm();
w.AddField("http://172.16.1.254:48888/Handler/Thinkingfile.ashx?action=update_env&Id=1698025363002&data=",json);
yield return w;
}
public void Tips()
{
tips_text.text = null;
}
/// <summary>
/// 基本信息确定取消按钮
/// </summary>
private void Jiben()
{
verify_bton1.onClick.AddListener(() =>
{
basic_information_iamg.gameObject.SetActive(false);
});
cancel_bton1.onClick.AddListener(() =>
{
basic_information_iamg.gameObject.SetActive(false);
});
}
/// <summary>
/// 环境按钮激活失活
/// </summary>
private void Environment1()
{
environment_setting_btn.onClick.AddListener(() =>
{
environment_configuration1.gameObject.SetActive(true);
basic_information_iamg.gameObject.SetActive(false);
select_device_iamg.gameObject.SetActive(false);
});
fork_off_btn.onClick.AddListener(() =>
{
environment_configuration1.gameObject.SetActive(false);
});
}
/// <summary>
/// 基本信息页面激活失活
/// </summary>
private void Basic()
{
basic_info_btn.onClick.AddListener(() =>
{
basic_information_iamg.gameObject.SetActive(true);
environment_configuration1.gameObject.SetActive(false);
select_device_iamg.gameObject.SetActive(false);
});
off4_btn.onClick.AddListener(() =>
{
basic_information_iamg.gameObject.SetActive(false);
});
}
/// <summary>
/// 想定文件地下页面失活激活
/// </summary>
private void Scenario()
{
scenario_file_btn.onClick.AddListener(() =>
{
if (scenario == true)
{
ScrollView_unpack.gameObject.SetActive(true);
//scenario = false;
}
//else
//{
// ScrollView_unpack.gameObject.SetActive(false);
// Scenariofile_panl.gameObject.SetActive(false);
// scenario = true;
//}
});
}
public string whater;
public void SetRainValue(float value)
{
tenkokuModule.weather_RainAmt = Mathf.Lerp(0.0f, 1.0f, value);
whater = tenkokuModule.weather_RainAmt.ToString();
Debug.Log(whater);
}
public void SetSnowValue(float value)
{
tenkokuModule.weather_SnowAmt = Mathf.Lerp(0.0f, 1.0f, value);
}
public void SetWindValue()
{
//tenkokuModule.weather_WindAmt = Mathf.Lerp(0.0f, 1.0f, value);
//tenkokuModule.weather_OvercastAmt = windDrop.value * 0.1f;
float tempEintAmt = 0;
switch (windDrop.value)
{
case 1:
tempEintAmt = 0.1f;
break;
case 2:
tempEintAmt = 0.2f;
break;
case 3:
tempEintAmt = 0.3f;
break;
case 4:
tempEintAmt = 0.4f;
break;
case 5:
tempEintAmt = 0.5f;
break;
case 6:
tempEintAmt = 0.6f;
break;
case 7:
tempEintAmt = 0.7f;
break;
case 8:
tempEintAmt = 0.8f;
break;
case 9:
tempEintAmt = 0.9f;
break ;
case 10:
tempEintAmt = 1.0f;
break;
}
tenkokuModule.weather_WindAmt = Mathf.Lerp(0.1f, 1.0f, tempEintAmt);
}
public void SetWindDirection()
{
float tempWindDir = 0;
switch (windDir.value)
{
case 1:
tempWindDir = 0.125f;
break;
case 2:
tempWindDir = 0.25f;
break;
case 3:
tempWindDir = 0.375f;
break;
case 4:
tempWindDir = 0.5f;
break;
case 5:
tempWindDir = 0.625f;
break;
case 6:
tempWindDir = 0.75f;
break;
case 7:
tempWindDir = 0.875f;
break;
case 8:
tempWindDir = 1f;
break;
}
tenkokuModule.weather_WindDir = Mathf.Lerp(0.0f, 365.0f, tempWindDir);
}
//public void SetLightValue(float value)
//{
// float valueTemp = 1 - value;
// tenkokuModule.weather_OvercastAmt = Mathf.Lerp(0.0f, 1.0f, valueTemp);
// Debug.Log(tenkokuModule.weather_OvercastAmt);
//}
}