public void AddActorAction(IActor Actor, Object callback = null, String saveDictionary = "", bool IsDynamic = false) { String id = null; CallbackDTO cdo = new CallbackDTO(); PropertyInfo Description = null; PropertyInfo Name = null; PropertyInfo Scene = null; if (callback != null) { Description = callback.GetType().GetProperty("Description"); Name = callback.GetType().GetProperty("Name"); Scene = callback.GetType().GetProperty("Scene"); var t = callback.GetType().GetProperty("t"); var c = callback.GetType().GetProperty("c"); if (c != null) { id = Guid.NewGuid().ToString("N"); cdo.c = (Action)c.GetValue(callback, null); cdo.Scene = (Scene == null) ? data.CurrentScene : Scene.GetValue(callback, null).ToString(); cdo.CurrentScene = data.CurrentScene; cdo.IsDynamicScene = IsDynamic; if (saveDictionary != "") { if (!GLTempData.CallBackSaveList.ContainsKey(saveDictionary)) { GLTempData.CallBackSaveList.Add(saveDictionary, cdo.c); } else { GLTempData.CallBackSaveList[saveDictionary] = cdo.c; } } } if (t != null) { id = Guid.NewGuid().ToString("N"); cdo.t = Convert.ToInt32(t.GetValue(callback, null).ToString()); cdo.Scene = (Scene == null) ? data.CurrentScene : Scene.GetValue(callback, null).ToString(); cdo.CurrentScene = data.CurrentScene; } if (id != null) { sc.Callbacks.Add(id, cdo); } } ActorsDTO adt = new ActorsDTO() { id = id, Name = (Name == null) ? Actor.Name : Name.GetValue(callback, null).ToString(), Scene = (Scene == null) ? data.CurrentScene : Scene.GetValue(callback, null).ToString(), Description = (Description == null) ? "" : Description.GetValue(callback, null).ToString(), t = Actor.t, c = Actor.c }; sc.Actors.Add(adt); }
public GLScene GetView(String SceneID, bool newGame = false) { CurrentScenes(SceneID); String className = SceneID.Replace("/", "."); var gameObject = RunClass(className, newGame); if (gameObject == null) { return(new GLScene(new Exception("Game scene " + className + " not found"))); } if (game.data.CurrentLocation != null && game.data.CurrentLocation.LocationBags != null && game.data.CurrentLocation.LocationBags.Count > 0) { foreach (var lb in game.data.CurrentLocation.LocationBags) { CallbackDTO cdo = new CallbackDTO(); String id = Guid.NewGuid().ToString("N"); cdo.c = (Action)(() => { ((Room)(game.data.CurrentLocation)).GetBag(game.data.player, lb); }); cdo.Scene = game.data.CurrentLocation.Scene; cdo.CurrentScene = game.data.CurrentScene; game.sc.Callbacks.Add(id, cdo); ActorsDTO adto = new ActorsDTO() { id = id, Name = "Взять " + lb.Name, Scene = game.data.CurrentLocation.Scene, Description = "Забрать сумку " + lb.Name }; game.sc.Actors.Add(adto); } } return(game); }