public void Harvest(int x, int y) { TargeType = TragetType.Harvest; _pathFinder.MoveTo(x, y, true); HarvestTargetX = x; HarvestTargetY = y; }
public void Attack(UnitController unit) { TargeType = TragetType.Combat; CombatUnitTarget = unit; var location = CordUtil.WorldToTile(unit.transform.position); _pathFinder.MoveTo(location.First, location.Second, true); _combatTargetX = location.First; _combatTargetY = location.Second; _pathFindCheckCount = 10f; }
public void FixedUpdate() { if (_currentcooldown > 0f) { _currentcooldown -= Time.fixedDeltaTime; } if (TargeType == TragetType.Harvest) { if (HarvestHP <= 0f) { TargeType = TragetType.None; var player = _playerManager.Players.First(p => p.ID == PlayerOwner); switch (_map.Map[HarvestTargetX, HarvestTargetY].ResourceType) { case MinableResourceType.None: break; case MinableResourceType.Food: player.Food += 10; break; case MinableResourceType.Rock: player.Stone += 10; break; case MinableResourceType.Wood: player.Wood += 10; break; default: throw new ArgumentOutOfRangeException(); } _map.Map[HarvestTargetX, HarvestTargetY].Decorators.Clear(); _map.Map[HarvestTargetX, HarvestTargetY].Type = TileTypes.Dirt; _map.RebuildTile(HarvestTargetX, HarvestTargetY); _map.Apply(); HarvestHP = 10f; } else { var playerloc = CordUtil.WorldToTile(transform.position); var xdiff = playerloc.First - HarvestTargetX; var ydiff = playerloc.Second - HarvestTargetY; if (xdiff == -1) { xdiff = 1; } if (ydiff == -1) { ydiff = 1; } if (xdiff <= 1 && ydiff <= 1) { HarvestHP -= Time.fixedDeltaTime; } } } if (CombatUnitTarget != null && _currentcooldown <= 0f) { var loc = CordUtil.WorldToTile(CombatUnitTarget.transform.position); if (loc.First != _combatTargetX || loc.Second != _combatTargetY) { Attack(CombatUnitTarget); } if (Vector3.Distance(transform.position, CombatUnitTarget.transform.position) < CombatDistance) { CombatUnitTarget.Hit(CombatDamage); _currentcooldown = CombatCooldown; } } if (HP <= 0) { //Unit dies Destroy(gameObject); } }