Exemplo n.º 1
0
    //Mets a jours le module courant
    public void UpdateCurrentModule()
    {
        //Debug.Log("selectedIndex : "+_selectedIndex+" count : "+_modules.Count );
        if(_modules.Count > 0)
        {
            /*if(_selectedIndex==-1)
                _selectedIndex = 0;
            if(_selectedIndex>=_modules.Count)
                _selectedIndex =_modules.Count-1;*/
            if(_selectedIndex==-1)
                return;
            if(_selectedIndex>=_modules.Count)
                return;
            _currentModule = (DynShelterModule) _modules[_selectedIndex];
            _tmpStylesNames = _dsMdl.GetStylesNameOfSize(_currentModule.GetSize(),_currentModule.GetModuleType());
            _tmpStylesThumbs = _dsMdl.GetStylesThumbsOfSize(_tmpStylesNames);

            _currentType = _currentModule.GetType().ToString();//_currentModule.GetModuleType().ToString();
            for(int i=0;i<_tmpStylesNames.Length;i++)
            {
                if(_tmpStylesNames[i] == _currentModule.GetStyle())
                {
                    _currentStyle = i;
                }
            }
            UpdateRules();

            //Locks -------------------------
            _isLockedNext = _currentModule.GetNextLock();
            _isLockedPrev = _currentModule.GetPrevLock();

            //Mods
            _modManager.UpdateLocalMods(_currentModule.GetGameObj());
        }
        else
        {
            //CAS OU PLUS DE MODULES
            _currentModule = null;
        }
        UI.SetSelectedItem(_selectedIndex);
        UI.SetSelectedLocks(_isLockedPrev,_isLockedNext);

        if(szbrand == "PoolCover")
        {
            UpdateVisibility();
        }
    }
Exemplo n.º 2
0
 private bool CheckCollisionPossibilityF(float delta,bool checkNext,DynShelterModule cmp)
 {
     if(checkNext)//Checks with nexts
     {
         if(_size >= cmp.GetSize())//Meme taille
         {
             return Contact(delta,AR,true,AV,true,cmp,checkNext);
         }
         else return false;
     }
     else//Checks with prevs
     {
         if(_size >= cmp.GetSize())//Meme taille
         {
             return Contact(delta,AV,true,AR,true,cmp,checkNext);
         }
         else return false;
     }
 }
Exemplo n.º 3
0
 private bool CheckCollisionPossibility(float delta,bool checkNext,DynShelterModule cmp)
 {
     if(checkNext)//Checks with nexts
     {
         if(cmp == _nextModule && _lockNext)
             return false;
         if(_size == cmp.GetSize())//Meme taille
         {
             return Contact(delta,AR,true,AV,true,cmp,checkNext);
         }
         else if(cmp.GetSize() >= _size && cmp.IsLastEnd() )
         {
             return Contact(delta,AR,true,AR,false,cmp,checkNext);
         }
         else
             return false;
     }
     else//Checks with prevs
     {
         if(cmp == _prevModule && _lockPrev)
             return false;
         if(_size == cmp.GetSize() /*|| (cmp.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc && _size <= cmp.GetSize())*/)//Meme taille
         {
             return Contact(delta,AV,true,AR,true,cmp,checkNext);
         }
         else if(cmp.GetSize() >= _size && cmp.IsFirstEnd())
         {
             return Contact(delta,AV,true,AV,false,cmp,checkNext);
         }
         else//--------------------//pas meme taille
         {
             return false;
         }
     }
 }
Exemplo n.º 4
0
    public override void InsertBetween(DynShelterModule prev, DynShelterModule next)
    {
        int nxtSize = next!=null? next.GetSize() : -1;
        int prvSize = prev!=null? prev.GetSize() : -1;

        float newPos = 0.0f;

        if(next != null && prev != null) //Cas d'ajout entre deux modules
        {
            next.SetPrevModule(this);
            prev.SetNextModule(this);

            SetNextPrevModule(prev,next);

            if(_size == nxtSize && next.GetModuleType() == FunctionConf_Dynshelter.ModuleType.bloc)
            {
                //Add collé au next
                next.MoveModuleV2(-_length/2,next);
                prev.MoveModuleV2(_length/2,prev);

                newPos = next.GetPos().z + (_length/2+next.GetLength()/2);
            }
            if(_size == prvSize && prev.GetModuleType() == FunctionConf_Dynshelter.ModuleType.bloc)
            {
                //Add collé au prev
                if(_size != nxtSize)
                {
                    next.MoveModuleV2(-_length/2,next);
                    prev.MoveModuleV2(_length/2,prev);
                }

                newPos = prev.GetPos().z - (_length/2+prev.GetLength()/2);
            }
            if(_size != nxtSize && _size != prvSize)
            {
                //add a cheval
                float space = Vector3.Distance(prev.GetPos(),next.GetPos());
                if(space > _length)
                {
                    newPos = ((prev.GetPos() + next.GetPos()).z)/2;
                }
                else
                {
                    float off7 = (_length - space)/2;
                    next.MoveModuleV2(-off7,next);
                    prev.MoveModuleV2(off7,prev);

                    newPos = (prev.GetPos().z + next.GetPos().z)/2;
                }
            }
        }
        else //(next == null || prev == null) // Cas d'ajout aux extremites (1er ou dernier)
        {
            if(next !=null)
            {
                next.SetPrevModule(this);
                SetNextModule(next);

                if(_size == nxtSize)
                {
                    //Add collé au next
                    newPos = next.GetPos().z + (_length/2 + next.GetLength()/2);
                }
                else
                {
                    //Add collé au next ou a cheval si pas la place
        //					newPos = next.GetExtPos(AV).z;
                    newPos = /*next.GetPos().z + */next.GetIntPos(AV).z - GetIntPos(AR).z;
                }
            }
            else//(prev != null)
            {
                prev.SetNextModule(this);
                SetPrevModule(prev);

                if(_size == prvSize)
                {
                    //Add collé au prev
                    newPos = prev.GetPos().z - (_length/2 + prev.GetLength()/2);
                }
                else
                {
                    //Add collé au prev ou a cheval si pas la place
        //					newPos = prev.GetExtPos(AR).z;
                    newPos = /*prev.GetPos().z + */prev.GetIntPos(AR).z - GetIntPos(AV).z;
                }
            }
        }

        //Applying
        SetPos(false,newPos);
    }
Exemplo n.º 5
0
    //Déplacement tests
    private bool CheckTelescopicMove(float delta,bool checkNext,DynShelterModule nxt,DynShelterModule prv)
    {
        bool pushNext = false;
        bool pullNext = false;
        bool pushPrev = false;
        bool pullPrev = false;

        if(delta <0)//---------------------------------------------------------------------dep Z-
        {
            if(nxt != null && _lockNext && checkNext)
            {
                if(nxt.GetSize()!=GetSize())//---Si c'est un bloc
                {
                    if(Push(false,delta))
                    {
                        pushNext = true;
                    }
                }
                else//-------------------------------------------------------------------------Si c'est un bloc de mm taille
                {
                    pushNext = true;
                }
            }

            if(prv != null && _lockPrev && !checkNext)
            {
                if(prv.GetSize()!=GetSize())//---Si c'est un bloc
                {
                    if(Pull(true,delta))
                    {
                        pullPrev = true;
                    }
                }
                else//-------------------------------------------------------------------------Si c'est une facade ou une extremité ou un bloc de mm taille
                {
                    pullPrev = true;
                    if(Contact(delta,AV,true,AR,true,prv,false))
                        pullPrev = false;
                }
            }
        }
        else if(delta >0)//-----------------------------------------------------------------------------dep Z+
        {
            if(nxt != null && _lockNext && checkNext)
            {
                if(nxt.GetSize()!=GetSize())//---Si c'est un bloc
                {
                    if(Pull(false,delta))
                    {
                        pullNext = true;
                    }
                }
                else//-------------------------------------------------------------------------Si c'est une facade ou une extremité ou un bloc de mm taille
                {
                    pullNext = true;
                    if(Contact(delta,AR,true,AV,true,nxt,true))
                        pullNext = false;
                }
            }

            if(prv != null && _lockPrev && !checkNext)
            {
                if(prv.GetSize()!=GetSize())//---Si c'est un bloc
                {
                    if(Push(true,delta))
                    {
                        pushPrev = true;
                    }
                }
                else//-------------------------------------------------------------------------Si c'est un bloc de mm taille
                {
                        pushPrev = true;
                }
            }
        }

        if(checkNext)
        {
            if((pushNext||pullNext))
                return true;
            else
                return false;
        }
        else
        {
            if((pushPrev||pullPrev))
                return true;
            else
                return false;
        }
    }
Exemplo n.º 6
0
 public override void SetNextModule(DynShelterModule next)
 {
     if(next != null && next.GetType() == GetType() && _size == next.GetSize())
     {
         ARSubObj.SetActive(false);
     }
     else
     {
         ARSubObj.SetActive(true);
     }
     _nextModule = next;
 }
Exemplo n.º 7
0
    public override void InsertBetween(DynShelterModule prev, DynShelterModule next)
    {
        int nxtSize = next!=null? next.GetSize() : -1;
        int prvSize = prev!=null? prev.GetSize() : -1;

        float newPos = 0.0f;
        float off7 = 0.0f;
        if(next != null && prev != null) //Cas d'ajout entre deux modules
        {
            //--vv--configuration des modules--vv--
            if(next.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)
            {
                _last = this;
            }
            next.SetPrevModule(this);

            if(prev.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)
            {
                _first = this;
            }
            prev.SetNextModule(this);

        //			SetNextPrevModule(prev,next);
            SetPrevModule(prev);
            SetNextModule(next);

            WhoIs(true);
            WhoIs(false);

            //--vv--Placement--vv--
            if(_size == nxtSize && (_size != prvSize || prev.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)) //Le suivant est de la mm taille mais pas le précedent
            {
                //Add collé au next
                newPos = next.GetPos().z;
                off7 = -_length;
                if(next.GetType() == GetType())
                    off7 += _AvArSize;//TAILLE DU MONTANT

                DynShelterModule nxt = next;
                while(nxt != null)
                {
                    nxt.SetPos(true,off7);
                    nxt = nxt.GetNextModule();
                }
            }
            else if(_size == prvSize && (_size != nxtSize || next.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)) //le précedent est de la meme taille mais pas le suivant
            {
                //Add collé au prev
                newPos = prev.GetPos().z;
                off7 = _length;
                if(prev.GetType() == GetType())
                    off7 -= ((DynShelterMultiBloc)prev).GetAvArSize();//TAILLE DU MONTANT

                DynShelterModule prv = prev;
                while(prv != null)
                {
                    prv.SetPos(true,off7);
                    prv = prv.GetPrevModule();
                }
            }
            else //if(_size == nxtSize && _size == prvSize) // le precedent et le suivant ont la meme taille que le courant
            {
                DynShelterModule nxt = next;
                off7 = -_length;
                if(next.GetType() == GetType())
                    off7 += _AvArSize;//TAILLE DU MONTANT
                while(nxt != null)
                {
                    nxt.SetPos(true,off7/2);
                    nxt = nxt.GetNextModule();
                }

                off7 = _length;
                if(prev.GetType() == GetType())
                    off7 -= ((DynShelterMultiBloc)prev).GetAvArSize();//TAILLE DU MONTANT
                DynShelterModule prv = prev;
                while(prv != null)
                {
                    prv.SetPos(true,off7/2);
                    prv = prv.GetPrevModule();
                }

                newPos = (next.GetPos()+prev.GetPos()).z/2;
            }
        //			else // le precedent et le suivant ont une taille différente du courant
        //			{
        //				DynShelterModule nxt = next;
        //				while(nxt != null)
        //				{
        //					nxt.SetPos(true,-_length/2);
        //					nxt = nxt.GetNextModule();
        //				}
        //
        //				DynShelterModule prv = prev;
        //				while(prv != null)
        //				{
        //					prv.SetPos(true,_length/2);
        //					prv = prv.GetPrevModule();
        //				}
        //
        //				newPos = (next.GetPos()+prev.GetPos()).z/2;
        //			}

        }
        else //(next == null || prev == null) // Cas d'ajout aux extremites (1er ou dernier)
        {
            if(next !=null) // this est le 1er module
            {
                next.SetPrevModule(this);
                SetNextModule(next);

                WhoIs(true);
                WhoIs(false);

                if(_size == nxtSize)
                {
                    //Add collé au next
                    newPos = next.GetPos().z + (_length/2 + next.GetIntOffSet()/*next.GetLength()/2*/);
                }
                else
                {
                    //Add collé au next ou a cheval si pas la place
                    newPos = next.GetExtPos(AV).z;
                }
            }
            else//(prev != null) // this est le dernier module
            {
                prev.SetNextModule(this);
                SetPrevModule(prev);

                WhoIs(true);
                WhoIs(false);

                if(_size == prvSize)
                {
                    //Add collé au prev
                    newPos = prev.GetPos().z - (_length/2 + prev.GetIntOffSet() /*prev.GetLength()/2*/);
                }
                else
                {
                    //Add collé au prev ou a cheval si pas la place
                    newPos = prev.GetExtPos(AR).z;
                }
            }
        }

        //Applying Position
        SetPos(false,newPos);
    }