Ejemplo n.º 1
0
        private bool CanExecute(UnitAction action, World.Maps.HexPoint focus)
        {
            switch (action)
            {
                case UnitAction.Found:
                    if (Game.GetCityAt(focus) != null)
                        return false;

                    foreach( HexPoint pt in focus.Neighbors )
                        if (Game.GetCityAt(pt) != null)
                            return false;

                    return true;
                case UnitAction.BuildRoad:

                    if (road == null)
                        road = Provider.GetImprovement("Road");

                    return !Game.Map[focus].Improvements.Contains(road);
                case UnitAction.BuildFarm:

                    if (road == null)
                        road = Provider.GetImprovement("Farm");

                    return !Game.Map[focus].Improvements.Contains(farm);
            }

            return false;
        }
Ejemplo n.º 2
0
        public void UpdateImprovements()
        {
            if (farm == null)
                farm = Provider.GetImprovement("Farm");

            _roadMesh.Clear();
            _farmMesh.Clear();

            // now the tiles
            for (int i = 0; i < _map.Width; i++)
            {
                for (int j = 0; j < _map.Height; j++)
                {
                    if (_map[i, j] == null)
                        continue;

                    int roadTileIndex = _map.GetRoadTileIndex(i, j);

                    if (roadTileIndex != -1)
                        _roadMesh.AddObject(new HexagonMeshItem8X8(MapData.GetWorldPosition(i, j), roadTileIndex), false);

                    if( _map[i,j].Improvements.Contains(farm) )
                        _farmMesh.AddObject(new HexagonMeshItem8X8(MapData.GetWorldPosition(i, j), 1), false);
                }
            }

            _roadMesh.UpdateBuffers();
            _farmMesh.UpdateBuffers();
        }
Ejemplo n.º 3
0
        public void Execute(UnitAction _action)
        {
            switch (_action)
            {
                case UnitAction.Idle:
                    break;
                case UnitAction.Found:
                    Found();
                    break;
                case UnitAction.Move:
                    SelectTarget();
                    break;
                case UnitAction.BuildRoad:
                    if (road == null)
                        road = Provider.GetImprovement("Road");

                    Build(road);
                    break;
                case UnitAction.BuildFarm:
                    if (farm == null)
                        farm = Provider.GetImprovement("Farm");

                    Build(farm);
                    break;
                default:
                    throw new Exception("No handle for " + _action); 
            }

            UpdateUnitAction();
        }
Ejemplo n.º 4
0
        public void Build(Improvement imp)
        {
            if (imp == null)
                throw new NullReferenceException();

            _currentWork = imp;
            _currentWorkProgress = 0;
        }
Ejemplo n.º 5
0
        public bool CanBuildRoad()
        {
            if (road == null)
                road = Provider.GetImprovement("Road");

            return CanBuild(road);
        }
Ejemplo n.º 6
0
        public bool CanBuild(Improvement imp)
        {
            if (MainWindow.Game == null)
                return false;

            if (MainWindow.Game.Map == null)
                return false;

            if (Map[Point].Improvements.Contains(imp))
                return false;

            if (!imp.Terrains.Contains(Map[Point].Terrain))
                return false;

            if (Map[Point].Features.Count > 0)
            {
                bool hasFeature = false;

                foreach (Feature feature in Map[Point].Features)
                    hasFeature |= imp.FeatureNames.Contains(feature.Name);

                if (!hasFeature)
                    return false;
            }

            if (!string.IsNullOrEmpty(imp.RequiredTech))
            {
                if (!Player.Technologies.Contains(Provider.GetTech(imp.RequiredTech)))
                    return false;
            }

            // look at road map
            return true;
        }