本文整理汇总了C#中BuildingBlock.HasSlot方法的典型用法代码示例。如果您正苦于以下问题:C# BuildingBlock.HasSlot方法的具体用法?C# BuildingBlock.HasSlot怎么用?C# BuildingBlock.HasSlot使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BuildingBlock
的用法示例。
在下文中一共展示了BuildingBlock.HasSlot方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CopyBuilding
object CopyBuilding(Vector3 playerPos, float playerRot, BuildingBlock initialBlock, out List<object> rawStructure, out List<object> rawDeployables, out List<object> rawSpawnables)
{
rawStructure = new List<object>();
rawDeployables = new List<object>();
rawSpawnables = new List<object>();
List<object> houseList = new List<object>();
List<Vector3> checkFrom = new List<Vector3>();
BuildingBlock fbuildingblock;
Deployable fdeployable;
Spawnable fspawnable;
houseList.Add(initialBlock);
checkFrom.Add(initialBlock.transform.position);
Dictionary<string, object> housedata;
if (!GetStructureClean(initialBlock, playerRot, initialBlock, out housedata))
{
return "Couldn\'t get a clean initial block";
}
if (initialBlock.HasSlot(BaseEntity.Slot.Lock)) // initial block could be a door.
TryCopyLock(initialBlock, housedata);
rawStructure.Add(housedata);
int current = 0;
while (true)
{
current++;
if (current > checkFrom.Count)
break;
var hits = Physics.OverlapSphere(checkFrom[current - 1], 3f, layerMasks);
foreach (var hit in hits)
{
if (hit.isTrigger)
continue;
if (hit.GetComponentInParent<BuildingBlock>() != null)
{
fbuildingblock = hit.GetComponentInParent<BuildingBlock>();
if (!(houseList.Contains(fbuildingblock)))
{
houseList.Add(fbuildingblock);
checkFrom.Add(fbuildingblock.transform.position);
if (GetStructureClean(initialBlock, playerRot, fbuildingblock, out housedata))
{
if (fbuildingblock.HasSlot(BaseEntity.Slot.Lock))
TryCopyLock(fbuildingblock, housedata);
rawStructure.Add(housedata);
}
}
}
else if (hit.GetComponentInParent<Deployable>() != null)
{
fdeployable = hit.GetComponentInParent<Deployable>();
if (!(houseList.Contains(fdeployable)))
{
houseList.Add(fdeployable);
checkFrom.Add(fdeployable.transform.position);
if (GetDeployableClean(initialBlock, playerRot, fdeployable, out housedata))
{
if (fdeployable.GetComponent<StorageContainer>())
{
var box = fdeployable.GetComponent<StorageContainer>();
var itemlist = new List<object>();
foreach (Item item in box.inventory.itemList)
{
var newitem = new Dictionary<string, object>();
newitem.Add("blueprint", item.isBlueprint.ToString());
newitem.Add("id", item.info.itemid.ToString());
newitem.Add("amount", item.amount.ToString());
itemlist.Add(newitem);
}
housedata.Add("items", itemlist);
if (box.HasSlot(BaseEntity.Slot.Lock))
TryCopyLock(box, housedata);
}
else if (fdeployable.GetComponent<Signage>())
{
var signage = fdeployable.GetComponent<Signage>();
var sign = new Dictionary<string, object>();
if (signage.textureID > 0 && FileStorage.server.Exists(signage.textureID, FileStorage.Type.png))
sign.Add("texture", Convert.ToBase64String(FileStorage.server.Get(signage.textureID, FileStorage.Type.png)));
sign.Add("locked", signage.IsLocked());
housedata.Add("sign", sign);
}
rawDeployables.Add(housedata);
}
}
}
else if (hit.GetComponentInParent<Spawnable>() != null)
{
fspawnable = hit.GetComponentInParent<Spawnable>();
if (!(houseList.Contains(fspawnable)))
{
houseList.Add(fspawnable);
checkFrom.Add(fspawnable.transform.position);
if (GetSpawnableClean(initialBlock, playerRot, fspawnable, out housedata))
{
rawSpawnables.Add(housedata);
}
//.........这里部分代码省略.........
示例2: GetBuildingblockOwner
private void GetBuildingblockOwner(BasePlayer player, BuildingBlock block)
{
if(block.GetComponent<Door>() != null)
{
if(block.HasSlot(BaseEntity.Slot.Lock))
{
BaseEntity slotent = block.GetSlot(BaseEntity.Slot.Lock);
if(slotent != null)
{
CodeLock codelock = slotent.GetComponent<CodeLock>();
if(codelock != null)
{
List<ulong> whitelisted = codelockwhitelist.GetValue(codelock) as List<ulong>;
string codevalue = codenum.GetValue(codelock) as string;
SendReply(player, string.Format(boxCode, codevalue));
SendReply(player, codeLockList);
if (whitelisted.Count == 0)
{
SendReply(player, noCodeAccess);
return;
}
foreach (ulong userid in whitelisted)
{
SendBasePlayerFind(player, userid);
}
}
}
}
}
object findownerblock = FindOwnerBlock(block);
if (findownerblock is bool)
{
SendReply(player, noBlockOwnerfound);
return;
}
ulong ownerid = (UInt64)findownerblock;
SendBasePlayerFind(player, ownerid);
}