Bez popisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

handTest.cs 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using TMPro;
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. public class handTest : MonoBehaviour
  9. {
  10. [SerializeField] TMP_InputField 臉盆深度_tb,臉盆寬度_tb,扶手臉盆間距_tb,牆體臉盆間距_tb,階梯階數_tb;
  11. [SerializeField] TMP_InputField[] 高;
  12. [SerializeField] TMP_InputField[] 深;
  13. [SerializeField] TextMeshProUGUI 扶手深度左_tb,扶手深度右_tb,扶手寬度_tb,總長度_tb,扶手深度左_lb,扶手深度右_lb,扶手單位左_lb,扶手單位右_lb,總深_tb,總高_tb;
  14. [SerializeField] Toggle 左側_ch,右側_ch,雙側_ch,單腳_ch,雙腳_ch;
  15. [SerializeField] GameObject 雙側雙腳_pic,左側雙腳_pic,右側雙腳_pic,左側單腳_pic,右側單腳_pic,扶手試算_pl,斜坡板試算_pl,扶手試算_bt,斜坡板試算_bt;
  16. bool 已開啟 = false;
  17. public CanvasScaler canvasScaler;
  18. private bool isUpdating = false;
  19. float screenWidth,screenHeight;
  20. // Start is called before the first frame update
  21. void Awake(){
  22. 重製TB();
  23. 左側_ch.onValueChanged.AddListener(左側_Click);右側_ch.onValueChanged.AddListener(右側_Click);雙側_ch.onValueChanged.AddListener(雙側_Click);
  24. 單腳_ch.onValueChanged.AddListener(單腳_Click);雙腳_ch.onValueChanged.AddListener(雙腳_Click);
  25. 臉盆深度_tb.onValueChanged.AddListener(臉盆_textchange);
  26. 臉盆寬度_tb.onValueChanged.AddListener(臉盆_textchange);
  27. 扶手臉盆間距_tb.onValueChanged.AddListener(臉盆_textchange);
  28. 牆體臉盆間距_tb.onValueChanged.AddListener(臉盆_textchange);
  29. 階梯階數_tb.onValueChanged.AddListener(階梯階數_textChange);
  30. for (int i = 0; i < 高.Length; i++){
  31. int index = i;
  32. 高[index].onValueChanged.AddListener(delegate { 總高(); });
  33. }
  34. for (int i = 0; i < 深.Length; i++){
  35. int index = i;
  36. 深[index].onValueChanged.AddListener(delegate { 總高(); });
  37. }
  38. }
  39. void Start(){
  40. Screen.autorotateToPortrait = false;
  41. Screen.orientation = ScreenOrientation.Portrait;
  42. screenWidth = Screen.width;
  43. screenHeight = Screen.height;
  44. float rate = 900.0f / 1900.0f;
  45. if (canvasScaler == null)
  46. {
  47. canvasScaler = GetComponent<CanvasScaler>();
  48. }
  49. if (Screen.width<Screen.height)
  50. {
  51. Main.Global.rate = screenWidth/screenHeight;
  52. Main.Global.rate_ = 1/Main.Global.rate;
  53. if (Main.Global.rate>rate)
  54. {
  55. canvasScaler.matchWidthOrHeight = 1f;
  56. }
  57. else
  58. {
  59. canvasScaler.matchWidthOrHeight = 0f;
  60. }
  61. }
  62. else
  63. {
  64. Main.Global.rate_ = screenWidth/screenHeight;
  65. Main.Global.rate = 1/Main.Global.rate_;
  66. if (Main.Global.rate>rate)
  67. {
  68. canvasScaler.matchWidthOrHeight = 1f;
  69. }
  70. else
  71. {
  72. canvasScaler.matchWidthOrHeight = 0f;
  73. }
  74. }
  75. 左側_ch.isOn=false;右側_ch.isOn=false;單腳_ch.isOn=false;雙腳_ch.isOn=true;雙側_ch.isOn=true;單腳_ch.interactable=false;雙腳_ch.interactable=false;
  76. 雙側雙腳_pic.SetActive(true);左側雙腳_pic.SetActive(false);右側雙腳_pic.SetActive(false);左側單腳_pic.SetActive(false);右側單腳_pic.SetActive(false);
  77. 牆體臉盆間距_tb.enabled=false;
  78. 臉盆深度_tb.text="";臉盆寬度_tb.text="";扶手臉盆間距_tb.text="";牆體臉盆間距_tb.text="";
  79. 扶手深度左_tb.text="";扶手深度右_tb.text="";扶手寬度_tb.text="";總長度_tb.text="";
  80. 已開啟=true;
  81. }
  82. void OnDestroy(){
  83. 左側_ch.onValueChanged.RemoveListener(左側_Click);右側_ch.onValueChanged.RemoveListener(右側_Click);雙側_ch.onValueChanged.RemoveListener(雙側_Click);
  84. 單腳_ch.onValueChanged.RemoveListener(單腳_Click);雙腳_ch.onValueChanged.RemoveListener(雙腳_Click);
  85. 臉盆深度_tb.onValueChanged.RemoveListener(臉盆_textchange);
  86. 臉盆寬度_tb.onValueChanged.RemoveListener(臉盆_textchange);
  87. 扶手臉盆間距_tb.onValueChanged.RemoveListener(臉盆_textchange);
  88. 牆體臉盆間距_tb.onValueChanged.RemoveListener(臉盆_textchange);
  89. 階梯階數_tb.onValueChanged.RemoveListener(階梯階數_textChange);
  90. }
  91. void 階梯階數_textChange(string text) {
  92. if (isUpdating) return;
  93. if (!string.IsNullOrEmpty(text) && int.TryParse(text, out int value)) {
  94. if (value > 10) {
  95. isUpdating = true;
  96. 階梯階數_tb.text = "10";
  97. isUpdating = false;
  98. }
  99. }
  100. 重製TB();
  101. }
  102. void 總高(){
  103. float 總和 = 0f;
  104. for (int i = 0; i < 深.Length; i++){
  105. if (!string.IsNullOrEmpty(深[i].text) && float.TryParse(深[i].text, out float val)){
  106. 總和 += val;
  107. }
  108. }
  109. float 總和2 = 0f;
  110. for (int i = 0; i < 高.Length; i++){
  111. if (!string.IsNullOrEmpty(高[i].text) && float.TryParse(高[i].text, out float val)){
  112. 總和2 += val;
  113. }
  114. }
  115. 總深_tb.text = 總和.ToString();
  116. 總高_tb.text = 總和2.ToString();
  117. }
  118. public void 系統設定_bt(){
  119. Main.change_Secen(2);
  120. }
  121. void 臉盆_textchange(string newText){
  122. if(已開啟){面扶計算();}
  123. }
  124. public void 扶手試算_bt_click(){
  125. if (斜坡板試算_pl.activeInHierarchy){
  126. 斜坡板試算_pl.SetActive(false);
  127. }
  128. 扶手試算_pl.SetActive(true);
  129. 扶手試算_bt.SetActive(false);
  130. 斜坡板試算_bt.SetActive(true);
  131. }
  132. public void 斜坡板試算_bt_click(){
  133. if (扶手試算_pl.activeInHierarchy){
  134. 扶手試算_pl.SetActive(false);
  135. }
  136. 斜坡板試算_pl.SetActive(true);
  137. 扶手試算_bt.SetActive(true);
  138. 斜坡板試算_bt.SetActive(false);
  139. }
  140. public void 左側_Click(bool isOn)
  141. {
  142. if (isOn)
  143. {
  144. 左側_ch.interactable = false; 右側_ch.interactable = true; 雙側_ch.interactable = true; 單腳_ch.interactable = true; 雙腳_ch.interactable = true;
  145. 右側_ch.isOn = false; 雙側_ch.isOn = false; 圖片判斷();
  146. 牆體臉盆間距_tb.enabled=true;
  147. 扶手深度左_tb.transform.parent.parent.gameObject.SetActive(true);
  148. 扶手深度右_tb.transform.parent.parent.gameObject.SetActive(false);
  149. 扶手深度左_lb.gameObject.SetActive(true); 扶手深度右_lb.gameObject.SetActive(false);
  150. 扶手單位左_lb.gameObject.SetActive(true); 扶手單位右_lb.gameObject.SetActive(false);
  151. if (已開啟) { 面扶計算(); }
  152. }
  153. }
  154. public void 右側_Click(bool isOn){
  155. if(isOn){
  156. 左側_ch.interactable=true;右側_ch.interactable=false;雙側_ch.interactable=true;單腳_ch.interactable=true;雙腳_ch.interactable=true;
  157. 左側_ch.isOn=false;雙側_ch.isOn=false;圖片判斷();
  158. 牆體臉盆間距_tb.enabled=true;
  159. 扶手深度左_tb.transform.parent.parent.gameObject.SetActive(false);
  160. 扶手深度右_tb.transform.parent.parent.gameObject.SetActive(true);
  161. 扶手深度左_lb.gameObject.SetActive(false);扶手深度右_lb.gameObject.SetActive(true);
  162. 扶手單位左_lb.gameObject.SetActive(false);扶手單位右_lb.gameObject.SetActive(true);
  163. if(已開啟){面扶計算();}
  164. }
  165. }
  166. public void 雙側_Click(bool isOn){
  167. if(isOn){
  168. 左側_ch.interactable=true;右側_ch.interactable=true;雙側_ch.interactable=false;單腳_ch.interactable=false;雙腳_ch.interactable=false;
  169. 左側_ch.isOn=false;右側_ch.isOn=false;單腳_ch.isOn=false;雙腳_ch.isOn=true;圖片判斷();
  170. 牆體臉盆間距_tb.enabled=false;
  171. 扶手深度左_tb.transform.parent.parent.gameObject.SetActive(true);
  172. 扶手深度右_tb.transform.parent.parent.gameObject.SetActive(true);
  173. 扶手深度左_lb.gameObject.SetActive(true);扶手深度右_lb.gameObject.SetActive(true);
  174. 扶手單位左_lb.gameObject.SetActive(true);扶手單位右_lb.gameObject.SetActive(true);
  175. if(已開啟){面扶計算();}
  176. }
  177. }
  178. public void 單腳_Click(bool isOn){
  179. if(isOn){
  180. 單腳_ch.interactable=false;雙腳_ch.interactable=true;
  181. 雙腳_ch.isOn=false;圖片判斷();
  182. if(已開啟){面扶計算();}
  183. }
  184. }
  185. public void 雙腳_Click(bool isOn){
  186. if(isOn){
  187. 單腳_ch.interactable=true;雙腳_ch.interactable=false;
  188. 單腳_ch.isOn=false;圖片判斷();
  189. if(已開啟){面扶計算();}
  190. }
  191. }
  192. private void 圖片判斷(){
  193. 雙側雙腳_pic.SetActive(false);左側雙腳_pic.SetActive(false);右側雙腳_pic.SetActive(false);左側單腳_pic.SetActive(false);右側單腳_pic.SetActive(false);
  194. if(左側_ch.isOn && 單腳_ch.isOn && 雙腳_ch.isOn==false){
  195. 左側單腳_pic.SetActive(true);
  196. }else if(左側_ch.isOn && 雙腳_ch.isOn && 單腳_ch.isOn==false){
  197. 左側雙腳_pic.SetActive(true);
  198. }else if(右側_ch.isOn && 單腳_ch.isOn && 雙腳_ch.isOn==false){
  199. 右側單腳_pic.SetActive(true);
  200. }else if(右側_ch.isOn && 雙腳_ch.isOn && 單腳_ch.isOn==false){
  201. 右側雙腳_pic.SetActive(true);
  202. }else{
  203. 雙側雙腳_pic.SetActive(true);
  204. }
  205. }
  206. private void 面扶計算(){
  207. double 總長度, 左側深度, 右側深度, 扶手寬度;
  208. double 臉盆深度=0,扶手臉盆間距=0,臉盆寬度=0,牆體臉盆間距=0;
  209. if(臉盆深度_tb.text != ""){臉盆深度=double.Parse(臉盆深度_tb.text);}
  210. if(扶手臉盆間距_tb.text != ""){扶手臉盆間距=double.Parse(扶手臉盆間距_tb.text);}
  211. if(臉盆寬度_tb.text != ""){臉盆寬度=double.Parse(臉盆寬度_tb.text);}
  212. if(牆體臉盆間距_tb.text != ""){牆體臉盆間距=double.Parse(牆體臉盆間距_tb.text);}
  213. if(雙側_ch.isOn){
  214. if(臉盆深度_tb.text != ""){
  215. 左側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0);
  216. 右側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0);
  217. }else{
  218. 左側深度=0;右側深度=0;
  219. }
  220. if(臉盆寬度_tb.text != ""){
  221. 扶手寬度 = Math.Round(臉盆寬度, 0) + 4 + Math.Round(扶手臉盆間距, 0)*2;
  222. }else{
  223. 扶手寬度=0;
  224. }
  225. }else if(右側_ch.isOn){
  226. if(臉盆深度_tb.text != ""){
  227. 左側深度=0;右側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0);
  228. }else{
  229. 左側深度=0;右側深度=0;
  230. }
  231. if(臉盆寬度_tb.text != ""){
  232. if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text != ""){
  233. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0) + Math.Round(牆體臉盆間距, 0);
  234. }else if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text == ""){
  235. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0);
  236. }else if(扶手臉盆間距_tb.text == "" && 牆體臉盆間距_tb.text != ""){
  237. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(牆體臉盆間距, 0);
  238. }else{
  239. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2;
  240. }
  241. }else{
  242. 扶手寬度=0;
  243. }
  244. }else{
  245. if(臉盆深度_tb.text != ""){
  246. 左側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0);右側深度=0;
  247. }else{
  248. 左側深度=0;右側深度=0;
  249. }
  250. if(臉盆寬度_tb.text != ""){
  251. if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text != ""){
  252. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0) + Math.Round(牆體臉盆間距, 0);
  253. }else if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text == ""){
  254. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0);
  255. }else if(扶手臉盆間距_tb.text == "" && 牆體臉盆間距_tb.text != ""){
  256. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(牆體臉盆間距, 0);
  257. }else{
  258. 扶手寬度 = Math.Round(臉盆寬度, 0) + 2;
  259. }
  260. }else{
  261. 扶手寬度=0;
  262. }
  263. }
  264. 扶手深度左_tb.text = 左側深度.ToString();扶手深度右_tb.text = 右側深度.ToString();扶手寬度_tb.text = 扶手寬度.ToString();
  265. 總長度 = 左側深度 + 右側深度 + 扶手寬度;總長度_tb.text = 總長度.ToString();
  266. }
  267. private void 重製TB(){
  268. for(int i=0;i<=高.Length-1;i++){
  269. 高[i].text="";
  270. 深[i].text="";
  271. }
  272. }
  273. }