Esempio n. 1
0
        private void SpawnUnit()
        {
            var bounds     = _groundPlane.GetComponent <MeshRenderer>().bounds;
            var unitObject = GameObjectFactory.GetPrimitive <SimpleUnit>(PrimitiveType.Cube);

            unitObject.name += _units.Count.ToString();
            _units.Add(unitObject);

            var unitPosition =
                new Vector3(Random.Range(bounds.min.x, bounds.max.x),
                            1, Random.Range(bounds.min.z, bounds.max.z));

            unitObject.transform.position = unitPosition;
            unitObject.gameObject.AddComponent <Rigidbody>();
            unitObject.GetComponent <MeshRenderer>().material.color = Random.ColorHSV();

            unitObject.OnHit = unit =>
            {
                if (unit.Health <= Defaults.ProjectileDamage)
                {
                    Destroy(unit.gameObject);
                }

                unit.Health -= Defaults.ProjectileDamage;

                var message = unit.Health > 0
                    ? $"{unit.name}: {unit.Health}"
                    : LogExtension.BoldRed($"{unit.name}: {unit.Health}");

                SendMessage(new UnitDataUpdateMessage {
                    Message = message
                });
            };
        }
Esempio n. 2
0
        private void Start()
        {
            State      = ERootState.Idle;
            _uiManager = FindObjectOfType <UIManager>();
            Assert.IsNotNull(_uiManager, LogExtension.BoldRed(Defaults.UIManagerNotFound));
            Assert.IsNotNull(_uiManager.LaunchButton, LogExtension.BoldRed(Defaults.LaunchButtonIsNotSet));
            Assert.IsNotNull(_uiManager.HaltButton, LogExtension.BoldRed(Defaults.HaltButtonIsNotSet));

            _uiManager.LaunchButton.onClick.AddListener(LaunchAction());
            _uiManager.PauseButton.onClick.AddListener(PauseAction());
            _uiManager.HaltButton.onClick.AddListener(HaltAction());

            Debug.Log(LogExtension.Bold("[RootController][Start] Complete"));
        }