public void onClick() { if (GameData.checking) { return; } onDrag = !onDrag; GameData.draging = onDrag; GameData.timeout = !onDrag; if (onDrag) { pos = transform.position; } else { transform.position = pos; GameData.TimerCancel(); } if (GameData.timeout) { GameData.ResetAtk(); if (CheckStone.CountStone()) { CheckStone.FillStone(); GameData.checking = true; } else { // Make enemy attack GameData.ex_team_hp -= GameData.st_enemy.GetComponent <EnemyData>().Attack(); if (GameData.ex_team_hp <= 0) { GameData.ex_team_hp = 0; GameControl.GameOver(false); for (int i = 0; i < 30; ++i) { GameData.turning_stone[i].SetActive(false); } } } } }
// Use this for initialization void Start() { draging = false; timeout = false; timer_f = 0f; timer_i = 0; // Connect stone_img[] and turning_img[] for (int i = 0; i < 6; ++i) { turning_img[i] = stone_img[i]; } // Connect stone[] and turning_stone[] for (int i = 0; i < 30; ++i) { int s = Random.Range(0, 6); turning_stone[i] = stone[i]; turning_stone[i].GetComponent <Image>().sprite = stone_img[s]; type[i / 6, i % 6] = s; } // Avoid continuous arrangement at beginning while (CheckStone.CountStone()) { CheckStone.FillStone(); } // Set team member team_hp = 0; for (int i = 0; i < 6; ++i) { member_type[i] = member[i].GetComponent <TeamData>().type; team_mem[i] = member[i]; team_hp += team_mem[i].GetComponent <TeamData>().hp; } ex_team_hp = (float)team_hp; // Set enemy st_enemy = enemy; }
// Update is called once per frame void Update() { if (timer_i > 10) { TimerCancel(); draging = false; timeout = true; ResetAtk(); if (CheckStone.CountStone()) { CheckStone.FillStone(); checking = true; } else { // Make enemy attack ex_team_hp -= st_enemy.GetComponent <EnemyData>().Attack(); if (ex_team_hp <= 0) { ex_team_hp = 0; GameControl.GameOver(false); for (int i = 0; i < 30; ++i) { turning_stone[i].SetActive(false); } } } } if (draging) { timer_f += Time.deltaTime; timer_i = (int)timer_f; } if (checking) { timer_f += Time.deltaTime; if (timer_i != (int)timer_f) { timer_i = (int)timer_f; if (CheckStone.CountStone()) { CheckStone.FillStone(); } else { TimerCancel(); checking = false; // Recover HP if (atk_cnt[5] >= 0) { ex_team_hp += 10 * atk_cnt[5]; if (ex_team_hp > team_hp) { ex_team_hp = team_hp; } } // Make team member attack for (int i = 0; i < 6; ++i) { if (atk_cnt[member_type[i]] >= 0) { st_enemy.GetComponent <EnemyData>().Hurt(team_mem[i].GetComponent <TeamData>().Attack(atk_cnt[member_type[i]])); } } // Make enemy attack ex_team_hp -= st_enemy.GetComponent <EnemyData>().Attack(); if (ex_team_hp <= 0) { ex_team_hp = 0; GameControl.GameOver(false); for (int i = 0; i < 30; ++i) { turning_stone[i].SetActive(false); } } } } } // Redraw the hp bar of player's team hp_bar.GetComponent <RectTransform>().sizeDelta = new Vector2(2 * 270 * (ex_team_hp / (float)team_hp), 15); }