Пример #1
0
        private void Kill(Core.Unit unit)
        {
            DebugLog.Fine(this, $"{_prefix} Killing Unit {{{unit.ID}}}");

            if (onlineUnits.TryGetValue(unit.ID, out Unit unitView))
            {
                Core.Unit u = unitView.unit;

                if (!u.IsDead() | !unit.IsDead())
                {
                    DebugLog.Warning(this, $"{_prefix} Unit {{{unit.ID}}} is not dead, but called kill.");
                }

                OnUnitViewRemoveEvent.Invoke(unitView);
                unitView.OnUnitDeathEvent.Invoke(unitView.gameObject);

                onlineUnits.Remove(unit.ID);

                Destroy(unitView.gameObject);

                DebugLog.Finest(this, $"{_prefix} Killed Unit {unitView.ToString()}");
                return;
            }
            else
            {
                DebugLog.Severe(this, $"{_prefix} Could not find unit {{{unit.ID}}}!!");
                return;
            }
        }
Пример #2
0
        public void AddCoreUnit(Core.Unit coreUnit, Vector3 startPosition)
        {
            Unit mapUnit = new Unit(0, coreUnit, startPosition, Quaternion.identity);

            Units.Add(mapUnit);
            UI.MapUnitUI mapUnitUI = resourceLoader.GetGameObjectClone(mapUnit);
            mapUnitUI.SendMessage("SetMapUnit", mapUnit, SendMessageOptions.RequireReceiver);
            mapUnitUI.SendMessage("SetPlayerControl", true, SendMessageOptions.RequireReceiver); // for test
        }
Пример #3
0
 public Unit(int ID, Core.Unit coreUnit, Vector3 position, Quaternion rotation)
 {
     this.ID                 = ID;
     this.coreUnit           = coreUnit;
     this.CoreID             = coreUnit.ID;
     this.Position           = position;
     this.Rotation           = rotation;
     this.MoveTargetPosition = position;
 }
Пример #4
0
        private GameObject Spawn(Core.Unit unit)
        {
            DebugLog.Fine(this, $"{_prefix} Spawning Unit {{{unit.ID}}}");

            GameObject unitObj  = Spawn(balloonUnit, unit.ID, unit.X, unit.Y);
            Unit       unitView = unitObj.GetComponent <Unit>();

            unitView.unit = unit;

            onlineUnits.Add(unit.ID, unitView);

            OnUnitViewAddEvent.Invoke(unitView);
            DebugLog.Finest(this, $"{_prefix} Spawned Unit: {unitView.ToString()}");
            return(unitObj);
        }
Пример #5
0
        private void Awake()
        {
            unit     = GetComponent <Core.Unit>();
            pointsUI = GetComponentInChildren <PointsUI>();

            HealthPoints    = new ReactiveProperty <int>(100);
            MaxHealthPoints = new ReactiveProperty <int>(HealthPoints.Value);

            if (gameObject.CompareTag("Player"))
            {
                signalBus.Subscribe <LevelUp>(() =>
                {
                    UpdateMaxHealthPoints(config.HealthGetForLevel);
                    HealthPoints.Value = MaxHealthPoints.Value;
                });
            }
        }
Пример #6
0
        // Start is called before the first frame update
        void Start()
        {
            //CurrentState = GameState.Menu;
            //commandQueue = new Queue<Command>();

            CurrentState = GameState.Game;
            Core.Unit coreUnit = new Core.Unit
            {
                Type = UnitType.Player
            };
            map = new Map.FreeMap();
            map.AddCoreUnit(coreUnit, Vector3.right);
            // mapUnit = new Map.Unit(0, coreUnit, Vector3.right, Quaternion.identity);
            // mapUnitUI = resourceLoader.GetGameObjectClone(mapUnit);
            // mapUnitUI.SendMessage("SetMapUnit", mapUnit, SendMessageOptions.RequireReceiver);
            // mapUnitUI.SendMessage("SetPlayerControl", true, SendMessageOptions.RequireReceiver);
        }
Пример #7
0
        private void Damage(Core.Unit unit, int amount)
        {
            DebugLog.Fine(this, $"{_prefix} Damaging Unit {{{unit.ID}}}");

            if (onlineUnits.TryGetValue(unit.ID, out Unit unitView))
            {
                Core.Unit u = unitView.unit;

                u.hp -= amount;

                OnUnitViewDamageEvent.Invoke(unitView);
            }
            else
            {
                DebugLog.Severe(this, $"{_prefix} Could not find unit [{unit.ID}]!!");
                return;
            }
        }
Пример #8
0
 public void DamageUnit(Core.Unit unit, int damage)
 {
     // DataSender.SendUnitDamaged(unit, damage);
 }
Пример #9
0
 public void AddUnit(Core.Unit unit)
 {
     Debug.Log($"Spawned: {unit.ID}");
     units.Add(unit.ID, unit);
     OnUnitAdd.Invoke(unit);
 }