Esempio n. 1
0
        public EntityPositioning GetEntityPositioning(Position p_position)
        {
            EntityPositioning entityPositioning;

            if (!m_PositioningViewMap.TryGetValue(p_position, out entityPositioning))
            {
                entityPositioning = new EntityPositioning(LegacyLogic.Instance.MapLoader.Grid.GetSlot(p_position), m_PositioningTemplates);
                m_PositioningViewMap.Add(p_position, entityPositioning);
            }
            return(entityPositioning);
        }
Esempio n. 2
0
        public GameObject GetSlotOrigin(Position p_position)
        {
            EntityPositioning entityPositioning = GetEntityPositioning(p_position);

            if (entityPositioning.m_SlotOrigin == null)
            {
                entityPositioning.m_SlotOrigin = new GameObject("Origin " + p_position);
                entityPositioning.m_SlotOrigin.transform.parent = FindGridOrigin();
                Vector3 localPosition = Helper.SlotLocalPosition(p_position, LegacyLogic.Instance.MapLoader.Grid.GetSlot(p_position).Height);
                entityPositioning.m_SlotOrigin.transform.localPosition = localPosition;
            }
            return(entityPositioning.m_SlotOrigin);
        }
Esempio n. 3
0
 private Int32 GetNearestSlotByDirection(EntityPositioning p_otherPositioning, Int32 p_fromSlot)
 {
     if (p_otherPositioning.Direction == m_direction)
     {
         Position   position   = p_otherPositioning.Position;
         Position   position2  = Position;
         EDirection edirection = EDirectionFunctions.Add(m_direction, -(Int32)EDirectionFunctions.GetDirection(ref position2, ref position));
         if (edirection == EDirection.EAST)
         {
             return(2);
         }
         if (edirection == EDirection.WEST)
         {
             return(0);
         }
     }
     else if (p_otherPositioning.Direction == EDirectionFunctions.Add(m_direction, 2))
     {
         return(p_fromSlot);
     }
     return(0);
 }
Esempio n. 4
0
        public Boolean AddView(IMoveable go, ESize size, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning)
        {
            localPosition = Vector3.zero;
            if (go == null)
            {
                return(false);
            }
            if (m_GameObjects == null)
            {
                m_GameObjects = new Entity[m_Template.Length];
            }
            if (p_comeFrom != -1)
            {
                CalculateRotation();
                Boolean flag = AddViewWithPreviousSlot(go, size, out localPosition, p_comeFrom, p_oldPositioning);
                if (flag)
                {
                    return(true);
                }
            }
            else if (go is LevelEntityView)
            {
                LevelEntityView levelEntityView = (LevelEntityView)go;
                EDirection      direction       = levelEntityView.MyController.Direction;
                SetDirection(direction);
            }
            Int32 num = -1;

            for (Int32 i = 0; i < m_GameObjects.Length; i++)
            {
                if (size != ESize.MEDIUM || i != 1)
                {
                    if (size != ESize.BIG || i == 1)
                    {
                        if (num == -1 && m_GameObjects[i].View == null)
                        {
                            num = i;
                        }
                        if (m_GameObjects[i].View == go)
                        {
                            num = i;
                            break;
                        }
                    }
                }
            }
            if (num > -1)
            {
                if (m_count == 0)
                {
                    num = 1;
                }
                Single num2 = (Single)m_direction * 90f;
                if (m_diagonal)
                {
                    num2 -= 45f;
                }
                localPosition = SetViewIntoSlot(go, num, num);
                return(true);
            }
            localPosition = Vector3.zero;
            return(false);
        }
Esempio n. 5
0
 private void AddViewWithPreviousSlotSmallTrioSearchNearest(IMoveable go, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning)
 {
     if (m_diagonal)
     {
         localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
     }
     else
     {
         Int32 num = GetNearestSlotByDirection(p_oldPositioning, p_comeFrom);
         if (m_GameObjects[num].View != null)
         {
             if (num == 0)
             {
                 if (m_GameObjects[1].View != null && m_GameObjects[1].TargetIndex != 1)
                 {
                     AlterPositionForView(1, 2);
                 }
                 if (m_GameObjects[1].View == null)
                 {
                     AlterPositionForView(0, 1);
                 }
                 else if (m_GameObjects[0].TargetIndex != 0)
                 {
                     AlterPositionForView(0, 2);
                 }
                 else
                 {
                     for (Int32 i = 0; i < m_GameObjects.Length; i++)
                     {
                         if (m_GameObjects[i].View == null)
                         {
                             num = i;
                             break;
                         }
                     }
                 }
             }
             else if (num == 2)
             {
                 if (m_GameObjects[1].View != null && m_GameObjects[1].TargetIndex != 1)
                 {
                     AlterPositionForView(1, 0);
                 }
                 if (m_GameObjects[1].View == null)
                 {
                     AlterPositionForView(2, 1);
                 }
                 else if (m_GameObjects[2].TargetIndex != 2)
                 {
                     AlterPositionForView(2, 0);
                 }
                 else
                 {
                     for (Int32 j = 0; j < m_GameObjects.Length; j++)
                     {
                         if (m_GameObjects[j].View == null)
                         {
                             num = j;
                             break;
                         }
                     }
                 }
             }
         }
         localPosition = SetViewIntoSlot(go, p_comeFrom, num);
     }
 }
Esempio n. 6
0
 private void AddViewWithPreviousSlotSmallTrio(IMoveable go, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning)
 {
     if (m_GameObjects[1].TargetIndex == 1)
     {
         Int32 num = -1;
         if (p_comeFrom == 1)
         {
             num = ((m_GameObjects[1].View == null) ? 1 : -1);
             if (num == -1)
             {
                 num = ((m_GameObjects[0].View == null) ? 0 : 2);
             }
         }
         else if (m_GameObjects[p_comeFrom].View == null)
         {
             num = p_comeFrom;
         }
         else
         {
             for (Int32 i = 0; i < m_GameObjects.Length; i++)
             {
                 if (m_GameObjects[i].View == null)
                 {
                     num = i;
                 }
             }
         }
         localPosition = SetViewIntoSlot(go, p_comeFrom, num);
     }
     else if (!m_diagonal)
     {
         if (m_GameObjects[p_comeFrom].View != null)
         {
             Int32 num2 = m_GameObjects[p_comeFrom].TargetIndex;
             if (m_GameObjects[num2].View != null)
             {
                 for (Int32 j = 0; j < m_GameObjects.Length; j++)
                 {
                     if (m_GameObjects[j].View == null)
                     {
                         num2 = j;
                     }
                 }
             }
             else
             {
                 num2 = p_comeFrom;
                 AlterPositionForView(p_comeFrom, m_GameObjects[p_comeFrom].TargetIndex);
             }
             localPosition = SetViewIntoSlot(go, p_comeFrom, num2);
         }
         else
         {
             Int32 targetIndex = m_GameObjects[1].TargetIndex;
             AlterPositionForView(1, targetIndex);
             localPosition = SetViewIntoSlot(go, p_comeFrom, 1);
         }
     }
     else if (m_GameObjects[p_comeFrom].View == null)
     {
         localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
     }
     else
     {
         Int32 p_newSlot = -1;
         for (Int32 k = 0; k < m_GameObjects.Length; k++)
         {
             if (m_GameObjects[k].View == null)
             {
                 p_newSlot = k;
                 break;
             }
         }
         AlterPositionForView(p_comeFrom, p_newSlot);
         localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
     }
 }
Esempio n. 7
0
 private void AddViewWithPreviousSlotSmallDuo(IMoveable go, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning, Boolean searchNearestSlot)
 {
     if (!searchNearestSlot)
     {
         if (m_GameObjects[1].View != null)
         {
             if (m_GameObjects[1].TargetIndex == p_comeFrom)
             {
                 Int32 p_slot = -1;
                 for (Int32 i = 0; i < m_GameObjects.Length; i++)
                 {
                     if (m_GameObjects[i].View == null)
                     {
                         p_slot = i;
                     }
                 }
                 localPosition = SetViewIntoSlot(go, p_comeFrom, p_slot);
             }
             else if (m_GameObjects[m_GameObjects[1].TargetIndex].View == null)
             {
                 AlterPositionForView(1, m_GameObjects[1].TargetIndex);
                 localPosition = SetViewIntoSlot(go, p_comeFrom, 1);
             }
             else
             {
                 for (Int32 j = 0; j < m_GameObjects.Length; j++)
                 {
                     if (m_GameObjects[j].View == null)
                     {
                         AlterPositionForView(p_comeFrom, j);
                     }
                 }
                 localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
             }
         }
         else
         {
             localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
         }
     }
     else if (m_diagonal)
     {
         if (m_GameObjects[p_comeFrom].View == null)
         {
             localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
         }
         else
         {
             Int32 p_newSlot = -1;
             for (Int32 k = 0; k < m_GameObjects.Length; k++)
             {
                 if (m_GameObjects[k].View == null)
                 {
                     p_newSlot = k;
                     break;
                 }
             }
             AlterPositionForView(p_comeFrom, p_newSlot);
             localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
         }
     }
     else
     {
         Int32 num = GetNearestSlotByDirection(p_oldPositioning, p_comeFrom);
         if (m_GameObjects[num].View != null)
         {
             if (m_GameObjects[num].TargetIndex != num)
             {
                 AlterPositionForView(num, 1);
             }
             else
             {
                 num = 1;
             }
         }
         localPosition = SetViewIntoSlot(go, p_comeFrom, num);
     }
 }
Esempio n. 8
0
 private void AddViewWithPreviousSlotSmallSingle(IMoveable go, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning, Boolean searchNearestSlot)
 {
     if (!searchNearestSlot)
     {
         localPosition = SetViewIntoSlot(go, p_comeFrom, 1);
     }
     else if (m_diagonal)
     {
         localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
     }
     else
     {
         Int32 p_slot = 1;
         localPosition = SetViewIntoSlot(go, p_comeFrom, p_slot);
     }
 }
Esempio n. 9
0
 private Boolean AddViewWithPreviousSlotSmall(IMoveable go, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning, Boolean searchNearestSlot)
 {
     if (m_count == 0)
     {
         AddViewWithPreviousSlotSmallSingle(go, out localPosition, p_comeFrom, p_oldPositioning, searchNearestSlot);
     }
     else if (m_count == 1)
     {
         AddViewWithPreviousSlotSmallDuo(go, out localPosition, p_comeFrom, p_oldPositioning, searchNearestSlot);
     }
     else if (searchNearestSlot)
     {
         AddViewWithPreviousSlotSmallTrioSearchNearest(go, out localPosition, p_comeFrom, p_oldPositioning);
     }
     else
     {
         AddViewWithPreviousSlotSmallTrio(go, out localPosition, p_comeFrom, p_oldPositioning);
     }
     return(false);
 }
Esempio n. 10
0
        private Boolean AddViewWithPreviousSlotMedium(IMoveable go, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning, Boolean searchNearestSlot)
        {
            Boolean result = false;

            localPosition = Vector3.zero;
            if (!searchNearestSlot && m_count == 0)
            {
                localPosition = SetViewIntoSlot(go, 0, p_comeFrom);
            }
            else if (m_count == 0)
            {
                Int32 p_comeFrom2 = 1;
                localPosition = SetViewIntoSlot(go, p_comeFrom2, p_comeFrom);
            }
            else if (m_count == 1)
            {
                if (m_GameObjects[1].View != null)
                {
                    if (p_comeFrom == 2)
                    {
                        AlterPositionForView(1, 0);
                    }
                    else
                    {
                        AlterPositionForView(1, 2);
                    }
                    if (p_comeFrom != 1)
                    {
                        localPosition = SetViewIntoSlot(go, p_comeFrom, p_comeFrom);
                    }
                    else
                    {
                        localPosition = SetViewIntoSlot(go, p_comeFrom, 0);
                    }
                }
                else
                {
                    result = true;
                }
            }
            return(result);
        }
Esempio n. 11
0
        private Boolean AddViewWithPreviousSlot(IMoveable go, ESize size, out Vector3 localPosition, Int32 p_comeFrom, EntityPositioning p_oldPositioning)
        {
            Boolean searchNearestSlot = false;

            if (p_oldPositioning != null)
            {
                EDirection direction = EDirectionFunctions.GetDirection(p_oldPositioning.Position, m_gridSlot.Position);
                if (direction != m_direction && direction != EDirectionFunctions.Add(m_direction, 2))
                {
                    searchNearestSlot = true;
                }
            }
            Boolean flag;

            if (size == ESize.MEDIUM)
            {
                flag = AddViewWithPreviousSlotMedium(go, out localPosition, p_comeFrom, p_oldPositioning, searchNearestSlot);
            }
            else if (size == ESize.BIG)
            {
                flag = AddViewWithPreviousSlotBig(go, out localPosition, p_comeFrom);
            }
            else
            {
                flag = AddViewWithPreviousSlotSmall(go, out localPosition, p_comeFrom, p_oldPositioning, searchNearestSlot);
            }
            return(!flag);
        }