コード例 #1
0
ファイル: BuildingSlot.cs プロジェクト: ericwoh/LD46
    /// <summary>
    /// Public method used to reset this building slot, reinitializing to blank state
    /// </summary>
    public void ClearSlot()
    {
        mModule = null;
        SpriteRenderer sr = GetComponent <SpriteRenderer>();

        if (sr != null)
        {
            sr.sprite = null;
        }
    }
コード例 #2
0
    private void DrawFloors(ref Texture2D2 texture)
    {
        BuildingModule module = GameObject.FindObjectOfType <BuildingModule>();

        for (int x = 0; x < this.dimension.x; x++)
        {
            for (int y = 0; y < this.dimension.y; y++)
            {
                MapGenerator.AddToTexture(ref texture, this.Position(Depth.World) + new Point(x, y), module.building_floor);
            }
        }
    }
コード例 #3
0
ファイル: BuildingSlot.cs プロジェクト: ericwoh/LD46
    public void SetBuildingModule(BuildingModule module)
    {
        mModule = module;
        SpriteRenderer sr = GetComponent <SpriteRenderer>();

        if (sr != null)
        {
            sr.sprite = module.mSprite;
        }

        Debug.Log("Setting module to " + module);
    }
コード例 #4
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldUpdateBuilding()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;

            database = new MockedDatabase <Building>(false, 1, (t) => new Building()
            {
                BuildingID = t
            });
            module = new BuildingModule(NullLogger.Instance, database);
            module.UpdateBuilding(0, 10);
            Assert.AreEqual(1, database.UpdatedCount);
        }
コード例 #5
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldNotGetBuildingUsingCoordinates()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;
            Building result;

            database = new MockedDatabase <Building>(false, 0, (t) => new Building()
            {
                BuildingID = t, X = 3, Y = 4
            });
            module = new BuildingModule(NullLogger.Instance, database);
            result = module.GetBuilding(1, 4, 3);
            Assert.IsNull(result);
        }
コード例 #6
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            NinjectModule buildingModule = new BuildingModule();
            NinjectModule serviceModule  = new ServiceModule("DefaultConnection");

            var kernel = new StandardKernel(buildingModule, serviceModule);

            DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
        }
コード例 #7
0
 public void Destory()
 {
     this.m_BuilderModule             = null;
     this.m_BuildingModule            = null;
     this.m_PlayerModule              = null;
     this.m_ArmyModule                = null;
     this.m_ItemModule                = null;
     this.m_ShopModule                = null;
     this.m_RemovableModule           = null;
     this.m_TaskModule                = null;
     this.m_PropsModule               = null;
     this.m_DefenseModule             = null;
     this.m_AchievementBuildingModule = null;
     this.m_CurrentFriend             = null;
 }
コード例 #8
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldNotUpdateBuildingAndLogError()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;
            MemoryLogger logger;

            logger   = new MemoryLogger();
            database = new MockedDatabase <Building>(true, 3, (t) => new Building()
            {
                BuildingID = t
            });
            module = new BuildingModule(logger, database);
            Assert.ThrowsException <PIODataException>(() => module.UpdateBuilding(0, 1));
            Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName)));
        }
コード例 #9
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldGetBuilding()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;
            Building result;

            database = new MockedDatabase <Building>(false, 1, (t) => new Building()
            {
                BuildingID = t
            });
            module = new BuildingModule(NullLogger.Instance, database);
            result = module.GetBuilding(1);
            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.BuildingID);
        }
コード例 #10
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldGetBuildingUsingCoordinates()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;
            Building result;

            database = new MockedDatabase <Building>(false, 1, (t) => new Building()
            {
                BuildingID = t, X = 3, Y = 4
            });
            module = new BuildingModule(NullLogger.Instance, database);
            result = module.GetBuilding(1, 3, 4);
            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.BuildingID);
            Assert.AreEqual(3, result.X);
            Assert.AreEqual(4, result.Y);
        }
コード例 #11
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldNotCreateBuildingAndLogError()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;
            MemoryLogger logger;


            logger   = new MemoryLogger();
            database = new MockedDatabase <Building>(true, 1, (t) => new Building()
            {
                BuildingID = t
            });
            module = new BuildingModule(logger, database);
            Assert.ThrowsException <PIODataException>(() => module.CreateBuilding(1, 7, 9, BuildingTypeIDs.Sawmill, 1, 10));
            Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName)));

            Assert.AreEqual(0, database.InsertedCount);
        }
コード例 #12
0
    public void Initialize(UserData userData, List <BuildingData> buildingData, List <ArmyData> armyData, List <ItemData> itemData,
                           List <ObjectUpgrade <ArmyType> > armyUpgrade, List <ObjectUpgrade <ItemType> > itemUpgrade, List <RemovableObjectData> removableObjects,
                           List <TaskInformation> tasks, Dictionary <MercenaryIdentity, MercenaryData> mercenaries, Dictionary <int, PropsData> props, List <DefenseObjectData> defenseObjects,
                           int removableObjectStartNo, int propsStartNo, List <AchievementBuildingData> achievementBuildings, int achievementBuildingStartNo)
    {
        this.m_BuilderModule = new BuilderManager();

        this.m_PlayerModule    = new PlayerLogicObject();
        this.m_BuildingModule  = new BuildingModule(this.m_BuilderModule);
        this.m_ArmyModule      = new ArmyModule();
        this.m_ItemModule      = new ItemModule();
        this.m_MercenaryModule = new MercenaryModule();
        this.m_ShopModule      = new ShopModule();
        this.m_RemovableModule = new RemovableObjectModule(this.m_BuilderModule);

        this.m_MercenaryModule.InitializeMercenaries(mercenaries);
        this.m_ItemModule.InitializeItem(itemData, itemUpgrade);
        this.m_ArmyModule.InitializeArmy(armyData, armyUpgrade);
        this.m_PlayerModule.IntializePlayer(userData);
        this.m_BuildingModule.IntializeBuilding(buildingData);
        this.m_RemovableModule.InitialWithData(removableObjects, removableObjectStartNo);

        this.m_BuildingModule.ItemUpgradeFinished += ItemUpgradeFinished;
        this.m_BuildingModule.ArmyUpgradeFinished += ArmyUpgradeFinished;

        this.m_IsNewPlayer = (removableObjects.Count == ClientSystemConstants.INITIAL_REMOVABLE_OBJECT_NUMBER) &&
                             (removableObjects[0].Position == null);


        this.m_TaskModule = new TaskManager();
        foreach (TaskInformation info in tasks)
        {
            TaskProgressFactory.PopulateTaskInformation(info);
        }
        this.m_TaskModule.InitialTask(tasks);

        this.m_PropsModule = new PropsModule();
        this.m_PropsModule.InitializeProps(props, propsStartNo);
        this.m_DefenseModule = new DefenseObjectModule();
        this.m_DefenseModule.InitialDefenseObject(defenseObjects);
        this.m_AchievementBuildingModule = new AchievementBuildingModule();
        this.m_AchievementBuildingModule.InitialAchievementBuilding(achievementBuildings, achievementBuildingStartNo);
    }
コード例 #13
0
    private void DrawEntrance(Directional entrance, ref Texture2D2 texture)
    {
        BuildingModule module = GameObject.FindObjectOfType <BuildingModule>();

        if (entrance.direction == Direction.North)
        {
            MapGenerator.AddToTexture(ref texture, entrance.Position(Depth.World), module.entrance_north);
        }
        else if (entrance.direction == Direction.East)
        {
            MapGenerator.AddToTexture(ref texture, entrance.Position(Depth.World), module.entrance_east);
        }
        else if (entrance.direction == Direction.South)
        {
            MapGenerator.AddToTexture(ref texture, entrance.Position(Depth.World), module.entrance_south);
        }
        else
        {
            MapGenerator.AddToTexture(ref texture, entrance.Position(Depth.World), module.entrance_west);
        }
    }
コード例 #14
0
    private void DrawWindow(Directional window, ref Texture2D2 texture)
    {
        BuildingModule module = GameObject.FindObjectOfType <BuildingModule>();

        if (window.direction == Direction.North)
        {
            MapGenerator.AddToTexture(ref texture, window.Position(Depth.World), module.window_north);
        }
        else if (window.direction == Direction.East)
        {
            MapGenerator.AddToTexture(ref texture, window.Position(Depth.World), module.window_east);
        }
        else if (window.direction == Direction.South)
        {
            MapGenerator.AddToTexture(ref texture, window.Position(Depth.World), module.window_south);
        }
        else
        {
            MapGenerator.AddToTexture(ref texture, window.Position(Depth.World), module.window_west);
        }
    }
コード例 #15
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldGetBuildings()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;

            Building[] results;

            database = new MockedDatabase <Building>(false, 3, (t) => new Building()
            {
                BuildingID = t
            });
            module  = new BuildingModule(NullLogger.Instance, database);
            results = module.GetBuildings(1);
            Assert.IsNotNull(results);
            Assert.AreEqual(3, results.Length);
            for (int t = 0; t < 3; t++)
            {
                Assert.IsNotNull(results[t]);
                Assert.AreEqual(t, results[t].BuildingID);
            }
        }
コード例 #16
0
ファイル: BuildingModuleUnitTest.cs プロジェクト: dfgs/PIO
        public void ShouldCreateBuilding()
        {
            MockedDatabase <Building> database;
            BuildingModule            module;
            Building result;

            database = new MockedDatabase <Building>(false, 1, (t) => new Building()
            {
                BuildingID = t
            });
            module = new BuildingModule(NullLogger.Instance, database);
            result = module.CreateBuilding(1, 7, 9, BuildingTypeIDs.Sawmill, 1, 10);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.PlanetID);
            Assert.AreEqual(1, result.RemainingBuildSteps);
            Assert.AreEqual(7, result.X);
            Assert.AreEqual(9, result.Y);
            Assert.AreEqual(10, result.HealthPoints);

            Assert.AreEqual(1, database.InsertedCount);
        }
コード例 #17
0
ファイル: Program.cs プロジェクト: dfgs/PIO
        static void Main(string[] args)
        {
            ILogger logger;
            VersionControlModule versionControlModule;
            ServiceHostModule    pioServiceHostModule;
            ServiceHostModule    taskCallbackServiceHostModule;
            SchedulerModule      schedulerModule;

            IPIOService          pioService;
            ITaskCallbackService taskCallbackService;
            IDatabase            database;
            IConnectionFactory   connectionFactory;
            ICommandBuilder      commandBuilder;
            IDatabaseCreator     databaseCreator;

            IPlanetGeneratorModule planetGeneratorModule;

            IPhraseModule       phraseModule;
            IPlanetModule       planetModule;
            ICellModule         cellModule;
            IBuildingModule     buildingModule;
            IWorkerModule       workerModule;
            IBuilderModule      factoryBuilderModule;
            IStackModule        stackModule;
            IResourceTypeModule resourceTypeModule;
            IBuildingTypeModule buildingTypeModule;
            ITaskTypeModule     taskTypeModule;
            IMaterialModule     materialModule;
            IIngredientModule   ingredientModule;
            IProductModule      productModule;
            ITaskModule         taskModule;

            IIdlerModule           idlerModule;
            IResourceCheckerModule resourceCheckerModule;
            ILocationCheckerModule locationCheckerModule;
            IProducerModule        producerModule;
            IHarvesterModule       harvesterModule;
            IMoverModule           moverModule;
            ITakerModule           takerModule;
            IStorerModule          storerModule;

            quitEvent = new AutoResetEvent(false);
            Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);

            //logger = new ConsoleLogger(new DefaultLogFormatter());
            logger = new UnicastLogger(IPAddress.Loopback, Properties.Settings.Default.UnicastPort);
            //logger = new FileLogger(new DefaultLogFormatter(), "PIO.ServerHost.Log");

            databaseCreator   = new SqlDatabaseCreator(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName);
            connectionFactory = new SqlConnectionFactory(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName);
            commandBuilder    = new SqlCommandBuilder();
            database          = new Database(connectionFactory, commandBuilder);

            versionControlModule = new VersionControlModule(logger, databaseCreator, new PIOVersionControl(database));
            if (!versionControlModule.InitializeDatabase(Properties.Settings.Default.DropDatabase))
            {
                return;
            }


            phraseModule       = new PhraseModule(logger, database);
            planetModule       = new PlanetModule(logger, database);
            cellModule         = new CellModule(logger, database);
            buildingModule     = new BuildingModule(logger, database);
            workerModule       = new WorkerModule(logger, database);
            stackModule        = new StackModule(logger, database);
            resourceTypeModule = new ResourceTypeModule(logger, database);
            buildingTypeModule = new BuildingTypeModule(logger, database);
            taskTypeModule     = new TaskTypeModule(logger, database);
            materialModule     = new MaterialModule(logger, database);
            ingredientModule   = new IngredientModule(logger, database);
            productModule      = new ProductModule(logger, database);
            taskModule         = new TaskModule(logger, database);


            factoryBuilderModule  = new BuilderModule(logger, taskModule, workerModule, buildingModule, buildingTypeModule, stackModule, materialModule);;
            idlerModule           = new IdlerModule(logger, taskModule, workerModule);
            resourceCheckerModule = new ResourceCheckerModule(logger, buildingModule, stackModule, ingredientModule, materialModule);
            locationCheckerModule = new LocationCheckerModule(logger, workerModule, buildingModule);
            producerModule        = new ProducerModule(logger, taskModule, workerModule, buildingModule, buildingTypeModule, stackModule, ingredientModule, productModule);
            harvesterModule       = new HarvesterModule(logger, taskModule, workerModule, buildingModule, buildingTypeModule, stackModule, productModule);
            moverModule           = new MoverModule(logger, taskModule, workerModule, buildingModule);
            takerModule           = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule);
            storerModule          = new StorerModule(logger, taskModule, workerModule, buildingModule, stackModule);

            planetGeneratorModule = new PlanetGeneratorModule(logger, phraseModule, resourceTypeModule, buildingTypeModule, taskTypeModule, materialModule, ingredientModule, productModule, planetModule, cellModule, buildingModule, workerModule);
            if (!planetGeneratorModule.Generate())
            {
                return;
            }

            schedulerModule = new SchedulerModule(logger, taskModule, idlerModule, producerModule, harvesterModule, moverModule, takerModule, storerModule, factoryBuilderModule);
            schedulerModule.Start();


            pioService = new PIOService(
                logger, phraseModule, planetModule, cellModule, buildingModule, workerModule,
                stackModule, resourceTypeModule,
                buildingTypeModule, taskTypeModule, materialModule, ingredientModule, productModule, taskModule,
                schedulerModule,
                resourceCheckerModule, locationCheckerModule, idlerModule, producerModule, harvesterModule, moverModule, takerModule, storerModule,
                factoryBuilderModule);

            pioServiceHostModule = new ServiceHostModule(logger, pioService);
            pioServiceHostModule.Start();

            taskCallbackService           = new TaskCallbackService(logger, schedulerModule);
            taskCallbackServiceHostModule = new ServiceHostModule(logger, taskCallbackService);
            taskCallbackServiceHostModule.Start();

            WaitHandle.WaitAny(new WaitHandle[] { quitEvent }, -1);

            taskCallbackServiceHostModule.Stop();
            pioServiceHostModule.Stop();
            schedulerModule.Stop();

            Console.CancelKeyPress -= new ConsoleCancelEventHandler(Console_CancelKeyPress);
        }
コード例 #18
0
    /// ------------------------------------- PUBLIC METHODS ----------------------------------- ///

    /// <summary>
    /// Public method calls to have this building build a new module if not already full
    /// </summary>
    public void BuildNewModule()
    {
        if (mEmptySlots == 0)
        {
            Debug.Log("This building is full and can't build anymore modules");
            return;
        }

        CameraShaker camShake = GetComponent <CameraShaker>();
        AudioSource  audio    = GetComponent <AudioSource>();

        // special case - if it's the first module, make it a door.
        if (mEmptySlots == mBuildingWidth * mBuildingHeight)
        {
            int doorSlot = (int)(((mBuildingWidth * 0.5f) - 1));
            mSlots[doorSlot].GetComponent <BuildingSlot>().SetBuildingModule(mModuleSet.mDoorModules[0]);
            mSlots[doorSlot].GetComponent <BuildingSlot>().mIsDoor = true;
            mLastModuleBuiltIndex = doorSlot;
            mEmptySlots          -= 1;

            // add in little camera shake when building a new module
            if (camShake)
            {
                camShake.ShakeCamera();
            }

            if (audio)
            {
                audio.Play();
            }

            return;
        }


        //Debug.Log("Building a new module in building " + gameObject);
        // select which slot to fill next based on what module was built last
        int nextSlot = SelectNextSlotToBuild();

        if (nextSlot < 0)
        {
            Debug.LogError("Took too long choosing a random slot, didn't build anything. Try again.");
            return;
        }

        NeighborState  neighbors   = CheckNeighborSlots(nextSlot);
        BuildingModule firstModule = mModuleSet.GetModuleOfType(neighbors);

        mSlots[nextSlot].GetComponent <BuildingSlot>().SetBuildingModule(firstModule);
        mEmptySlots -= 1;

        // add in little camera shake when building a new module
        if (camShake)
        {
            camShake.ShakeCamera();
        }

        if (audio)
        {
            audio.Play();
        }

        // update neighbor state for all slots to adjust module types if needed
        for (int i = 0; i < mSlots.Count; i++)
        {
            BuildingSlot slot = mSlots[i].GetComponent <BuildingSlot>();

            // if this slot is still empty, don't care about its neighbors yet
            if (slot.IsSlotEmpty())
            {
                continue;
            }

            NeighborState nState = CheckNeighborSlots(i);

            // if this slot's neighbors haven't changed, no need to update
            if (nState == slot.mModuleType)
            {
                continue;
            }

            if (slot.mModuleType != NeighborState.empty)
            {
                slot.mModuleType = nState;
                BuildingModule module = mModuleSet.GetModuleOfType(slot.mModuleType);
                if (slot.mIsDoor)
                {
                    slot.SetBuildingModule(mModuleSet.mDoorModules[(int)slot.mModuleType]);
                }
                else
                {
                    slot.SetBuildingModule(module);
                }
            }
        }
    }
コード例 #19
0
 public SelfResourceManager(BuildingModule module)
 {
     this.m_BuildingModule = module;
 }