コード例 #1
0
    private bool IsValidLargeLock(bool isFullTest = true)
    {
        //if (m_dataNPC.TargetID != null && temp_TargetID != m_dataNPC.TargetID && Storage.ReaderWorld.CollectionInfoID.ContainsKey(m_dataNPC.TargetID))
        //if (m_dataNPC.TargetID != null && temp_TargetID != m_dataNPC.TargetID)
        //if (m_dataNPC.TargetID != null && temp_TargetID != m_dataNPC.TargetID)
        //if (m_dataNPC.TargetID != null && temp_TargetID != m_dataNPC.TargetID && Storage.ReaderWorld.CollectionInfoID.ContainsKey(m_dataNPC.TargetID))
        bool isCheckLarge  = false;
        bool isCheckTarget = true;

        if (!string.IsNullOrEmpty(m_dataNPC.TargetID) && Storage.Instance.ReaderSceneIsValid)
        {
            isCheckLarge = isCheckTarget = Storage.ReaderWorld.CollectionInfoID.ContainsKey(m_dataNPC.TargetID);
        }

        if (m_dataNPC.TargetID != null && temp_TargetID != m_dataNPC.TargetID && isCheckTarget)
        {
            if (isCheckLarge)
            {
                temp_isLargeBlock = !Storage.ReaderWorld.CollectionInfoID[m_dataNPC.TargetID].Data.IsFloor();
            }
            else
            {
                temp_isLargeBlock = false;
            }

            temp_TargetID = m_dataNPC.TargetID;
            if (!temp_isLargeBlock)
            {
                string nameFiledTarget = Helper.GetNameField(m_dataNPC.TargetPosition);

                List <ModelNPC.ObjectData> objs = new List <ModelNPC.ObjectData>();
                ReaderScene.GetObjectsDataFromGridTo(ref objs, nameFiledTarget);
                if (objs != null)
                {
                    foreach (var item in objs)
                    {
                        if (!item.IsFloor())
                        {
                            temp_isLargeBlock = true;
                            break;
                        }
                    }
                }
            }
            //temp_isLargeBlock = false == Storage.ReaderWorld.CollectionInfoID[m_dataNPC.TargetID].Data.IsFloor();
        }
        if (!isFullTest)
        {
            return(temp_isLargeBlock);
        }

        float distField = Vector2.Distance(new Vector2(m_dataNPC.TargetPosition.x,
                                                       m_dataNPC.TargetPosition.y)
                                           , new Vector2(m_dataNPC.Position.x, m_dataNPC.Position.y));

        return(temp_isLargeBlock || distField > 1);
    }