//this was an experiment, but it uses too many resources
    public void SpawnSurroundingBuildings(int depth)
    {
        Rect box     = world.GetBoundingBox();
        Rect surrbox = box;

        surrbox.width  += 2 * depth;
        surrbox.height += 2 * depth;
        surrbox.x      -= depth;
        surrbox.y      += depth;

        float yMax = surrbox.yMin - surrbox.height;

        Debug.Log("Spawning in " + surrbox + " vs " + box);
        //4 sides
        for (int i = (int)surrbox.xMin; i < surrbox.xMax; ++i)
        {
            for (int j = (int)surrbox.yMin; j > yMax; --j)
            {
                if (i >= box.x && i <= box.x + box.width && j <= box.y && j >= box.y - box.height)
                {
                    continue;
                }
                BuildingFactory.SpawnDecoration(i, j);
            }
        }
    }
Beispiel #2
0
        protected Vector2 CenterInMercator;         //this is like distance (meters) in mercator

        public virtual void Init(BuildingFactory buildingFactory, RoadFactory roadFactory, World.Settings settings)
        {
            //初始经纬度转mercator
            var v2 = GM.LatLonToMeters(settings.Lat, settings.Long);

            Debug.Log("v2:");
            Debug.Log(v2);
            //经纬度转detail level级别的tile坐标
            var tile = GM.MetersToTile(v2, settings.DetailLevel);

            //tilehost为tile的坐标
            TileHost = new GameObject("Tiles").transform;
            TileHost.SetParent(transform, false);

            BuildingFactory = buildingFactory;
            RoadFactory     = roadFactory;
            Tiles           = new Dictionary <Vector2, Tile>();
            CenterTms       = tile;
            //tile 坐标
            CenterInMercator = GM.TileBounds(CenterTms, Zoom).center;
            initposition     = (v2 - CenterInMercator).ToVector3xz();
            GameManager.Instance.yourselfavatar = Instantiate(yourself, initposition, this.transform.rotation) as GameObject;
            GameManager.Instance.yourselfavatar.GetComponent <GPSmovemen>().centertiletms = CenterInMercator;

            Zoom       = settings.DetailLevel;
            Range      = settings.Range;
            LoadImages = settings.LoadImages;
            Debug.Log("Centertms: ");
            Debug.Log(CenterTms);
            Debug.Log("CenterinMercator: ");
            Debug.Log(CenterInMercator);
            LoadTiles(CenterTms, CenterInMercator);
        }
        public void without_monad_at_work()
        {
            Building building = BuildingFactory.AtWorkNotNullBuilding();
            IPhone   phone    = A.Fake <IPhone>();

            if (building != null)
            {
                if (building.Manager != null)
                {
                    Console.WriteLine("Found Manager");
                    if (building.Manager.IsAtWork)
                    {
                        Console.WriteLine("Manager is at work");
                        if (building.Manager.ContactInfo != null)
                        {
                            if (building.Manager.ContactInfo.PhoneNumber != null)
                            {
                                Console.WriteLine("Dialing The Manager");
                                phone.Call(building.Manager.ContactInfo.PhoneNumber);
                            }
                        }
                    }
                }
            }


            A.CallTo(() => phone.Call("1234")).MustHaveHappened();
        }
    public void addBuildingsTest()
    {
        IBuilding bank1 = BuildingFactory.buildNew(BuildingType.Bank, 0, 0);
        IBuilding bank2 = BuildingFactory.buildNew(BuildingType.Bank, 1, 1);
        IBuilding bank3 = BuildingFactory.buildNew(BuildingType.Bank, 2, 2);

        this.gc.forceBuildBuilding(bank1);
        this.gc.forceBuildBuilding(bank2);
        this.gc.forceBuildBuilding(bank3);

        IBuilding sm1 = BuildingFactory.buildNew(BuildingType.StoneMason, 5, 5);
        IBuilding sm2 = BuildingFactory.buildNew(BuildingType.StoneMason, 5, 6);
        IBuilding sm3 = BuildingFactory.buildNew(BuildingType.StoneMason, 5, 7);

        this.gc.forceBuildBuilding(sm1);
        this.gc.forceBuildBuilding(sm2);
        this.gc.forceBuildBuilding(sm3);

        IBuilding wc1 = BuildingFactory.buildNew(BuildingType.WoodCutter, 10, 5);
        IBuilding wc2 = BuildingFactory.buildNew(BuildingType.WoodCutter, 10, 6);
        IBuilding wc3 = BuildingFactory.buildNew(BuildingType.WoodCutter, 10, 7);

        this.gc.forceBuildBuilding(wc1);
        this.gc.forceBuildBuilding(wc2);
        this.gc.forceBuildBuilding(wc3);
    }
Beispiel #5
0
    private void doWork(Work nextAiWork)
    {
        //Debug.Log("Updating ai resource display");
        //foreach (ResourceType rt in aiCurrentGameState.getAllResourceTypes())
        //{
        //    Debug.Log("RT: " + rt + ", " + aiCurrentGameState.getStockpile(rt));
        //    aiResourceDisplay.updateCountAndRPT(rt, aiCurrentGameState.getStockpile(rt), aiCurrentGameState.getChangePerTick(rt));
        //}
        Debug.Log("Doing work: " + nextAiWork.workType);
        switch (nextAiWork.workType)
        {
        case EWork.BuildBuilding:
            startBuildBuilding(BuildingFactory.buildNew(nextAiWork.buildingType, -1, -1), nextAiWork.frameWait);
            break;

        case EWork.BuyAndAssignWorker:
            Debug.Log("Worker for: " + nextAiWork.buildingType);
            if (aiCurrentGameState.canBuyWorker())
            {
                Debug.Log("can buy worker");
                aiCurrentGameState.buyAndAssignWorker(nextAiWork.buildingType);
                aiResourceDisplay.workerAssigned();
                aiResourceDisplay.addTotalWorker();

                switch (nextAiWork.buildingType)
                {
                case BuildingType.Bank:
                    bank++;
                    break;

                case BuildingType.SilverMine:
                    silver++;
                    break;

                case BuildingType.StoneMason:
                    stone++;
                    break;

                case BuildingType.WoodCutter:
                    wood++;
                    break;
                }
            }
            else
            {
                Debug.Log("cannot buy worker");
            }
            doNextWorkAi();
            break;

        case EWork.Wait:
            StartCoroutine(aiWait(nextAiWork.frameWait));
            break;

        default:
            doNextWorkAi();
            break;
        }
    }
Beispiel #6
0
 public Tile Initialize(BuildingFactory buildingFactory, RoadFactory roadFactory, Settings settings)
 {
     _buildingFactory = buildingFactory;
     _roadFactory     = roadFactory;
     _settings        = settings;
     Rect             = GM.TileBounds(_settings.TileTms, _settings.Zoom);
     return(this);
 }
Beispiel #7
0
    void Start()
    {
        _buildingFactory = GetComponentInChildren <BuildingFactory>();
        _roadFactory     = GetComponentInChildren <RoadFactory>();

        _tileManager = GetComponent <TileManager>();
        _tileManager.Init(_buildingFactory, _roadFactory, _settings);
    }
    static void Main(string[] args)
    {
        // client code
        Building supermarket = new Building(1, 2,
                                            BuildingFactory.get_building_type("market", "green", "market.png"));

        supermarket.render();
    }
        public override void Init(BuildingFactory buildingFactory, RoadFactory roadFactory, World.Settings settings)
        {
            base.Init(buildingFactory, roadFactory, settings);
            _removeAfter    = Math.Max(_removeAfter, Range * 2 + 1);
            _tileSize       = Tiles.Values.First().Rect.size;
            _centerCollider = new Rect(Vector2.zero - Tiles.Values.First().Rect.size / 2, Tiles.Values.First().Rect.size);

            //   Observable.Interval(TimeSpan.FromSeconds(2)).Subscribe(x => { UpdateTiles(); });
        }
        public void my_strange_monad_3()
        {
            string phoneNumber = BuildingFactory.AtWorkNotNullBuilding()
                                 .GetManager3(b => b.Manager)
                                 .GetContact()
                                 .GetPhoneNumber();

            Assert.AreEqual("1234", phoneNumber);
        }
        public void monad_with_not_null()
        {
            string phoneNumber = BuildingFactory.AtWorkNotNullBuilding()
                                 .With(b => b.Manager)
                                 .With(m => m.ContactInfo)
                                 .With(c => c.PhoneNumber);

            Assert.AreEqual("1234", phoneNumber);
        }
 public BattleObjectFactory(Vector <BattleObject> map, Engine.BattleEngine battleEngine)
 {
     _map             = map;
     _buildingFactory = new BuildingFactory(this, battleEngine);
     _unitFactory     = new UnitFactory(this, battleEngine);
     _bulletFactory   = new BulletFactory(this, battleEngine);
     _spellFactory    = new SpellFactory(this, battleEngine);
     _damageFactory   = new DamageFactory(this, battleEngine);
 }
Beispiel #13
0
        public BuildingManager(BuildingFactory factory)
        {
            if (factory == null)
            {
                throw new ArgumentNullException();
            }

            this.factory = factory;
        }
Beispiel #14
0
    // Use this for initialization
    void Start()
    {
        var agent = (Citizen)AgentFactory.CreateAgent(AgentClass.Adult);

        agent.setAgent_name("Joe Smith");

        AgentFactory.CreateAgent(AgentClass.Adult);

        BuildingFactory.createBuilding(BuildingClass.Residential);
    }
        public DefenseGrid GET()
        {
            DefenseGrid     dg   = new GridFactory().Create("Defense", 15, 15) as DefenseGrid;
            BuildingFactory art  = new BuildingFactory();
            Block           blks = dg.grid[5, 5];

            blks.building = art.Create("Artillery", "Art1");
            blks.state    = State.Healthy;
            return(dg);
        }
Beispiel #16
0
    public void buildBuilding(BuildingType bt)
    {
        if (ConstructionController.tile == null)
        {
            throw new System.Exception("Trying to build without a tile. Please call turnOn(Tile t) before trying to build something");
        }
        IBuilding newBuilding = BuildingFactory.buildNew(bt, tile.x, tile.y);

        this.gc.startBuildBuilding(newBuilding);
    }
Beispiel #17
0
    //Calls the factory classes and passes the values of the import window inputs
    public void Import()
    {
        var xmlBaseFactory = new XmlBaseFactory();

        xmlBaseFactory.Read(_mapFile);

        var buildingFactory    = new BuildingFactory(xmlBaseFactory, _buildingMaterial);
        var roofFactory        = new RoofFactory(xmlBaseFactory, _roofMaterial);
        var roadFactory        = new RoadFactory(xmlBaseFactory, _roadMaterial, _footwayMaterial);
        var environmentFactory = new EnvironmentFactory(xmlBaseFactory, _greenMaterial);
    }
Beispiel #18
0
 private void Start()
 {
     warningScript   = WarningScript.Instance;
     Building        = BuildingFactory.GetBuilding(buildingType); // Building kendi classının butondan gönderildiği üzere factory'den yaratıyor.
     InfoImageObject = GameObject.FindWithTag("InfoImageObject");
     InfoTextObject  = GameObject.FindWithTag("InfoTextObject");
     ClickManager.NonClickableObject += BuildingSet; // VirtualBuilding kurulumu yapıldıktan sonra nonClickable olarak işaretlenmiş terrain'a tıklandığında
                                                     // RealBuilding oluşturuluyor.
     CreateVirtualBuilding();
     Building.giveInfoLog();                         // Bina yaratıldığında iki farklı class için farklı çalışan info fonksiyonu
 }
Beispiel #19
0
        public static void Main(string[] args)
        {
            IReader          reader          = new ConsoleReader();
            IWriter          writer          = new ConsoleWriter();
            IBuildingFactory buildingFactory = new BuildingFactory();
            IBuildingData    buildingData    = new BuildingData();

            var engine = new Engine(reader, writer, buildingFactory, buildingData);

            engine.Run();
        }
        static void Main()
        {
            var buildingFactory = new BuildingFactory();
            var unitFactory = new UnitFactory();
            var resourceFactory = new ResourceFactory();
            var reader = new ConsoleReader();
            var writer = new ConsoleWriter();
            var data = new EmpiresData();

            var engine = new Engine(buildingFactory,resourceFactory,unitFactory,data,reader,writer);
            engine.Run();
        }
Beispiel #21
0
 void Awake()
 {
     if (instance == null)
     {
         //DontDestroyOnLoad (gameObject);
         instance = this;
     }
     else if (instance != this)
     {
         Destroy(gameObject);
     }
 }
        static void Main()
        {
            InputReader     inputReader  = new InputReader();
            OutputWriter    outputWriter = new OutputWriter();
            UnitFactory     uf           = new UnitFactory();
            ResourceFactory rf           = new ResourceFactory();
            BuildingFactory bf           = new BuildingFactory();
            EmpireDatabase  database     = new EmpireDatabase();

            Engine.Engine engine = new Engine.Engine(outputWriter, inputReader, rf, uf, bf, database);
            engine.Run();
        }
Beispiel #23
0
        public static void Main(string[] args)
        {
            IBuildingFactory buildingFactory = new BuildingFactory();
            IUnitFactory unitFactory = new UnitFactory();
            IResourceFactory resourceFactory = new ResourceFactory();
            IInputReader reader = new ConsoleReader();
            IOutputWriter writer = new ConsoleWriter();
            IEmpiresData database = new Database();

            IEngine engine = new Engine(unitFactory, resourceFactory, buildingFactory, reader, writer, database);
            engine.Run();
        }
Beispiel #24
0
        public void Start()
        {
            playerStage = PlayerStage.Level1;

            // Realign the spawnpoint so it's on the terrain
            spawnPoint.transform.position = VectorUtil.sitOnTerrain(spawnPoint);

            AddBuilding(UnitType.CommandCenter, BuildingFactory.CreateBuilding(this, UnitType.CommandCenter, spawnPoint.transform.position, spawnPoint.transform.rotation));

            AddUnit(UnitType.Rover, UnitFactory.CreateUnit(this, UnitType.Rover, VectorUtil.sitOnTerrain(spawnPoint.transform.position + (Vector3.forward * 10) - (Vector3.left * 2))));
            AddUnit(UnitType.Rover, UnitFactory.CreateUnit(this, UnitType.Rover, VectorUtil.sitOnTerrain(spawnPoint.transform.position + (Vector3.forward * 10) + (Vector3.left * 2))));
        }
        public void my_strange_monad()
        {
            IPhone phone = A.Fake <IPhone>();

            BuildingFactory.AtWorkNotNullBuilding()
            .GetManager1()
            .GetContact()
            .GetPhoneNumber()
            .StringDo(phoneNumber => phone.Call(phoneNumber));

            A.CallTo(() => phone.Call("1234")).MustHaveHappened();
        }
Beispiel #26
0
        public void monad_with_null()
        {
            IPhone phone = A.Fake <IPhone>();

            BuildingFactory.AtWorkNullPhoneNumber()
            .With(b => b.Manager)
            .With(m => m.ContactInfo)
            .With(c => c.PhoneNumber)
            .Do(phoneNumber => phone.Call(phoneNumber));

            A.CallTo(() => phone.Call(null)).WithAnyArguments().MustNotHaveHappened();
        }
        public void monad_with_not_null()
        {
            IPhone phone = A.Fake <IPhone>();

            BuildingFactory.AtWorkNotNullBuilding()
            .With(b => b.Manager)
            .With(m => m.ContactInfo)
            .With(c => c.PhoneNumber)
            .Do(phoneNumber => phone.Call(phoneNumber));

            A.CallTo(() => phone.Call("1234")).MustHaveHappened();
        }
Beispiel #28
0
        static void Main(string[] args)
        {
            var buildingFactory = new BuildingFactory();
            var unitFactory     = new UnitFactory();
            var resourceFactory = new ResourceFactory();
            var database        = new EmpireDatabase();
            var reader          = new InputReader();
            var writter         = new OutputWritter();

            Engine engine = new Engine(buildingFactory, unitFactory, resourceFactory, database, reader, writter);

            engine.Run();
        }
Beispiel #29
0
        public static void Main(string[] args)
        {
            var buildingFactory = new BuildingFactory();
            var unitFactory     = new UnitFactory();
            var resourceFactory = new ResourceFactory();
            var reader          = new ConsoleReader();
            var writer          = new ConsoleWriter();
            var data            = new EmpiresData();

            var engine = new Engine(buildingFactory, resourceFactory, unitFactory, data, reader, writer);

            engine.Run();
        }
        public static void Main(string[] args)
        {
            IBuildingFactory buildingFactory = new BuildingFactory();
            IUnitFactory     unitFactory     = new UnitFactory();
            IResourceFactory resourceFactory = new ResourceFactory();
            IInputReader     reader          = new ConsoleReader();
            IOutputWriter    writer          = new ConsoleWriter();
            IEmpiresData     database        = new Database();

            IEngine engine = new Engine(unitFactory, resourceFactory, buildingFactory, reader, writer, database);

            engine.Run();
        }
        public void Test_ShouldReturnBuilding_WhenGivenDef(Type defType, Type expectedType)
        {
            //    Arrange
            BuildingFactory buildingFactory = new BuildingFactory(faction, game);
            IStructureDef   def             = (IStructureDef)Activator.CreateInstance(defType);


            //    Act
            IStructure <IStructureDef> building = buildingFactory.CreateNewBuilding(def);

            //    Assert
            Assert.AreEqual(expectedType, building.GetType());
        }
        public void Test_ShouldThrowException_WhenGivenNull()
        {
            //    Arrange

            //    Act

            //    Assert
            Assert.Throws <ArgumentNullException>(() =>
            {
                BuildingFactory factory = new BuildingFactory(null, game);
            }
                                                  );
        }
 public void Setup(int building_type, BuildingFactory _buildingFactory)
 {
     base.Setup ();
     buildingType = building_type;
     buildingFactory = _buildingFactory;
 }
Beispiel #34
0
 /// <summary>
 /// Build the '2nd layer' of buildings if enough units (upgrade)
 /// </summary>
 public void Build2nd()
 {
     //Debug.Log("build 2");
     string buildingToBuild = buildingText2.text;
     BuildingFactory buildingFactory = new BuildingFactory ();
     Building building = buildingFactory.getBuilding (buildingToBuild.Replace(" ","") + "(Clone)");
     if(PlayerController.getCount() >= building.getCost()){
         if (buildingToBuild.Equals ("GearShack")) {
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(gearShack, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(-90, (Random.Range(0, 360)), 0));
             turrets.Add(newObject);
             lastHitObject.tag = "GearShackPlane";
         }
         if (buildingToBuild.Equals ("Harpgoon")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(harpgoon, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(0, (Random.Range(0, 360)), 0));
             turrets.Add(newObject);
             lastHitObject.tag = "occupiedPlane";
             Analytics.setBuildings(4);
         }
         if (buildingToBuild.Equals ("Health Boost Bed")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(healthBed, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(-90, (Random.Range(0, 360)), 0));
             turrets.Add(newObject);
             lastHitObject.tag = "occupiedPlane";
         }
         if (buildingToBuild.Equals ("Gun Smith")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(weaponSmith, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(-90, 0, 0));
             newObject.transform.Translate(new Vector3(0, 0.1957196f, 0));
             turrets.Add(newObject);
             lastHitObject.tag = "Gunsmith";
         }
         UpdateUnits(building);
         score_.addScoreBuilding(building.getCost());
         setBuildMenu();
     }
 }
    void Start ()
    {
        buildingFactory = new BuildingFactory();

        potionStartTime = Time.time;
	}
Beispiel #36
0
 /// <summary>
 /// Build the '3rd layer' of buildings if enough units (more upgrades!)
 /// </summary>
 public void Build3rd()
 {
     //Debug.Log("build 3");
     string buildingToBuild = buildingText3.text;
     BuildingFactory buildingFactory = new BuildingFactory ();
     Building building = buildingFactory.getBuilding (buildingToBuild.Replace(" ", "") + "(Clone)");
     if(PlayerController.getCount() >= building.getCost()){
         if (buildingToBuild.Equals ("Bed")) {
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(bed, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(-90, 0, 0));
             newObject.transform.Translate(new Vector3(0, 0.06193482f, 0));
             turrets.Add(newObject);
             lastHitObject.tag = "BedPlane";
         }
         if (buildingToBuild.Equals ("Snail Gun")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(snailGun, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(0, (Random.Range(0, 360)), 0));
             turrets.Add(newObject);
             lastHitObject.tag = "occupiedPlane";
             Analytics.setBuildings(3);
         }
         if (buildingToBuild.Equals ("Tech Smith")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(gadgetSmith, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(-90, (Random.Range(0, 360)), 0));
             turrets.Add(newObject);
             lastHitObject.tag = "Techsmith";
         }
         UpdateUnits(building);
         score_.addScoreBuilding(building.getCost());
         setBuildMenu();
     }
 }
Beispiel #37
0
 /// <summary>
 /// Build the '1st layer' of buildings if enough units (build from scratch) 
 /// </summary>
 public void Build1st()
 {
     //Debug.Log("build 1");
     string buildingToBuild = buildingText1.text;
     BuildingFactory buildingFactory = new BuildingFactory ();
     Building building = buildingFactory.getBuilding (buildingToBuild.Replace(" ", "") + "(Clone)");
     if(PlayerController.getCount() >= building.getCost()){
         if (buildingToBuild.Equals ("Rock-Paper-Scissor turret")) {
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(basicTurret, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(0, (Random.Range(0, 360)), 0));
             turrets.Add(newObject);
             lastHitObject.tag = "BasicTurretPlane";
             Analytics.setBuildings(1);
         }
         if (buildingToBuild.Equals ("Cat-a-pult")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(catapult, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(0, (Random.Range(0, 360)), 0));
             turrets.Add(newObject);
             lastHitObject.tag = "occupiedPlane";
             Analytics.setBuildings(2);
         }
         if (buildingToBuild.Equals ("Energy Boost Bed")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(energyBed, place, Quaternion.identity);
             newObject.transform.Rotate(new Vector3(-90, 0, 0));
             newObject.transform.Translate(new Vector3(0, 1.055501f, 0));
             turrets.Add(newObject);
             lastHitObject.tag = "occupiedPlane";
         }
         if (buildingToBuild.Equals ("Generator")) {
             Delete();
             Vector3 place = lastHitObject.transform.position;
             GameObject newObject = (GameObject)Instantiate(generator, place, Quaternion.identity);
             newObject.transform.Translate(new Vector3(0, 0.2050993f, 0));
             turrets.Add(newObject);
             lastHitObject.tag = "occupiedPlane";
         }
         UpdateUnits(building);
         score_.addScoreBuilding(building.getCost());
         setBuildMenu();
     }
 }