zoukankan      html  css  js  c++  java
  • 背包_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);
    }

  • 相关阅读:
    让我们来学学css3 media queries的使用吧
    Emmet(zen coding)文档(一)[译文]
    给自己不同网站的密码加密
    Photoshop图层混合模式原理(公式)
    3dsmax设置贴图路径为相对目录
    ImageMagick
    FireBreak框架: 用C++打造多浏览器支持的插件
    粒子滤波算法
    页端3d技术
    RANSAC算法
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2172975.html
Copyright © 2011-2022 走看看