﻿using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class PongNetworkManager : NetworkManager {

	public bool running = false;

	bool isHost = false;

	void Update() {		
		if (running) return;

		// bắt đầu một game mới
		if (CanStartGame() && Input.GetKeyDown(KeyCode.Space)) {
			// che giao diện NetworkManagerHUD
			NetworkManagerHUD hud = FindObjectOfType<NetworkManagerHUD>();
			if (hud != null) hud.showGUI = false;

			// tìm quả bóng, nếu chưa có thì tạo mới từ prefabs
			GameObject ball = FindObjectsOfType<Ball>().Length > 0 ? FindObjectsOfType<Ball>()[0].gameObject as GameObject : null;
			if (ball == null) {
				ball = Instantiate(spawnPrefabs[0], Vector2.zero, Quaternion.identity) as GameObject;
				NetworkServer.Spawn(ball);
			}

			// bắt đầu game: đẩy bóng đi một góc ngẫu nhiên
			float vx = Mathf.Sign(Random.Range(-1f, 1f)) * Random.Range(4f, 6f);
			float vy = Mathf.Sign(Random.Range(-1f, 1f)) * Random.Range(4f, 6f);
			ball.GetComponent<Rigidbody2D>().velocity = new Vector2(vx, vy);

			running = true;
		}
	}

	// host mới có thể bắt đầu game và khi game có đủ 2 người
	private bool CanStartGame() {
		return isHost && (NetworkServer.connections.Count == 2);
	}

	// bắt đầu start, lưu lại trạng thái host
	public override void OnStartHost() {
		base.OnStartHost();
		isHost = true;
	}

	// cập nhật số lượng kết nối hiện tại
	public void OnGUI() {
		GUILayout.Label ("Client connections " + NetworkServer.connections.Count + "/2");
	}

}