Exemple #1
0
            public ScenarioGame(GodGameOffline offline, TWEngine engine, Internal.Model.World world,
                                TownCenterType townCenterType, TownCenterService townCenterService,
                                MinerType minerType)
            {
                this.world             = world;
                this.townCenterType    = townCenterType;
                this.townCenterService = townCenterService;
                this.minerType         = minerType;
                offline.AddSimulatorsToEngine(engine);

                int  skipFrames    = 0;
                var  scenarioTasks = Run().GetEnumerator();
                bool complete      = false;

                engine.AddSimulator(() =>
                {
                    skipFrames--;
                    if (skipFrames > 0)
                    {
                        return;
                    }
                    if (!scenarioTasks.MoveNext())
                    {
                        complete = true;
                    }

                    if (complete)
                    {
                        return;
                    }

                    skipFrames = scenarioTasks.Current;
                }, "ScenarioSimulator");
            }
Exemple #2
0
        public static SerializedWorld FromWorld(Internal.Model.World world)
        {
            var sWorld = new SerializedWorld();

            world.ForEach((v, p) => sWorld.Voxels.Add(SerializedVoxel.FromVoxel(v)));
            return(sWorld);
        }
 public static MHGameWork.TheWizards.GodGame.Internal.Model.World createTestWorld(int voxelSize, int size)
 {
     Internal.Model.World world = null;
     world = new MHGameWork.TheWizards.GodGame.Internal.Model.World((w, p) => new GameVoxel(w, p), new ProxyGenerator());
     world.Initialize(size, voxelSize);
     return(world);
 }
 public MonumentType(Func <IVoxelHandle, MonumentVoxelBrain> createMonumentVoxel, Internal.Model.World world)
     : base("Monument")
 {
     this.createMonumentVoxel = createMonumentVoxel;
     this.world = world;
     Color      = Color.Green;
 }
Exemple #5
0
        /*public static GodGameOffline CreateGame()
         * {
         *  var world = new Internal.Model.World(100, 10);
         *  buildDemoWorld(world);
         *
         *
         *
         *
         *  var ret = new GodGameOffline(EngineFactory.CreateEngine(), world);
         *
         *  return ret;
         * }*/

        private static void buildDemoWorld(Internal.Model.World world, VoxelTypesFactory typesFactory)
        {
            world.ForEach((v, p) =>
            {
                if (Vector2.Distance(p, new Vector2(100, 100)) < 100)
                {
                    v.Data.Type = typesFactory.Get <LandType>();
                }
                else if (Vector2.Distance(p, new Vector2(8, 8)) < 7)
                {
                    v.Data.Type = typesFactory.Get <LandType>();
                }
                else if (Vector2.Distance(p, new Vector2(25, 25)) < 15)
                {
                    v.Data.Type = typesFactory.Get <LandType>();
                }
                //v.ChangeType(GameVoxelType.Infestation);
                else
                {
                    v.Data.Type = typesFactory.Get <LandType>();
                }
            });


            /*var worldPersister = new WorldPersister(getTypeFromName, getItemFromName);
             * var simpleWorldRenderer = new SimpleWorldRenderer(world);
             * var ret = new GodGameOffline(EngineFactory.CreateEngine(),
             *  world,
             *  new UserInputProcessingService(createPlayerInputs(world).ToArray(), world, worldPersister, simpleWorldRenderer),
             *  worldPersister,
             *  simpleWorldRenderer);
             *
             * return ret;*/
        }
 public void ApplyVoxels(Internal.Model.World world, GameplayObjectsSerializer objectSerializer)
 {
     foreach (var voxel in Voxels)
     {
         var target = world.GetVoxel(new Point2(voxel.X, voxel.Y));
         voxel.ToVoxel(target, objectSerializer);
     }
 }
        public void Setup()
        {
            world = TestWorldBuilder.createTestWorld(20, 10);

            gameState = new GameState(world);

            inputHandler = Substitute.For <IPlayerInputHandler>();
            npf          = new NetworkedPlayerFactory(
                (transporter, handler) => new NetworkPlayerInputForwarder(transporter, handler, world),
                state => inputHandler, gameState);
        }
 private void addPersistence(WorldPersisterService persister, Internal.Model.World world)
 {
     addCommand("save", file =>
     {
         persister.Save(world, TWDir.GameData.CreateChild("Saves\\GodGame").CreateFile(file + ".xml"));
         return("Saved world to " + "Saves\\GodGame\\" + file + ".xml");
     });
     addCommand("load", file =>
     {
         persister.Load(world, TWDir.GameData.CreateChild("Saves\\GodGame").CreateFile(file + ".xml"));
         return("Loaded world to " + "Saves\\GodGame\\" + file + ".xml");
     });
 }
Exemple #9
0
        public ItemTypesFactory(Internal.Model.World world)
        {
            this.world = world;

            CropType    = CreateItemType("Crop", Color.Orange);
            FishType    = CreateItemType("Fish", Color.DeepSkyBlue);
            WoodType    = CreateItemType("Wood", Color.SaddleBrown);
            PigmentType = CreateItemType("Pigment", Color.DarkViolet);
            CrystalType = CreateItemType("Crystal", Color.LightBlue);
            StoneType   = CreateItemType("Stone", Color.Gray);

            rawTypes.ForEach(raw => createKanbanTypes(raw));
        }
Exemple #10
0
        public void ProcessChanges(Internal.Model.World world)
        {
            world.ChangedVoxels.ForEach(v =>
            {
                changedVoxels.OnNext(v);

                world.Get8Connected(v.Coord).ForEach(neighbour =>
                {
                    if (changeActions.ContainsKey(neighbour))
                    {
                        changeActions[neighbour](v);
                    }
                });
            });
        }
Exemple #11
0
 public void ToWorld(Internal.Model.World world, GameplayObjectsSerializer gameplayObjectsSerializer)
 {
     foreach (var el in Voxels)
     {
         var v = world.GetVoxel(new Point2(el.X, el.Y));
         if (v == null)
         {
             //Console.WriteLine("Deserializing voxel but world to small: " + el.X + ", " + el.Y);
             continue;
         }
         try
         {
             el.ToVoxel(v, gameplayObjectsSerializer);
         }
         catch (Exception ex)
         {
             DI.Get <IErrorLogger>().Log(ex, "Can't load voxel in serializedworld");
         }
     }
 }
Exemple #12
0
        public void Setup()
        {
            textarea      = new Textarea();
            textarea.Text = "";

            builder = new Autofac.ContainerBuilder();

            foreach (var type in Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Namespace != null && t.Namespace.StartsWith("MHGameWork.TheWizards.GodGame") &&
                                                                                  t.IsPublic))
            {
                builder.Register(delegate(IComponentContext ctx)
                {
                    textarea.Text += type.FullName + "\n";
                    return(new object());
                }).As(type);
            }

            world = TestWorldBuilder.createTestWorld(100, 10);
            builder.RegisterInstance(world);
            builder.RegisterInstance(worldPersister);

            builder.Register(ctx => new PlayerTool[0]).As <IEnumerable <PlayerTool> >();
        }
Exemple #13
0
        public void Setup()
        {
            var builder = new ContainerBuilder();

            builder.RegisterModule <OfflineGameModule>();
            builder.RegisterType <Internal.Model.World>().SingleInstance().AsSelf()
            .OnActivating(args =>
            {
                args.Instance.Initialize(10, 10);

                var land = args.Context.Resolve <LandType>();
                args.Instance.ForEach((v, p) => v.ChangeType(land));
            });


            var cont = builder.Build();

            var offline = cont.Resolve <GodGameOffline>();

            offline.AddSimulatorsToEngine(EngineFactory.CreateEngine());
            world = offline.World;
            types = cont.Resolve <VoxelTypesFactory>();
            items = cont.Resolve <ItemTypesFactory>();

            basicFactory    = new GenericVoxelType <BasicFactory>(v => new BasicFactory(v));
            constantFactory = new GenericVoxelType <ConstantFactory>(v => new ConstantFactory(v));
            pusher          = new GenericVoxelType <Pusher>(v => new Pusher(v));
            puller          = new GenericVoxelType <Puller>(v => new Puller(v));

            v55 = world.GetVoxel(new Point2(5, 5));
            v56 = world.GetVoxel(new Point2(5, 6));
            v57 = world.GetVoxel(new Point2(5, 7));

            v46 = world.GetVoxel(new Point2(4, 6));
            v36 = world.GetVoxel(new Point2(3, 6));
        }
        public AllCommandProvider(WorldPersisterService persister,
                                  Internal.Model.World world,
                                  VoxelTypesFactory typesFactory,
                                  ItemTypesFactory itemTypesFactory,
                                  UserInputProcessingService userInputProcessingService,
                                  GenericDatastore genericDatastore)
        {
            this.typesFactory     = typesFactory;
            this.itemTypesFactory = itemTypesFactory;
            this.genericDatastore = genericDatastore;
            addDummy();

            addPersistence(persister, world);

            addCommand("clearinfestation", () =>
            {
                world.ForEach((v, _) =>
                {
                    if (v.Type != typesFactory.Get <InfestationVoxelType>())
                    {
                        return;
                    }
                    typesFactory.Get <InfestationVoxelType>().CureInfestation(v);
                });

                return("Cleared all infestation!");
            });

            addCommand("helpall", () =>
            {
                return("All Commands: " + string.Join(", ", CommandNames.ToArray()));
            });
            addCommand("help", partialCommand =>
            {
                return("Commands containing '" + partialCommand + "': " + string.Join(", ", CommandNames.Where(c => c.Contains(partialCommand)).ToArray()));
            });
            addCommand("clearWorld", () =>
            {
                genericDatastore.ClearAll();
                world.ForEach((v, _) =>
                {
                    v.Data.Type = typesFactory.Get <LandType>();
                });
                return("World cleared!");
            });
            addCommand("listsaves", () =>
            {
                var saves        = TWDir.GameData.CreateChild("Saves\\GodGame").GetFiles().ToList();
                var outputstring = String.Join(", ", saves.Select(e => e.Name.Substring(0, e.Name.Length - 4)));     // Drop extension
                return("Saved games: \n" + outputstring);
            });

            addCommand("addresource", (typeStr, amountStr) =>
            {
                var itemType = itemTypesFactory.AllTypes.FirstOrDefault(t => t.Name.ToLower() == typeStr.ToLower());
                if (itemType == null)
                {
                    return("Item type not found: " + typeStr);
                }
                var amount = 0;
                if (!int.TryParse(amountStr, out amount))
                {
                    return("Invalid item amount: " + amountStr);
                }

                var target = userInputProcessingService.GetTargetedVoxel();
                if (target == null || target.Type != typesFactory.Get <WarehouseType>())
                {
                    return("Not targeting a warehouse");
                }

                target.Data.Inventory.AddNewItems(itemType, amount);

                return("Added items!");
            });
        }
 public NetworkPlayerInputForwarder(IClientPacketTransporter <UserInputHandlerPacket> transporter, IPlayerInputHandler handler, Internal.Model.World world)
 {
     this.transporter = transporter;
     this.handler     = handler;
     this.world       = world;
 }
Exemple #16
0
 public GenericDatastore(Internal.Model.World world)
 {
     this.world = world;
     RootRecord = CreateNewRecord();
 }