本文整理汇总了C++中object::GetObjectLayer方法的典型用法代码示例。如果您正苦于以下问题:C++ object::GetObjectLayer方法的具体用法?C++ object::GetObjectLayer怎么用?C++ object::GetObjectLayer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类object
的用法示例。
在下文中一共展示了object::GetObjectLayer方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BlastObjects
// Damage and hurl objects away.
// documented in /docs/sdk/script/fn
global func BlastObjects(int x, int y, int level, object container, int cause_plr, int damage_level, object layer, object prev_container)
{
var obj;
// Coordinates are always supplied globally, convert to local coordinates.
var l_x = x - GetX(), l_y = y - GetY();
// caused by: if not specified, controller of calling object
if (cause_plr == nil)
if (this)
cause_plr = GetController();
// damage: if not specified this is the same as the explosion radius
if (damage_level == nil)
damage_level = level;
// In a container?
if (container)
{
if (container->GetObjectLayer() == layer)
{
container->BlastObject(damage_level, cause_plr);
if (!container)
return true; // Container could be removed in the meanwhile.
for (obj in FindObjects(Find_Container(container), Find_Layer(layer), Find_Exclude(prev_container)))
if (obj)
obj->BlastObject(damage_level, cause_plr);
}
}
示例2: FxHitCheckDoCheck
global func FxHitCheckDoCheck(object target, proplist effect)
{
var obj;
// rather search in front of the projectile, since a hit might delete the effect,
// and clonks can effectively hide in front of walls.
var oldx = target->GetX();
var oldy = target->GetY();
var newx = target->GetX() + target->GetXDir() / 10;
var newy = target->GetY() + target->GetYDir() / 10;
var dist = Distance(oldx, oldy, newx, newy);
var is_human = GetPlayerType(target->GetController()) == C4PT_User;
var shooter = effect.shooter;
var live = effect.live;
if (live)
shooter = target;
if (dist <= Max(1, Max(Abs(target->GetXDir()), Abs(target->GetYDir()))) * 2)
{
// We search for objects along the line on which we moved since the last check
// and sort by distance (closer first).
for (obj in FindObjects(Find_OnLine(oldx, oldy, newx, newy),
Find_NoContainer(),
Find_Layer(target->GetObjectLayer()),
Find_PathFree(target),
Sort_Distance(oldx, oldy)))
{
// Excludes
if (!obj) continue; // hit callback of one object might have removed other objects
if(obj == target) continue;
if(obj == shooter) continue;
if (is_human) {
if (obj == g_windgen1) continue;
if (obj == g_windgen2) continue;
if (obj == g_windgen3) continue;
if (obj == g_windmill) continue;
}
// Unlike in hazard, there is no NOFF rule (yet)
// CheckEnemy
//if(!CheckEnemy(obj,target)) continue;
// IsProjectileTarget or Alive will be hit
if (obj->~IsProjectileTarget(target, shooter) || obj->GetOCF() & OCF_Alive)
{
target->~HitObject(obj);
if (!target)
return;
}
}
}
return;
}
示例3: BlastObjectsBlue
global func BlastObjectsBlue(int x, int y, int level, object container, int cause_plr, object layer)
{
var obj;
// Coordinates are always supplied globally, convert to local coordinates.
var l_x = x - GetX(), l_y = y - GetY();
// In a container?
if (container)
{
if (container->GetObjectLayer() == layer)
{
container->BlastObject(level, cause_plr);
if (!container)
return true; // Container could be removed in the meanwhile.
for (obj in FindObjects(Find_Container(container), Find_Layer(layer)))
if (obj)
obj->BlastObject(level, cause_plr);
}
}
示例4: IgnoreInventory
// Objekte im falschen Layer können nie aufgenommen werden
// ansonsten Funktion überladen!!
global func IgnoreInventory( object pCollector)
{
if(GetEffect("IgnoreInventory",this)) return true; // TODO: Effekt einbauen
return pCollector->GetObjectLayer() != this->GetObjectLayer();
}