Example #1
0
        /// <summary>
        /// Change the material Color of a building
        /// </summary>
        /// <param name="_b">The Building to change the Material</param>
        /// <param name="_c">The Color to change it</param>
        protected void SetMaterialsColor(ABuilding _b, Color _c)
        {
            Material[] mats;
            if (lastRenderer != null)
            {
                //Reset lastRenderer
                mats = lastRenderer.materials;
                for (int i = 0; i < mats.Length; i++)
                {
                    mats[i].color = lastMaterialColors[i];
                }
                lastRenderer.materials = mats;
            }

            //Set new Renderer
            if (_b == null)
            {
                return;
            }
            lastRenderer = _b.m_ModelMeshRenderer;

            mats = lastRenderer.materials;
            if (mats == null)
            {
                return;
            }

            lastMaterialColors = new Color[mats.Length];
            for (int i = 0; i < mats.Length; i++)
            {
                lastMaterialColors[i] = mats[i].color;
                mats[i].color         = _c;
            }
            lastRenderer.materials = mats;
        }
Example #2
0
        private void CreateUnits()
        {
            if (Gamers != null && Gamers.Length == 2)
            {
                PawnFactory pawnFac = new PawnFactory();
                for (int i = 0; i < BoardConsts.INITIAL_PAWNS; i++)
                {
                    APawn dPawn = pawnFac.Create(ECultures.DALRIONS);
                    dPawn.Position = new Coord(1 + i, 7);
                    Gamers[0].AddPawn(dPawn);

                    APawn rPawn = pawnFac.Create(ECultures.RAHKARS);
                    rPawn.Position = new Coord(BoardConsts.MAX_LIN - 2 - i, BoardConsts.MAX_COL - 8);
                    Gamers[1].AddPawn(rPawn);
                }

                CulturalCenterFactory centFac = new CulturalCenterFactory();
                ABuilding             dCenter = centFac.Create(ECultures.DALRIONS, Boards);
                ABuilding             rCenter = centFac.Create(ECultures.RAHKARS, Boards);

                Gamers[0].SetCultCenter((CulturalCenter)dCenter);
                Gamers[1].SetCultCenter((CulturalCenter)rCenter);
            }
            else
            {
                throw new ArgumentException("Invalid player array!");
            }
        }
Example #3
0
        /// <summary>
        /// Check if the HitPos is over an Building/Area
        /// </summary>
        /// <param name="b"></param>
        /// <returns></returns>
        protected bool CheckAreaCollision(out ABuilding b)
        {
            List <Area> SphereSphere = new List <Area>();

            b = null;

            foreach (Area area in BuildingManager.m_AllAreas)
            {
                if (MyCollision.SphereSphere(new Vector2(m_hitPos.x, m_hitPos.z), 0.8f, new Vector2(area.m_OP.Position.x, area.m_OP.Position.z), area.m_Radius))
                {
                    SphereSphere.Add(area);
                }
            }
            if (SphereSphere.Count == 0)
            {
                return(false);
            }
            else
            {
                int   index           = -1;
                float closestDistance = float.MaxValue;
                for (int i = 0; i < SphereSphere.Count; i++)
                {
                    float distance = Vector3.SqrMagnitude(SphereSphere[i].m_OP.Position - m_hitPos);
                    if (distance < closestDistance)
                    {
                        closestDistance = distance;
                        index           = i;
                    }
                }
                b = SphereSphere[index].m_Building;
                return(true);
            }
        }