Exemplo n.º 1
0
    public void Init(InputPlayerType playerType, ClsnType type, float x, float y, float w, float h)
    {
        m_Type        = type;
        m_PlayerType  = playerType;
        m_CreateTimer = Time.realtimeSinceStartup;
        BoxCollider2D box = this.Box;
        float         rw  = w / 100f;

        if (rw < 0)
        {
            rw = -rw;
        }

        float rh = h / 100f;

        if (rh < 0)
        {
            rh = -rh;
        }


        box.offset = Vector2.zero;
        box.size   = new Vector2(rw, rh);

        var     trans = this.transform;
        Vector2 pos   = new Vector2((x + w / 2f) / 100f, -(y + h / 2f) / 100f);

        trans.localPosition = pos;
        trans.localRotation = Quaternion.identity;
    }
Exemplo n.º 2
0
        public Collision(Entity lhs, ClsnType lhstype, Entity rhs, ClsnType rhstype)
        {
            if (lhs == null)
            {
                throw new ArgumentNullException("lhs");
            }
            if (rhs == null)
            {
                throw new ArgumentNullException("rhs");
            }

            m_lhs         = lhs;
            m_lhsclsntype = lhstype;
            m_rhs         = rhs;
            m_rhsclsntype = rhstype;
            m_type        = CollisionType.None;

            if (Left is Player && LeftClsnType == ClsnType.Type2Normal && Right is Player && RightClsnType == ClsnType.Type2Normal)
            {
                m_type = CollisionType.PlayerPush;
            }
            else if (Left is Character && LeftClsnType == ClsnType.Type1Attack && Right is Character && RightClsnType == ClsnType.Type2Normal)
            {
                m_type = CollisionType.CharacterHit;
            }
            else if (Left is Projectile && LeftClsnType == ClsnType.Type1Attack && Right is Character && RightClsnType == ClsnType.Type2Normal)
            {
                m_type = CollisionType.ProjectileHit;
            }
            else if (Left is Projectile && LeftClsnType == ClsnType.Type1Attack && Right is Projectile && RightClsnType == ClsnType.Type1Attack)
            {
                m_type = CollisionType.ProjectileCollision;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates a new collision box.
        /// </summary>
        /// <param name="line">A line of text representing a collision box.</param>
        /// <param name="overridetype">The type of collision box to be created.</param>
        /// <returns>A new instance of the Clsn class if it could be created; null otherwise.</returns>
        Clsn?CreateClsn(String line, ClsnType overridetype)
        {
            if (String.Compare(line, 0, "Clsn", 0, 4, StringComparison.OrdinalIgnoreCase) != 0)
            {
                return(null);
            }

            Match match = m_clsnlineregex.Match(line);

            if (match.Success == false)
            {
                return(null);
            }

            //if (String.Equals(match.Groups[1].Value, "1") == true) clsn.Type = ClsnType.Type1Attack;
            //if (String.Equals(match.Groups[1].Value, "2") == true) clsn.Type = ClsnType.Type2Normal;

            Int32 x1 = Int32.Parse(match.Groups[3].Value);
            Int32 y1 = Int32.Parse(match.Groups[4].Value);
            Int32 x2 = Int32.Parse(match.Groups[5].Value);
            Int32 y2 = Int32.Parse(match.Groups[6].Value);

            if (x1 > x2)
            {
                Misc.Swap(ref x1, ref x2);
            }
            if (y1 > y2)
            {
                Misc.Swap(ref y1, ref y2);
            }

            return(new Clsn(overridetype, new Rectangle(x1, y1, x2 - x1, y2 - y1)));
        }
Exemplo n.º 4
0
    public Clsn CreateClsnBox(InputPlayerType playerType, string name, Transform parent, float x, float y, float w, float h, bool isClsn2 = true)
    {
        Clsn r = GetClsnColliderFromPool(name);

        if (r == null)
        {
            return(r);
        }

        var trans = r.transform;

        if (trans.parent != parent)
        {
            trans.SetParent(parent, false);
        }

        ClsnType tt = isClsn2 ? ClsnType.def: ClsnType.attack;

        r.Init(playerType, tt, x, y, w, h);

        if (!r.gameObject.activeSelf)
        {
            r.gameObject.SetActive(true);
        }

        return(r);
    }
Exemplo n.º 5
0
		public Collision(Entity lhs, ClsnType lhstype, Entity rhs, ClsnType rhstype)
		{
			if (lhs == null) throw new ArgumentNullException("lhs");
			if (rhs == null) throw new ArgumentNullException("rhs");

			m_lhs = lhs;
			m_lhsclsntype = lhstype;
			m_rhs = rhs;
			m_rhsclsntype = rhstype;
			m_type = CollisionType.None;

			if (Left is Player && LeftClsnType == ClsnType.Type2Normal && Right is Player && RightClsnType == ClsnType.Type2Normal)
			{
				m_type = CollisionType.PlayerPush;
			}
			else if (Left is Character && LeftClsnType == ClsnType.Type1Attack && Right is Character && RightClsnType == ClsnType.Type2Normal)
			{
				m_type = CollisionType.CharacterHit;
			}
			else if (Left is Projectile && LeftClsnType == ClsnType.Type1Attack && Right is Character && RightClsnType == ClsnType.Type2Normal)
			{
				m_type = CollisionType.ProjectileHit;
			}
			else if (Left is Projectile && LeftClsnType == ClsnType.Type1Attack && Right is Projectile && RightClsnType == ClsnType.Type1Attack)
			{
				m_type = CollisionType.ProjectileCollision;
			}
		}
Exemplo n.º 6
0
        public static Boolean HasCollision(Entity lhs, ClsnType lhstype, Entity rhs, ClsnType rhstype)
        {
            if (lhs == null)
            {
                throw new ArgumentNullException("lhs");
            }
            if (rhs == null)
            {
                throw new ArgumentNullException("rhs");
            }

            foreach (Animations.Clsn lhs_clsn in lhs.AnimationManager.CurrentElement)
            {
                if (lhs_clsn.ClsnType != lhstype)
                {
                    continue;
                }

                Rectangle lhs_rect = lhs_clsn.MakeRect(lhs.CurrentLocation, lhs.CurrentScale, lhs.CurrentFacing);

                foreach (Animations.Clsn rhs_clsn in rhs.AnimationManager.CurrentElement)
                {
                    if (rhs_clsn.ClsnType != rhstype)
                    {
                        continue;
                    }

                    Rectangle rhs_rect = rhs_clsn.MakeRect(rhs.CurrentLocation, rhs.CurrentScale, rhs.CurrentFacing);

                    if (lhs_rect.Intersects(rhs_rect) == true)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemplo n.º 7
0
		public static Boolean HasCollision(Entity lhs, ClsnType lhstype, Entity rhs, ClsnType rhstype)
		{
			if (lhs == null) throw new ArgumentNullException("lhs");
			if (rhs == null) throw new ArgumentNullException("rhs");

			foreach (Animations.Clsn lhs_clsn in lhs.AnimationManager.CurrentElement)
			{
				if (lhs_clsn.ClsnType != lhstype) continue;

				Rectangle lhs_rect = lhs_clsn.MakeRect(lhs.CurrentLocation, lhs.CurrentScale, lhs.CurrentFacing);

				foreach (Animations.Clsn rhs_clsn in rhs.AnimationManager.CurrentElement)
				{
					if (rhs_clsn.ClsnType != rhstype) continue;

					Rectangle rhs_rect = rhs_clsn.MakeRect(rhs.CurrentLocation, rhs.CurrentScale, rhs.CurrentFacing);

					if (lhs_rect.Intersects(rhs_rect) == true) return true;
				}
			}

			return false;
		}
Exemplo n.º 8
0
 /// <summary>
 /// Returns a string representation of this object.
 /// </summary>
 /// <returns>A string representation of this object.</returns>
 public override String ToString()
 {
     return(ClsnType.ToString() + " - " + Rectangle.ToString());
 }
Exemplo n.º 9
0
 /// <summary>
 /// Creates a new instance of this class.
 /// </summary>
 /// <param name="clsntype">The type of collision box.</param>
 /// <param name="rectangle">The Rectangle defining the dimensions of the collision box.</param>
 public Clsn(ClsnType clsntype, Rectangle rectangle)
 {
     m_clsntype = clsntype;
     m_rect     = rectangle;
 }
Exemplo n.º 10
0
        /// <summary>
        /// Creates a new Animation.
        /// </summary>
        /// <param name="section">The information used to intialize the Animation.</param>
        /// <returns>A new instance of the Animation class if it could be created; null otherwise.</returns>
        Animation CreateAnimation(TextSection section)
        {
            if (section == null)
            {
                throw new ArgumentNullException("section");
            }

            Match titlematch = m_animationtitleregex.Match(section.Title);

            if (titlematch.Success == false)
            {
                return(null);
            }

            StringComparer sc = StringComparer.OrdinalIgnoreCase;

            Int32 animationnumber            = Int32.Parse(titlematch.Groups[1].Value);
            Int32 loopstart                  = 0;
            Int32 starttick                  = 0;
            List <AnimationElement> elements = new List <AnimationElement>();

            List <Clsn> loading_type1 = new List <Clsn>();
            List <Clsn> loading_type2 = new List <Clsn>();
            List <Clsn> default_type1 = new List <Clsn>();
            List <Clsn> default_type2 = new List <Clsn>();

            Boolean  loaddefault = false;
            ClsnType loadtype    = ClsnType.None;
            Int32    loadcount   = 0;

            foreach (String line in section.Lines)
            {
                if (loadcount > 0)
                {
                    Clsn?clsn = CreateClsn(line, loadtype);
                    if (clsn != null)
                    {
                        if (loaddefault == true)
                        {
                            if (loadtype == ClsnType.Type1Attack)
                            {
                                default_type1.Add(clsn.Value);
                            }
                            if (loadtype == ClsnType.Type2Normal)
                            {
                                default_type2.Add(clsn.Value);
                            }
                        }
                        else
                        {
                            if (loadtype == ClsnType.Type1Attack)
                            {
                                loading_type1.Add(clsn.Value);
                            }
                            if (loadtype == ClsnType.Type2Normal)
                            {
                                loading_type2.Add(clsn.Value);
                            }
                        }
                    }
                    else
                    {
                        Log.Write(LogLevel.Warning, LogSystem.AnimationSystem, "Could not create Clsn from line: {0}", line);
                    }

                    --loadcount;
                    continue;
                }

                Match clsnmatch = m_clsnregex.Match(line);
                if (clsnmatch.Success == true)
                {
                    ClsnType clsntype = ClsnType.None;
                    if (sc.Equals(clsnmatch.Groups[1].Value, "1") == true)
                    {
                        clsntype = ClsnType.Type1Attack;
                    }
                    if (sc.Equals(clsnmatch.Groups[1].Value, "2") == true)
                    {
                        clsntype = ClsnType.Type2Normal;
                    }

                    Boolean isdefault = sc.Equals(clsnmatch.Groups[2].Value, "default");
                    if (isdefault == true)
                    {
                        if (clsntype == ClsnType.Type1Attack)
                        {
                            default_type1.Clear();
                        }
                        if (clsntype == ClsnType.Type2Normal)
                        {
                            default_type2.Clear();
                        }
                    }

                    loadcount   = Int32.Parse(clsnmatch.Groups[3].Value);
                    loaddefault = isdefault;
                    loadtype    = clsntype;
                    continue;
                }

                if (sc.Equals(line, "Loopstart") == true)
                {
                    loopstart = elements.Count;
                    continue;
                }

                AnimationElement element = CreateElement(line, elements.Count, starttick, default_type1, default_type2, loading_type1, loading_type2);
                if (element != null)
                {
                    if (element.Gameticks == -1)
                    {
                        starttick = -1;
                    }
                    else
                    {
                        starttick += element.Gameticks;
                    }

                    elements.Add(element);

                    loading_type1.Clear();
                    loading_type2.Clear();
                }
                else
                {
                    Log.Write(LogLevel.Warning, LogSystem.AnimationSystem, "Error parsing element for Animation #{0} - {1}", animationnumber, line);
                }
            }

            if (elements.Count == 0)
            {
                Log.Write(LogLevel.Warning, LogSystem.AnimationSystem, "No elements defined for Animation #{0}", animationnumber);
                return(null);
            }
            else
            {
                if (loopstart == elements.Count)
                {
                    loopstart = 0;
                }

                return(new Animation(animationnumber, loopstart, elements));
            }
        }
Exemplo n.º 11
0
		/// <summary>
		/// Creates a new instance of this class.
		/// </summary>
		/// <param name="clsntype">The type of collision box.</param>
		/// <param name="rectangle">The Rectangle defining the dimensions of the collision box.</param>
		public Clsn(ClsnType clsntype, Rectangle rectangle)
		{
			m_clsntype = clsntype;
			m_rect = rectangle;
		}
Exemplo n.º 12
0
		/// <summary>
		/// Creates a new collision box.
		/// </summary>
		/// <param name="line">A line of text representing a collision box.</param>
		/// <param name="overridetype">The type of collision box to be created.</param>
		/// <returns>A new instance of the Clsn class if it could be created; null otherwise.</returns>
		Clsn? CreateClsn(String line, ClsnType overridetype)
		{
			if (String.Compare(line, 0, "Clsn", 0, 4, StringComparison.OrdinalIgnoreCase) != 0) return null;

			Match match = m_clsnlineregex.Match(line);
			if (match.Success == false) return null;

			//if (String.Equals(match.Groups[1].Value, "1") == true) clsn.Type = ClsnType.Type1Attack;
			//if (String.Equals(match.Groups[1].Value, "2") == true) clsn.Type = ClsnType.Type2Normal;

			Int32 x1 = Int32.Parse(match.Groups[3].Value);
			Int32 y1 = Int32.Parse(match.Groups[4].Value);
			Int32 x2 = Int32.Parse(match.Groups[5].Value);
			Int32 y2 = Int32.Parse(match.Groups[6].Value);

			if (x1 > x2) Misc.Swap(ref x1, ref x2);
			if (y1 > y2) Misc.Swap(ref y1, ref y2);

			return new Clsn(overridetype, new Rectangle(x1, y1, x2 - x1, y2 - y1));
		}