NewN_UAVPlane/Assets/Zion/Scripts/UI/CreateRoomPanel.cs

317 lines
10 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DataModel.Model;
using System.Linq;
using LitJson;
using System;
public class CreateRoomPanel : MonoBehaviour
{
/// <summary>
/// 创建名称界面
/// </summary>
public Transform CreateNameP;
/// <summary>
/// 选择想定界面
/// </summary>
public Transform ChoseThinkingP;
/// <summary>
/// 绑定岗位界面
/// </summary>
public Transform BindSeatP;
public InputField inputName;
public Toggle xunlianTog;
public Toggle kaoheTog;
public Button quxiaoBtn1;
public Button nextBtn1;
public VerticalLayoutGroup group2;
public Button frontBtn2;
public Button nextBtn2;
public Button frontBtn3;
public Button nextBtn3;
public VerticalLayoutGroup group3seat;
public Text thinkingName;
public Text thinkingMode;
public VerticalLayoutGroup group2_2;
public Button closeBtn2;
public Button closeBtn3;
/// <summary>
/// 房间名称
/// </summary>
string PracticeName;
/// <summary>
/// 考核训练
/// </summary>
string MissionModel;
/// <summary>
/// 选中的想定
/// </summary>
[HideInInspector]
public thinkingfile choseThinkingfile;
/// <summary>
/// 岗位绑定的人员
/// </summary>
List<SeatBindUserData> seatBindUser=new List<SeatBindUserData>();
[HideInInspector]
public GameObject thinkingItemPrefb;
[HideInInspector]
public GameObject subjectItemPrefb;
[HideInInspector]
public GameObject subjectItemPrefb;
[HideInInspector]
public GameObject seatItemPrefb;
[HideInInspector]
public GameObject seat2Prefb;
[HideInInspector]
public GameObject choseUserPrefb;
public static CreateRoomPanel instance;
private void Awake()
{
instance = this;
if (thinkingItemPrefb==null)
{
thinkingItemPrefb = Resources.Load<GameObject>("UI/Item/选择想定/CreateRoomThinkingItem");
}
if(subjectItemPrefb==null)
{
subjectItemPrefb= Resources.Load<GameObject>("UI/Item/选择想定/CreateRoomSubjectItem");
}
if(subjectItemPrefb == null)
{
subjectItemPrefb = Resources.Load<GameObject>("UI/Item/席位分配/subject");
}
if (seatItemPrefb == null)
{
seatItemPrefb = Resources.Load<GameObject>("UI/Item/席位分配/seat");
}
if(seat2Prefb==null)
{
seat2Prefb= Resources.Load<GameObject>("UI/Item/席位分配/seatitem");
}
if (choseUserPrefb==null)
{
choseUserPrefb = Resources.Load<GameObject>("UI/ChoseUserPanel");
}
quxiaoBtn1.onClick.AddListener(()=>
{
Destroy(gameObject);
});
closeBtn2.onClick.AddListener(() =>
{
Destroy(gameObject);
});
closeBtn3.onClick.AddListener(() =>
{
Destroy(gameObject);
});
//名字界面下一步按钮
nextBtn1.onClick.AddListener(() =>
{
if(!string.IsNullOrEmpty(inputName.text))
{
PracticeName = inputName.text;
MissionModel = xunlianTog.isOn ? "训练" : "考核";
CreateNameP.gameObject.SetActive(false);
ChoseThinkingP.gameObject.SetActive(true);
BindSeatP.gameObject.SetActive(false);
UpdataThinking();
}
});
//选择想定界面下一步按钮
nextBtn2.onClick.AddListener(() =>
{
if(choseThinkingfile!=null)
{
CreateNameP.gameObject.SetActive(false);
ChoseThinkingP.gameObject.SetActive(false);
BindSeatP.gameObject.SetActive(true);
//初始化席位分配界面
InitSeatPanel();
}
});
//选择想定界面上一步按钮
frontBtn2.onClick.AddListener(() =>
{
choseThinkingfile = null;
CreateNameP.gameObject.SetActive(true);
ChoseThinkingP.gameObject.SetActive(false);
BindSeatP.gameObject.SetActive(false);
});
//绑定人员界面确定按钮
nextBtn3.onClick.AddListener(() =>
{
List<SeatBindUserData> tmps = new List<SeatBindUserData>();
group3seat.transform.GetComponentsInChildren<CreateRoomSeatItem>(true).ToList().ForEach(a=>
{
if(a.useraccount.text!="999")
{
tmps.Add(new SeatBindUserData { seatId = a.seat1.seatId, subjectId = a.seat1.subjectId, username = a.username.text, useraccount = a.useraccount.text });
}
});
seatBindUser=tmps;
Create();
});
//绑定人员界面上一步按钮
frontBtn3.onClick.AddListener(() =>
{
CreateNameP.gameObject.SetActive(false);
ChoseThinkingP.gameObject.SetActive(true);
BindSeatP.gameObject.SetActive(false);
group3seat.transform.GetComponentsInChildren<SeatBindSubjectItem>().ToList().ForEach(a =>
{
DestroyImmediate(a.gameObject);
});
group3seat.transform.GetComponentsInChildren<SeatBindSeatItem>().ToList().ForEach(a =>
{
DestroyImmediate(a.gameObject);
});
});
}
/// <summary>
/// 更新想定文件
/// </summary>
private void UpdataThinking()
{
group2.transform.GetComponentsInChildren<CreateRoomThinkingItem>(true).ToList().ForEach(a=>
{
DestroyImmediate(a.gameObject);
});
StartCoroutine(MyNetMQClient.CallGet("http://"+MyNetMQClient.CallIP+"/Handler/Thinkingfile.ashx?action=all", result =>
{
var json = JsonMapper.ToObject<CallResultList<thinkingfile>>(result);
var jsondata = JsonMapper.ToObject(result)["data"];
if (json.state)
{
jsondata.ValueAsArray().ToList().ForEach(a =>
{
json.data.Find(b => b.Id == a["Id"].ToString()).CreateTime =DateTime.Parse(a["CreateTime"].ToString());
});
var thinkingfiles = json.data.OrderByDescending(a=>a.CreateTime).ToList();
int index = 0;
CreateRoomThinkingItem first=null;
thinkingfiles.ForEach(a =>
{
GameObject obj = Instantiate<GameObject>(thinkingItemPrefb, group2.transform);
obj.GetComponent<CreateRoomThinkingItem>().Init(a);
if(index==0)
{
//第一个
first = obj.GetComponent<CreateRoomThinkingItem>();
}
index++;
});
if (first != null)
{
first.Chose();
}
}
else
{
string msg = json.message;
Debug.LogError(msg);
}
}));
}
/// <summary>
/// 创建房间数据
/// </summary>
public void Create()
{
if(choseThinkingfile!=null && !string.IsNullOrEmpty(MissionModel))
{
KeyValuePair<string, string>[] datas = new KeyValuePair<string, string>[3];
datas[0] = new KeyValuePair<string, string>("thinkingfile_id",choseThinkingfile.Id);
datas[1] = new KeyValuePair<string, string>("SeatBindUserData",JsonMapper.ToJson(seatBindUser));
datas[2] = new KeyValuePair<string, string>("data", JsonMapper.ToJson(new practice { Name= PracticeName, MissionModel= MissionModel }));
StartCoroutine(MyNetMQClient.CallPost("http://"+MyNetMQClient.CallIP+"/Handler/Practice.ashx?action=add",datas, result =>
{
var json = JsonMapper.ToObject<CallResultObject>(result);
if (json.state)
{
string str =json.data.ToString();
//创建成功
Debug.Log("创建房间成功:" + PracticeName);
MessagePanel.ShowMessage("创建房间成功", RoomListPanel.instance.canvas.transform);
//房间列表刷新
RoomListPanel.instance.Refresh();
Destroy(gameObject);
}
else
{
string msg = json.message;
Debug.LogError(msg);
MessagePanel.ShowMessage(msg, RoomListPanel.instance.canvas.transform);
}
}));
}
}
/// <summary>
/// 初始化席位分配页面
/// </summary>
private void InitSeatPanel()
{
ThinkingData data =JsonMapper.ToObject<ThinkingData>(choseThinkingfile.VirtualPath);
data.subjectsInfo.ForEach(a =>
{
//创建科目
GameObject obj = Instantiate<GameObject>(subjectItemPrefb, group3seat.transform);
SeatBindSubjectItem subjectScript = obj.GetComponent<SeatBindSubjectItem>();
subjectScript.Init(a);
//创建席位容器框
GameObject obj2 = Instantiate<GameObject>(seatItemPrefb, group3seat.transform);
a.seatInfos.ForEach(b =>
{
//创建席位
GameObject obj3 = Instantiate<GameObject>(seat2Prefb, obj2.transform);
CreateRoomSeatItem createRoomSeatItem = obj3.GetComponent<CreateRoomSeatItem>();
createRoomSeatItem.Init(b, subjectScript);
});
});
}
}
public class SeatBindUserData
{
public string subjectId;
public string seatId;
public string username;
public string useraccount;
}