123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine;
- using UnityEngine.UI;
- public class WorkerController : MonoBehaviour
- {
- List<Structure> structures = new List<Structure>();
- public GameObject WorkersList;
- // Start is called before the first frame update
- void Start()
- {
- System.Random rnd = new System.Random();
- for (int i = 0; i < 240; i++)
- {
- var ts = new DateTime(2020, 03, 26, 10,Convert.ToInt32(i/60), i%60);
-
- //else ts = new DateTime(2020, 03, 26, 10, 17, i - 60);
- structures.Add(new Structure
- {
- id = structures.Count + 1,
- coord_x = rnd.Next(0, 13),
- coord_y = rnd.Next(0, 10),
- ts = ts,
- acc_id = 356,
- location_id = 22,
- zone_id = 2
- });
- structures.Add(new Structure
- {
- id = structures.Count + 1,
- coord_x = rnd.Next(0, 13),
- coord_y = rnd.Next(0, 10),
- ts = ts,
- acc_id = 341,
- location_id = 22,
- zone_id = 2
- });
- }
- foreach(var s in structures.Select(s => s.acc_id).Distinct())
- WorkerMarker(s);
- }
- // Update is called once per frame
- void Update()
- {
- foreach (var m in markers)
- m.marker.SetActive(m.toggle.isOn);
- }
- List<Marker> markers = new List<Marker>();
- class Marker
- {
- public Toggle toggle { get; set; }
- public GameObject marker { get; set; }
- public int acc_id { get; set; }
- }
- /// <summary>
- /// Создание маркера для сотрудника
- /// </summary>
- /// <param name="acc_id"></param>
- void WorkerMarker(int acc_id)
- {
- var worker_toggle = Instantiate(Resources.Load("GameObjects/Toggle", typeof(Toggle))) as Toggle;
- worker_toggle.name = acc_id.ToString();
- worker_toggle.transform.GetChild(1).gameObject.GetComponent<Text>().text = acc_id.ToString();
- worker_toggle.transform.SetParent(WorkersList.transform);
- var worker_marker = Instantiate(Resources.Load("GameObjects/Capsule", typeof(GameObject))) as GameObject;
- worker_marker.name = "marker_" + acc_id.ToString();
- worker_marker.GetComponent<Renderer>().material.color = UnityEngine.Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);
- markers.Add(new Marker { acc_id = acc_id, marker = worker_marker, toggle = worker_toggle });
- }
- /// <summary>
- /// Смена положения маркера
- /// </summary>
- /// <param name="index"></param>
- /// <param name="worker"></param>
- /// <param name="worker_marker"></param>
- /// <returns></returns>
- static IEnumerator MarkerPostion(float pause, Vector3 pos, GameObject worker_marker)
- {
- yield return new WaitForSeconds(pause);
- Debug.Log(pause);
- worker_marker.transform.position = pos;
- }
- /// <summary>
- /// Запуск отрисовки
- /// Остановить нельзя
- /// </summary>
- public void ButtonStart()
- {
- foreach (var m in markers)
- {
- if (m.toggle.isOn)
- {
- var worker = structures.Where(w => w.acc_id == m.acc_id).ToList();
- for (int i = 0; i < worker.Count; i++)
- {
- var w = worker.ElementAt(i);
- var z0 = m.marker.transform.position;
- var z1 = new Vector3(w.coord_x, 0.5f, w.coord_y);
- // var x = z1.x - z0.x;
- // var y = z1.y - z0.y;
- //var z = Mathf.Sqrt(x * x + y * y);
- //for (float x = z0.x; i < z1.x; x++)
- // var pos = new Vector3(w.coord_x + z, 0.5f, w.coord_y + z);
- // StartCoroutine(MarkerPostion(i - z, pos, m.marker));
- }
- }
- }
- }
- }
-
- }
|