• 背包_InventoryGrid


    var bagName:String = "set a name for bag";
    var bagBtnName:String = "Bag button name here";
    var posBagBtn:Vector2 = Vector2(50,50);

    var slotSize: float = 40;
    var spacingBetweenSlots :float = 5;
    var defaultTextureSlot:Texture;
    var bagNumber:int;

    private var numSlot = 16;
    private var offsetBag : int ;
    private var showBag :boolean = false;
    private var bagPos:Vector2 ;
    private var indexOnController:int;

    private var tempTexture :Texture;

    private var ctrl:PositionController;

    function Start()
    {
       offsetBag = bagNumber * numSlot;
      ctrl = transform.parent.GetComponent(PositionController);
      indexOnController = 0;
    }

    function OnGUI()
    {
       if(GUI.Button(Rect(Screen.width - posBagBtn.x, Screen.height - posBagBtn.y,slotSize,slotSize),bagBtnName))
       {
          ToggleBag();
       }
      
       if(showBag)
       {
         Bag(bagPos.x,bagPos.y,185,200);
       }
    }

    function ToggleBag()
    {
       if(showBag)
       {
         HideBag();
       }
       else
       {
         ShowBag();
       }
    }

    function HideBag()
    {
      showBag = false;
      ctrl.FreePosition(indexOnController);
    }

    function ShowBag()
    {
      showBag = true;
      var info: Vector3 = ctrl.GetPositionAvailable();
      indexOnController = info.z;
      bagPos = Vector2(info.x,info.y);
    }

    function BagIsBeingDisplayed()
    {
       return showBag;
    }

    function Bag(posX:float,posY:float,sX:float,sY:float)
    {
      GUI.BeginGroup(Rect(Screen.width - posX,Screen.height - posY,sX,sY));
      GUI.Box(Rect(0,0,sX,sY),bagName);
     
      for(var i=0;i<4;i++)
      {
         for(var j=0;j<4;j++)
         {
            if(ctrl.GetObjectsInBag(offsetBag + (4*i)+j) == null)
            {
               tempTexture = defaultTextureSlot; 
      } 
      else
      {
       tempTexture = ctrl.GetObjectsInBag(offsetBag+(4*i)+j).GetComponent(ObjectInfo).iconTexture;
      }
      
      if(Input.GetMouseButtonDown(0))
      {
          ctrl.SetButtonClicked(false);
      }
      
            if(GUI.Button(Rect(slotSize*j+spacingBetweenSlots*(j+1) , slotSize*i+spacingBetweenSlots*(i+1)+15,
            slotSize,slotSize),tempTexture))
            {
          ctrl.SetButtonClicked(true);
                   
               if(ctrl.GetObjectsInBag(offsetBag+(4*i)+j) != null)
         {
            ctrl.mouseTextureHander.SetCursor(ctrl.GetObjectsInBag(offsetBag+(4*i)+j).GetComponent(ObjectInfo).iconTexture);
        
         ctrl.SetObjAttached(true);
         }
         //print((offsetBag+(4*i)+j));
         //print(ctrl.GetObjectsInBag((offsetBag+(4*i)+j)));
          MoveSlot((offsetBag+(4*i)+j));
            }
         }  
      }
     
      GUI.EndGroup(); 
    }

    function MoveSlot( indSlot : int)
    {
        //ctrl.SetLastSlotUsed(indSlot);
        if(ctrl.GetObjectsInBag(indSlot) == null && !ctrl.GetSlotMovedFlag())//移动图标到新的位置
        {
      ctrl.SetObjectInBag(indSlot, ctrl.GetObjectsInBag(ctrl.GetLastSlotUsed()));
      ReleaseSlot(ctrl.GetLastSlotUsed());
      ctrl.SetSlotMovedFlag(true);
      ctrl.mouseTextureHander.ReleaseCursorIcon();
      ctrl.SetObjAttached(false);
     }
     else if(ctrl.GetObjectsInBag(indSlot) != null && ctrl.GetObjectsInBag(ctrl.GetLastSlotUsed()) != null && !ctrl.GetSlotMovedFlag()) //转换两个图标
     {
         var tmpObj : GameObject = ctrl.GetObjectsInBag(indSlot);
      ctrl.SetObjectInBag(indSlot, ctrl.GetObjectsInBag(ctrl.GetLastSlotUsed()));
      ctrl.SetObjectInBag(ctrl.GetLastSlotUsed(),tmpObj);
      ctrl.SetSlotMovedFlag(true);
      ctrl.mouseTextureHander.ReleaseCursorIcon();
      ctrl.SetObjAttached(false);
     }
     else
     {
         ctrl.SetSlotMovedFlag(false);
     }
     ctrl.SetLastSlotUsed(indSlot);
    }

    function ReleaseSlot(index :int)
    {
        ctrl.SetObjectInBag( index, null);
    }

  • 相关阅读:
    软件测试基本功之——概念篇
    bug描述注意点
    软件测试模型汇总-V模型,W模型,X模型,H模型
    软件测试分类(自动化测试暂不描述)
    黑盒测试用例设计方法&理论结合实际 -> 场景法
    前端学习(36)~js学习(十三):this
    前端学习(35)~js学习(十二):预编译
    前端学习(34)~js学习(十一):作用域和变量提升
    前端学习(33)~js学习(十):函数
    前端学习(32)~js学习(九):对象简介和对象的基本操作
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2172975.html
Copyright © 2020-2023  润新知