Exemplo n.º 1
0
        public Ship GetShip()
        {
            //var builder = new ShipBuilder(Owner, Battle, x, endx, y, endy, isHorizontal);
            IShipBuilder        shipabstractbuilder = new ShipBuilder(Owner, Battle, x, endx, y, endy, isHorizontal);
            AbstractShipBuilder builder             = new AbstractShipBuilder(shipabstractbuilder);

            ShipChain buildReset       = new BuildReset(builder);
            ShipChain buildBase        = new BuildBase(builder);
            ShipChain buildCoordinates = new BuildCoordinates(builder);
            ShipChain buildSize        = new BuildSize(builder);

            buildReset.SetNextChain(buildBase);
            buildBase.SetNextChain(buildCoordinates);
            buildCoordinates.SetNextChain(buildSize);
            buildSize.SetNextChain(null);

            ShipChain mainBuild = buildReset;

            mainBuild.Build();
            System.Diagnostics.Debug.WriteLine("Chain of responsibility: shipbuilding chain executed");

            //builder.BuildBase();
            //builder.BuildCoordinates();
            //builder.BuildSize();

            return(builder.GetShip());
        }
Exemplo n.º 2
0
    void BuildClick(BuildBase build)
    {
        m_CurentBuild   = build;
        m_NameText.text = build.Name;
        m_DesText.text  = build.Des;
        m_CoinText.text = build.Coin.ToString();
        //更新可以随机的英雄图标
        foreach (GameObject go in m_HeroIconList)
        {
            ObjectManager.Instance.ReleaseObject(go);
        }
        m_HeroIconList.Clear();
        List <HeroBase> heroBases = HeroManager.Instance.GetRaceHeroList(build.RaceType);

        foreach (HeroBase hero in heroBases)
        {
            GameObject heroGo = ObjectManager.Instance.InstantiateObject(Consts.UI_GridItem);
            heroGo.transform.SetParent(m_HeroGrid);
            heroGo.GetComponent <GridItem>().Init(Tools.LoadSprite(hero.IconPath), () =>
            {
                uiManager.PushPanel(UIPanelType.HeroInfoPanel, paramList: new object[] { hero });
            });

            m_HeroIconList.Add(heroGo);
        }
    }
Exemplo n.º 3
0
    void RaceBtnClick(GameObject itemGo, BuildBase build)
    {
        ImgHide(m_RaceHide, itemGo.transform);
        if (m_HeroHide != null)
        {
            m_HeroHide.gameObject.SetActive(false);
        }
        ChangeUI(build.Name, build.Des, Tools.LoadSprite(build.IconPath));
        //更新英雄
        foreach (GameObject go in m_HeroUIList)
        {
            ObjectManager.Instance.ReleaseObject(go);
        }
        m_HeroUIList.Clear();
        List <HeroBase> heroList = HeroManager.Instance.GetRaceHeroList(build.RaceType);

        foreach (HeroBase hero in heroList)
        {
            GameObject gridItem = ObjectManager.Instance.InstantiateObject(Consts.UI_GridItem);
            gridItem.transform.SetParent(m_HeroGrid);
            gridItem.GetComponent <GridItem>().Init(Tools.LoadSprite(hero.IconPath), () => {
                HeroBtnClick(gridItem, hero);
            });
            m_HeroUIList.Add(gridItem);
        }
        float width = heroList.Count * 40 > ((RectTransform)m_HeroGrid.parent).rect.width ? heroList.Count * 40 : ((RectTransform)m_HeroGrid.parent).rect.width;

        m_HeroGrid.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
        //更新升级项
        ChangeEvolutionItem(m_RaceEvoluDict[build.RaceType]);
    }
        private void StepOut()
        {
            if (this.stack.Count <= 1)
            {
                return;
            }

            BuildBase previousBuild = this.stack.Pop();

            this.UpdateBreadcrumb();
            this.UpdateBuildTimelineListBox(this.stack.Peek());

            BuildTimeline previousBt = this.BuildTimelineListBox.Items.OfType <BuildTimeline>().SingleOrDefault(x => x.Build == previousBuild);

            if (previousBt == null)
            {
                previousBt = this.BuildTimelineListBox.Items.OfType <BuildTimeline>().FirstOrDefault();
            }

            this.BuildTimelineListBox.SelectedItem = previousBt;
            this.BuildTimelineListBox.UpdateLayout();
            ListBoxItem listBoxItem = (ListBoxItem)this.BuildTimelineListBox.ItemContainerGenerator.ContainerFromItem(previousBt);

            listBoxItem.Focus();
        }
Exemplo n.º 5
0
        public void DA_corrected_matrix_2_row_data()
        {
            initData_classdata_4_rows_2_class();

            //double[] meanMatrix =
            //    new double[] { 60, 107.5 };

            BuildBase lda =
                getBuildAndAssignValues();

            PrivateObject obj = new PrivateObject(lda);

            double[] meanMatrix = (double[])obj.Invoke(
                "getDataSetMeanMatrix",
                new object[] { });


            List <double[][]> correctedData = (List <double[][]>)obj.Invoke("getCorrectedDataMatrix",
                                                                            new object[] { _classInputMatrix, meanMatrix });

            double[][] tmp = correctedData[0];
            Assert.IsTrue(tmp[0][0] == 40);
            Assert.IsTrue(tmp[0][1] == 0);
            Assert.IsTrue(tmp[1][0] == 92.5);
            Assert.IsTrue(tmp[1][1] == -27.5);

            tmp = correctedData[1];
            Assert.IsTrue(tmp[0][0] == -30);
            Assert.IsTrue(tmp[0][1] == -10);
            Assert.IsTrue(tmp[1][0] == -15.5);
            Assert.IsTrue(tmp[1][1] == -49.5);
        }
 public void BuildInteraction(BuildBase buildBase)
 {
     if (buildBase.PercenTime < 1)
     {
         return;
     }
     if (buildBase is HospitalBuild)
     {
         buildBase.Interact(new System.Action <int>((int x) =>
         {
             healthSystem.health += x;
         }));
     }
     else if (buildBase is WoodBuild)
     {
         buildBase.Interact(new System.Action <int>((int y) =>
         {
             allwoodCount += y;
             charackterShoulderInventory.SyncItem(allwoodCount);
         }));
     }
     else if (buildBase is EnternewWorldBuild)
     {
         buildBase.Interact();
     }
 }
Exemplo n.º 7
0
    /// <summary>
    /// 移除建筑物
    /// </summary>
    /// <param name="buildBase"></param>
    public void RemoveBuildBaes(BuildBase buildBase)
    {
        Vector3 buildPosition = buildBase.buildBaseData.buildPosition.GetVector3();

        if (dicBuildBase.ContainsKey(buildPosition))
        {
            dicBuildBase.Remove(buildPosition);
        }
    }
Exemplo n.º 8
0
 /// <summary>
 /// 获取建筑模型
 /// </summary>
 /// <param name="buildTypeEnum"></param>
 /// <param name="name"></param>
 /// <param name="buildRule"></param>
 public GameObject GetBuildBaseModel(BuildBase centerBuildBase, BuildRuleEnum buildRule, string name)
 {
     if (dicBuildBaseForBuilding.TryGetValue(name, out BuildBaseManager buildBaseManager))
     {
         List <BuildBase> listAroundBuildBase = GetAroundBuildBase(centerBuildBase);
         return(buildBaseManager.GetBuildBaseModel(listAroundBuildBase, centerBuildBase, buildRule));
     }
     return(null);
 }
Exemplo n.º 9
0
    /// <summary>
    /// 通过坐标获取建筑
    /// </summary>
    /// <param name="listData"></param>
    /// <param name="position"></param>
    /// <returns></returns>
    public List <BuildBase> GetBuildBaseByPosition(List <BuildBase> listData, Vector3 position)
    {
        BuildBase buildBase = GetBuildBaseByPosition(position);

        if (buildBase)
        {
            listData.Add(buildBase);
        }
        return(listData);
    }
Exemplo n.º 10
0
 /// <summary>
 /// 建造动画
 /// </summary>
 /// <param name="buildType"></pa ram>
 /// <param name="build"></param>
 public void AnimForBuild(BuildTypeEnum buildType, BuildBase buildBase)
 {
     switch (buildType)
     {
         case BuildTypeEnum.Building:
             buildBase.AnimForBuild();
             break;
         case BuildTypeEnum.Foundation:
             break;
     }
 }
Exemplo n.º 11
0
    public void CreateAllBuild(string modelName)
    {
        BuildHandler.Instance.manager.LoadBuildBaseRes(BuildTypeEnum.Building, modelName);

        List <BuildRuleEnum> ruleList = EnumUtil.GetEnumValue <BuildRuleEnum>();

        for (int i = 0; i < ruleList.Count; i++)
        {
            BuildRuleEnum itemRule = ruleList[i];
            GameObject    objModel = BuildHandler.Instance.manager.GetBuildBaseModel(null, itemRule, modelName);
            GameObject    objBuild = Instantiate(gameObject, modelBuilding.gameObject);

            BuildBase buildBase = objBuild.GetComponent <BuildBase>();

            BuildBaseBean buildBaseData = new BuildBaseBean();
            Vector3       centerPostion = new Vector3(i * 5, 0, 0);
            buildBaseData.SetBuildPosition(centerPostion);
            buildBaseData.SetBuildRule(itemRule);
            buildBaseData.SetBuildType(BuildTypeEnum.Building);

            buildBase.SetBuilBaseData(buildBaseData);
            objBuild.transform.position = centerPostion;

            BuildHandler.Instance.manager.AddBuildBase(buildBase);
            buildBase.AutoCheckBuildRule();
            BuildRuleEnumTool.GetBuildRuleData(itemRule, out int number, out bool up, out bool down, out bool left, out bool right, out bool before, out bool after);
            if (up)
            {
                CreateBuildItem(centerPostion + new Vector3(0, 1, 0));
            }
            if (down)
            {
                CreateBuildItem(centerPostion + new Vector3(0, -1, 0));
            }
            if (left)
            {
                CreateBuildItem(centerPostion + new Vector3(-1, 0, 0));
            }
            if (right)
            {
                CreateBuildItem(centerPostion + new Vector3(1, 0, 0));
            }
            if (before)
            {
                CreateBuildItem(centerPostion + new Vector3(0, 0, -1));
            }
            if (after)
            {
                CreateBuildItem(centerPostion + new Vector3(0, 0, 1));
            }
            buildBase.AutoCheckBuildRule();
        }
    }
Exemplo n.º 12
0
    /// <summary>
    /// 增加建筑物
    /// </summary>
    /// <param name="buildBase"></param>
    public void AddBuildBase(BuildBase buildBase)
    {
        Vector3 buildPosition = buildBase.buildBaseData.buildPosition.GetVector3();

        if (dicBuildBase.ContainsKey(buildPosition))
        {
            dicBuildBase[buildPosition] = buildBase;
        }
        else
        {
            dicBuildBase.Add(buildPosition, buildBase);
        }
    }
Exemplo n.º 13
0
    /// <summary>
    /// 检测并且修建
    /// </summary>
    public void CheckAndBuild()
    {
        if (timeForBuildDelay > 0)
        {
            return;
        }
        RayUtil.RayToScreenPoint(out bool isCollider, out RaycastHit hit);
        if (!isCollider)
        {
            return;
        }
        BuildBase buildBase = hit.collider.GetComponent <BuildBase>();

        if (buildBase != null)
        {
            Vector3 hitPosition    = hit.point;
            Vector3 offsetPosition = new Vector3(0, 0, 0);
            Vector3 buildPosition  = buildBase.transform.position;
            if (hitPosition.x == buildPosition.x + 0.5f)
            {
                offsetPosition = new Vector3(1, 0, 0);
            }
            else if (hitPosition.x == buildPosition.x - 0.5f)
            {
                offsetPosition = new Vector3(-1, 0, 0);
            }
            else if (hitPosition.y == buildPosition.y + 0.5f)
            {
                offsetPosition = new Vector3(0, 1, 0);
            }
            else if (hitPosition.y == buildPosition.y - 0.5f)
            {
                offsetPosition = new Vector3(0, -1, 0);
            }
            else if (hitPosition.z == buildPosition.z + 0.5f)
            {
                offsetPosition = new Vector3(0, 0, 1);
            }
            else if (hitPosition.z == buildPosition.z - 0.5f)
            {
                offsetPosition = new Vector3(0, 0, -1);
            }
            //判断该点是否有建筑
            Vector3 newBuildPosition = buildPosition + offsetPosition;
            if (!GameDataHandler.Instance.CheckHasBuild(newBuildPosition) && !GameDataHandler.Instance.CheckBorder(newBuildPosition))
            {
                timeForBuildDelay = 0;
                BuildHandler.Instance.CreateBuildBase <BuildForBuilding>(BuildTypeEnum.Building, newBuildPosition);
            }
        }
    }
Exemplo n.º 14
0
        public void DA_dataset_mean_2_row_data()
        {
            initData_dataset_2_rows();
            BuildBase lda =
                getBuildAndAssignValues();

            PrivateObject obj = new PrivateObject(lda);

            double[] means = (double[])obj.Invoke("getDataSetMeanMatrix",
                                                  new object[] {});

            Assert.IsTrue(means[0] == 80);
            Assert.IsTrue(means[1] == 140);
        }
Exemplo n.º 15
0
    /// <summary>
    /// 检测并且拆除
    /// </summary>
    public void CheckAndDemolition()
    {
        RayUtil.RayToScreenPoint(out bool isCollider, out RaycastHit hit);
        if (!isCollider)
        {
            return;
        }
        BuildBase buildBase = hit.collider.GetComponent <BuildBase>();

        if (buildBase != null && buildBase.buildBaseData.GetBuildType() == BuildTypeEnum.Building)
        {
            BuildHandler.Instance.DestroyBuildBase(buildBase);
        }
    }
Exemplo n.º 16
0
        public void DA_dataset_mean_7_row_data_example()
        {
            initData_dataset_7_row_2_class_example();
            BuildBase lda =
                getBuildAndAssignValues();


            PrivateObject obj = new PrivateObject(lda);

            double[] means = (double[])obj.Invoke("getDataSetMeanMatrix",
                                                  new object[] {  });

            Assert.IsTrue(means[0] >= 2.87 && means[0] <= 2.89);
            Assert.IsTrue(means[1] >= 5.66 && means[0] <= 5.69);
        }
Exemplo n.º 17
0
 /// <summary>
 /// 获取建筑模型
 /// </summary>
 /// <param name="buildRule"></param>
 /// <returns></returns>
 public GameObject GetBuildBaseModel(List <BuildBase> listAroundBuildBase, BuildBase centerBuildBase, BuildRuleEnum buildRule)
 {
     if (dicBuildRule.TryGetValue(buildRule, out BuildBaseModelBean modelData))
     {
         if (modelData != null)
         {
             if (!CheckUtil.ListIsNull(listAroundBuildBase))
             {
                 //是否有地面方块
                 bool          hasGround       = false;
                 BuildRuleEnum centerBuildRule = centerBuildBase.buildBaseData.GetBuildRule();
                 //检测周围方块
                 for (int i = 0; i < listAroundBuildBase.Count; i++)
                 {
                     BuildBase itemBuildBase = listAroundBuildBase[i];
                     //检测是否下面有砖块,并且砖块为地基
                     if (BuildRuleEnumTool.CheckHasDown(centerBuildRule) &&
                         (itemBuildBase.buildBaseData.GetBuildType() == BuildTypeEnum.Foundation || itemBuildBase.buildBaseData.GetBuildType() == BuildTypeEnum.Ground))
                     {
                         hasGround = true;
                     }
                 }
                 //如果有地面方块,则使用地基层
                 if (hasGround)
                 {
                     if (!CheckUtil.ListIsNull(modelData.listBaseModel))
                     {
                         return(RandomUtil.GetRandomDataByList(modelData.listBaseModel));
                     }
                 }
             }
             if (!CheckUtil.ListIsNull(modelData.listObjModel))
             {
                 return(RandomUtil.GetRandomDataByList(modelData.listObjModel));
             }
         }
     }
     if (dicBuildRule.TryGetValue(BuildRuleEnum.Zero, out BuildBaseModelBean modelDataZero))
     {
         if (!CheckUtil.ListIsNull(modelDataZero.listObjModel))
         {
             return(modelDataZero.listObjModel[0]);
         }
     }
     return(null);
 }
Exemplo n.º 18
0
    /// <summary>
    /// 拆除建筑
    /// </summary>
    /// <param name="buildBase"></param>
    public void DestroyBuildBase(BuildBase buildBase)
    {
        //获取周围方块
        List<BuildBase> listAroundBuild = manager.GetAroundBuildBase(buildBase);

        //移除数据
        GameDataHandler.Instance.manager.RemoveSceneListBuildData(buildBase.buildBaseData);
        manager.RemoveBuildBaes(buildBase);
        DestroyImmediate(buildBase.gameObject);

        //改变周围方块状态
        for (int i = 0; i < listAroundBuild.Count; i++)
        {
            BuildBase itemBase = listAroundBuild[i];
            itemBase.AutoCheckBuildRule();
        }

    }
Exemplo n.º 19
0
    /// <summary>
    /// 获取周围6格格子
    /// </summary>
    /// <param name="centerBuildBase"></param>
    public List <BuildBase> GetAroundBuildBase(BuildBase centerBuildBase)
    {
        List <BuildBase> listData = new List <BuildBase>();

        if (centerBuildBase == null)
        {
            return(listData);
        }
        Vector3 centerPosition = centerBuildBase.buildBaseData.buildPosition.GetVector3();

        listData = GetBuildBaseByPosition(listData, centerPosition + new Vector3(1, 0, 0));
        listData = GetBuildBaseByPosition(listData, centerPosition + new Vector3(-1, 0, 0));
        listData = GetBuildBaseByPosition(listData, centerPosition + new Vector3(0, 1, 0));
        listData = GetBuildBaseByPosition(listData, centerPosition + new Vector3(0, -1, 0));
        listData = GetBuildBaseByPosition(listData, centerPosition + new Vector3(0, 0, 1));
        listData = GetBuildBaseByPosition(listData, centerPosition + new Vector3(0, 0, -1));
        return(listData);
    }
Exemplo n.º 20
0
        public void DA_covariance_matrix_example_data()
        {
            initData_dataset_7_row_2_class_example();


            List <double[][]> allData = new List <double[][]>();

            allData.Add(_classMatrix1);
            allData.Add(_classMatrix2);

            BuildBase lda =
                getBuildAndAssignValues();

            PrivateObject obj = new PrivateObject(lda);

            double[] meanMatrix = (double[])obj.Invoke(
                "getDataSetMeanMatrix",
                new object[] {});

            List <double[][]> correctedData = (List <double[][]>)obj.Invoke("getCorrectedDataMatrix",
                                                                            new object[] { allData,
                                                                                           meanMatrix });

            List <double[][]> covMatrix = (List <double[][]>)obj.Invoke("getCoVarianceMatrix",
                                                                        new object[] { correctedData });

            double[][] tmp = covMatrix[0];
            Assert.AreEqual(tmp.Length, 2);
            Assert.AreEqual(tmp[0].Length, 2);

            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][0], 0.166));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][1], -.192));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][0], -.192));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][1], 1.349));


            tmp = covMatrix[1];
            Assert.AreEqual(tmp.Length, 2);
            Assert.AreEqual(tmp[0].Length, 2);
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][0], 0.259));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][1], -0.286));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][0], -0.286));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][1], 2.142));
        }
Exemplo n.º 21
0
        public void DA_pooled_covariance_matrix_example()
        {
            initData_dataset_7_row_2_class_example();

            List <double[][]> allData = new List <double[][]>();

            allData.Add(_classMatrix1);
            allData.Add(_classMatrix2);

            BuildBase lda =
                getBuildAndAssignValues();

            PrivateObject obj = new PrivateObject(lda);

            double[] probabilityMatrix = (double[])obj.Invoke(
                "getClassProbabilities",
                new object[] { allData });

            double[] meanMatrix = (double[])obj.Invoke(
                "getDataSetMeanMatrix",
                new object[] {  });

            List <double[][]> correctedData = (List <double[][]>)obj.Invoke("getCorrectedDataMatrix",
                                                                            new object[] { allData,
                                                                                           meanMatrix });

            List <double[][]> covMatrix = (List <double[][]>)obj.Invoke("getCoVarianceMatrix",
                                                                        new object[] { correctedData });

            double[][] pooledCoVarMatrix = (double[][])obj.Invoke(
                "getPooledCoVarianceMatrix",
                new object[] { covMatrix,
                               probabilityMatrix });

            Assert.AreEqual(pooledCoVarMatrix.Length, 2);
            Assert.AreEqual(pooledCoVarMatrix[0].Length, 2);

            Assert.IsTrue(SupportFunctions.DoubleCompare(pooledCoVarMatrix[0][0], 0.206));
            Assert.IsTrue(SupportFunctions.DoubleCompare(pooledCoVarMatrix[0][1], -0.233));
            Assert.IsTrue(SupportFunctions.DoubleCompare(pooledCoVarMatrix[1][0], -0.233));
            Assert.IsTrue(SupportFunctions.DoubleCompare(pooledCoVarMatrix[1][1], 1.689));
        }
Exemplo n.º 22
0
        //This assume assignment to local class values is done
        protected void setPrivateVariablesInBuildObject(BuildBase buildBase)
        {
            var prop = buildBase.GetType().GetField("_noOfAttributes", System.Reflection.BindingFlags.NonPublic
                                                    | System.Reflection.BindingFlags.Instance);

            prop.GetValue(buildBase);
            prop.SetValue(buildBase, _trainingData.Length - 1);

            prop = buildBase.GetType().GetField("_trainingData", System.Reflection.BindingFlags.NonPublic
                                                | System.Reflection.BindingFlags.Instance);
            prop.SetValue(buildBase, _trainingData);

            prop = buildBase.GetType().GetField("_indexTargetAttribute", System.Reflection.BindingFlags.NonPublic
                                                | System.Reflection.BindingFlags.Instance);
            prop.SetValue(buildBase, _indexTargetAttribute);

            prop = buildBase.GetType().GetField("_noOfDataSamples", System.Reflection.BindingFlags.NonPublic
                                                | System.Reflection.BindingFlags.Instance);
            prop.SetValue(buildBase, _trainingData[0].Length);
        }
Exemplo n.º 23
0
        public void DA_corrected_matrix_example_data()
        {
            initData_dataset_7_row_2_class_example();


            List <double[][]> allData = new List <double[][]>();

            allData.Add(_classMatrix1);
            allData.Add(_classMatrix2);

            BuildBase lda =
                getBuildAndAssignValues();

            PrivateObject obj = new PrivateObject(lda);

            double[] meanMatrix = (double[])obj.Invoke(
                "getDataSetMeanMatrix",
                new object[] { });

            List <double[][]> correctedData = (List <double[][]>)obj.Invoke("getCorrectedDataMatrix",
                                                                            new object[] { allData,
                                                                                           meanMatrix });

            double[][] tmp = correctedData[0];
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][0], 0.060));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][1], -.357));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][2], 0.679));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][3], 0.269));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][0], 0.951));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][1], 2.109));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][2], -0.025));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][3], -.209));

            tmp = correctedData[1];
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][0], -.305));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][1], -0.732));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[0][2], 0.386));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][0], -1.218));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][1], 0.547));
            Assert.IsTrue(SupportFunctions.DoubleCompare(tmp[1][2], -2.155));
        }
Exemplo n.º 24
0
    /// <summary>
    /// 创建一个建筑
    /// </summary>
    /// <param name="buildPosition"></param>
    public T CreateBuildBase<T>(BuildTypeEnum buildType, Vector3 buildPosition) where T : BuildBase
    {
        BuildBase modelBuild = null;
        //设置建造数据
        BuildBaseBean buildBaseData = new BuildBaseBean();
        buildBaseData.SetBuildType(buildType);
        buildBaseData.SetBuildRule(BuildRuleEnum.Zero);
        buildBaseData.SetBuildPosition(buildPosition);
        //生成不同的模型
        switch (buildType)
        {
            case BuildTypeEnum.Building:
                modelBuild = modelForBuilding;
                break;
            case BuildTypeEnum.Foundation:
                modelBuild = modelForFoundation;
                break;
        }
        if (modelBuild == null)
            return null;
        GameObject objBuild = Instantiate(gameObject, modelBuild.gameObject, buildPosition);
        T cptBuild = objBuild.GetComponent<T>();
        cptBuild.SetBuilBaseData(buildBaseData);

        //增加数据
        GameDataHandler.Instance.manager.AddSceneListBuildData(buildBaseData);
        manager.AddBuildBase(cptBuild);
        //建筑动画
        AnimForBuild(buildType, cptBuild);

        //获取周围方块
        List<BuildBase> listAroundBuild = manager.GetAroundBuildBase(cptBuild);
        //改变周围方块状态
        for (int i = 0; i < listAroundBuild.Count; i++)
        {
            BuildBase itemBase = listAroundBuild[i];
            itemBase.AutoCheckBuildRule();
        }

        return cptBuild;
    }
Exemplo n.º 25
0
    /// <summary>
    /// 获取建筑规则
    /// </summary>
    /// <param name="listData"></param>
    public virtual BuildRuleEnum GetBuildRule(List <BuildBase> listData)
    {
        bool upRule     = false;
        bool downRule   = false;
        bool leftRule   = false;
        bool rightRule  = false;
        bool beforeRule = false;
        bool afterRule  = false;

        for (int i = 0; i < listData.Count; i++)
        {
            BuildBase buildBase = listData[i];
            Vector3   tempRule  = (buildBaseData.buildPosition.GetVector3() - buildBase.buildBaseData.buildPosition.GetVector3());
            if (tempRule.y == 1)
            {
                downRule = true;
            }
            if (tempRule.y == -1)
            {
                upRule = true;
            }
            if (tempRule.x == 1)
            {
                leftRule = true;
            }
            if (tempRule.x == -1)
            {
                rightRule = true;
            }
            if (tempRule.z == 1)
            {
                beforeRule = true;
            }
            if (tempRule.z == -1)
            {
                afterRule = true;
            }
        }
        return(BuildRuleEnumTool.GetBuildRule(listData.Count, upRule, downRule, leftRule, rightRule, beforeRule, afterRule));
    }
Exemplo n.º 26
0
        public void DA_probability_class_matrix_example()
        {
            initData_dataset_7_row_2_class_example();

            List <double[][]> allData = new List <double[][]>();

            allData.Add(_classMatrix1);
            allData.Add(_classMatrix2);

            BuildBase lda =
                getBuildAndAssignValues();

            PrivateObject obj = new PrivateObject(lda);

            double[] probabilityMatrix = (double[])obj.Invoke(
                "getClassProbabilities",
                new object[] { allData });

            Assert.AreEqual(probabilityMatrix.Length, 2);

            Assert.IsTrue(SupportFunctions.DoubleCompare(probabilityMatrix[0], (4.0 / 7.0)));
            Assert.IsTrue(SupportFunctions.DoubleCompare(probabilityMatrix[1], (3.0 / 7.0)));
        }
Exemplo n.º 27
0
    protected void CreateBuildItem(Vector3 position)
    {
        GameObject objBuild = Instantiate(gameObject, modelBuilding.gameObject);

        BuildBase buildBase = objBuild.GetComponent <BuildBase>();

        BuildBaseBean buildBaseData = new BuildBaseBean();

        buildBaseData.SetBuildPosition(position);
        buildBaseData.SetBuildRule(BuildRuleEnum.Zero);
        buildBaseData.SetBuildType(BuildTypeEnum.Building);

        buildBase.SetBuilBaseData(buildBaseData);
        objBuild.transform.position = position;

        buildBase.AutoCheckBuildRule();

        Renderer[] rendererArrary = buildBase.GetComponentsInChildren <Renderer>();
        foreach (Renderer renderer in rendererArrary)
        {
            renderer.material.color = Color.black;
        }
        BuildHandler.Instance.manager.AddBuildBase(buildBase);
    }
Exemplo n.º 28
0
    void DoBuildLogic()
    {
        // Check if we got a building an show its information
        if (doShowInfo)
        {
            if (Physics.Raycast(_cam.ScreenPointToRay(Input.mousePosition), out hit, 100, InfoLayer))
            {
                var info = hit.collider.gameObject.GetComponent <BuildInformation> ();

                if (info != null)
                {
                    if (CurrentInfo == info)
                    {
                        HideBuildInfo();
                    }
                    else
                    {
                        ShowInfo(info);
                    }
                }
            }
            else
            {
                HideBuildInfo();
            }
        }

        // Let the build material flicker
        if (CurrentBuilding != null)
        {
            var canBuild = Money >= CurrentBuilding.Money;

            BuildMaterial.SetColor(buildMatTintColorId, new Color(
                                       canBuild ? 0 : 1,
                                       canBuild ? 1 : 0,
                                       0,
                                       (Mathf.Sin(Time.realtimeSinceStartup * 8f) / 8) + .25f));


            // General building raycast
            if (Physics.Raycast(_cam.ScreenPointToRay(Input.mousePosition), out hit, 100, BuildLayer))
            {
                // Show new highlight
                if (lastHighlight != hit.collider.gameObject)
                {
                    if (lastHighlight != null)
                    {
                        lastHighlight.Hide();
                        lastHighlight = null;
                    }

                    lastHighlight = hit.collider.gameObject.GetComponent <BuildBase> ();
                    lastHighlight.Show();
                }

                if (doBuild && canBuild)
                {
                    lastHighlight.Hide();

                    var go = Instantiate(CurrentBuilding.Prefab, lastHighlight.transform.parent);
                    go.GetComponent <BuildInformation> ().Building = CurrentBuilding;

                    lastHighlight.gameObject.SetActive(false);

                    doBuild = false;
                    Money  -= CurrentBuilding.Money;

                    buildingsBuilt++;

                    // TODO ca-tching
                }
            }
            else if (lastHighlight != null)
            {
                lastHighlight.Hide();
                lastHighlight = null;
            }
        }


        // Platform building raycast
        if (Physics.Raycast(_cam.ScreenPointToRay(Input.mousePosition), out hit, 100, PlatformBuildLayer))
        {
            // See if we hit a floor instead (layers are bitmasks, so no easier check here)
            if (hit.collider.gameObject.HasLayer(FloorLayer))
            {
                if (lastPlatformHighlight != null)
                {
                    if (hit.collider.gameObject != lastPlatformHighlight)
                    {
                        lastPlatformHighlight.SetActive(false);
                    }
                    else if (doBuild && Money >= PlatformCost)
                    {
                        // We got a platform we want to build
                        Money -= PlatformCost;

                        // Reset material
                        var renderer = lastPlatformHighlight.GetComponent <MeshRenderer> ();
                        renderer.sharedMaterial = defaultPlatformMaterial;

                        // Reactivate build base so we can build stuff again
                        platformBuildBase.SetActive(true);

                        // reset for next platform
                        lastPlatformHighlight = null;
                        platformRenderer      = null;

                        platformsBuilt++;
                    }
                }
            }
            else
            {
                var snappedToGrid = new Vector3(
                    Mathf.Round((hit.point.x) / .5f) * .5f,
                    0,
                    Mathf.Round((hit.point.z) / .5f) * .5f);

                if (lastPlatformHighlight != null)
                {
                    // Only allow platforms near others, so we do a simple four-directional raycast
                    lastPlatformHighlight.transform.position = snappedToGrid;
                    lastPlatformHighlight.SetActive(
                        Physics.Raycast(snappedToGrid, Vector3.forward, out hit, .5f, FloorLayer) ||
                        Physics.Raycast(snappedToGrid, Vector3.right, out hit, .5f, FloorLayer) ||
                        Physics.Raycast(snappedToGrid, Vector3.back, out hit, .5f, FloorLayer) ||
                        Physics.Raycast(snappedToGrid, Vector3.left, out hit, .5f, FloorLayer));
                }
                else
                {
                    lastPlatformHighlight = Instantiate(PlatformPrefab, snappedToGrid, Quaternion.identity, PlayerBase);

                    platformRenderer        = lastPlatformHighlight.GetComponent <MeshRenderer> ();
                    defaultPlatformMaterial = defaultPlatformMaterial ?? platformRenderer.sharedMaterial;

                    platformBuildBase = FindChildWithBuildLayer(lastPlatformHighlight);
                    platformBuildBase.SetActive(false);
                }
            }
        }

        doBuild    = false;
        doShowInfo = false;
    }