Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }