当前位置: 首页>>代码示例>>C#>>正文


C# PhysicalObject.YouVisible方法代码示例

本文整理汇总了C#中Forays.PhysicalObject.YouVisible方法的典型用法代码示例。如果您正苦于以下问题:C# PhysicalObject.YouVisible方法的具体用法?C# PhysicalObject.YouVisible怎么用?C# PhysicalObject.YouVisible使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Forays.PhysicalObject的用法示例。


在下文中一共展示了PhysicalObject.YouVisible方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Toggle

		public void Toggle(PhysicalObject toggler,TileType toggle_to){
			bool lighting_update = false;
			List<PhysicalObject> light_sources = new List<PhysicalObject>();
			TileType original_type = ttype;
			if(opaque != Prototype(toggle_to).opaque){
				for(int i=row-1;i<=row+1;++i){
					for(int j=col-1;j<=col+1;++j){
						if(M.tile[i,j].IsLit()){
							lighting_update = true;
						}
					}
				}
			}
			if(lighting_update){
				for(int i=row-Global.MAX_LIGHT_RADIUS;i<=row+Global.MAX_LIGHT_RADIUS;++i){
					for(int j=col-Global.MAX_LIGHT_RADIUS;j<=col+Global.MAX_LIGHT_RADIUS;++j){
						if(i>0 && i<ROWS-1 && j>0 && j<COLS-1){
							if(M.actor[i,j] != null && M.actor[i,j].LightRadius() > 0){
								light_sources.Add(M.actor[i,j]);
								M.actor[i,j].UpdateRadius(M.actor[i,j].LightRadius(),0);
							}
							if(M.tile[i,j].inv != null && M.tile[i,j].inv.light_radius > 0){
								light_sources.Add(M.tile[i,j].inv);
								M.tile[i,j].inv.UpdateRadius(M.tile[i,j].inv.light_radius,0);
							}
							if(M.tile[i,j].light_radius > 0){
								light_sources.Add(M.tile[i,j]);
								M.tile[i,j].UpdateRadius(M.tile[i,j].light_radius,0);
							}
						}
					}
				}
			}

			TransformTo(toggle_to);

			if(lighting_update){
				foreach(PhysicalObject o in light_sources){
					if(o is Actor){
						Actor a = o as Actor;
						a.UpdateRadius(0,a.LightRadius());
					}
					else{
						o.UpdateRadius(0,o.light_radius);
					}
				}
			}
			if(toggler != null && toggler != player){
				if(ttype == TileType.DOOR_C && original_type == TileType.DOOR_O){
					if(player.CanSee(this)){
						B.Add(toggler.TheVisible() + " closes the door. ");
					}
					else{
						if(seen || player.DistanceFrom(this) <= 6){
							B.Add("You hear a door closing. ");
						}
					}
				}
				if(ttype == TileType.DOOR_O && original_type == TileType.DOOR_C){
					if(player.CanSee(this)){
						B.Add(toggler.TheVisible() + " opens the door. ");
					}
					else{
						if(seen || player.DistanceFrom(this) <= 6){
							B.Add("You hear a door opening. ");
						}
					}
				}
			}
			if(toggler != null){
				if(original_type == TileType.RUBBLE){
					B.Add(toggler.YouVisible("shift") + " the rubble aside. ",this);
				}
			}
		}
开发者ID:tommyettinger,项目名称:ForaysIntoSaltarelle,代码行数:75,代码来源:Tile.cs


注:本文中的Forays.PhysicalObject.YouVisible方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。