示例#1
0
        public override void OnLoad(EventArgs e)
        {
            window.Mouse.ButtonDown += new EventHandler<OpenTK.Input.MouseButtonEventArgs>(Mouse_ButtonDown);
            the3d.d_Config3d = new Config3d();
            the3d.d_GetFile = getfile;
            the3d.d_Terrain = new TerrainTextures();
            the3d.d_TextRenderer = new TextRenderer();
            the3d.d_ViewportSize = viewportsize;

            var dataItems = new GameDataItems();
            var inventory = new Inventory();
            var server = new InventoryServer();
            var inventoryUtil = new InventoryUtil();
            hud = new HudInventory();
            hud.dataItems = dataItems;
            hud.inventory = inventory;
            hud.inventoryUtil = inventoryUtil;
            hud.controller = server;
            hud.viewport_size = viewportsize;
            hud.mouse_current = this;
            hud.the3d = the3d;
            hud.getfile = getfile;
            hud.ActiveMaterial = new ActiveMaterialDummy();
            hud.viewport3d = new Viewport3dSelectedBlockDummy();
            server.d_Items = dataItems;
            server.d_Inventory = inventory;
            server.d_InventoryUtil = inventoryUtil;
            server.d_DropItem = new DropItemDummy();
            inventoryUtil.d_Inventory = inventory;
            inventoryUtil.d_Items = dataItems;

            for (int i = 0; i < 10; i++)
            {
                inventory.Items.Add(new ProtoPoint(i * 1, 0), new Item() { ItemClass = ItemClass.Block, BlockId = i });
                inventory.Items.Add(new ProtoPoint(i * 1, 6), new Item() { ItemClass = ItemClass.Block, BlockId = i });
            }
            inventory.RightHand[0] = new Item() { ItemClass = ItemClass.Weapon, ItemId = "inventory_weapon_hand_axe.png" };
            inventory.Boots = new Item() { ItemClass = ItemClass.Boots, ItemId = "inventory_boots_shoes.png" };
            inventory.Gauntlet = new Item() { ItemClass = ItemClass.Gauntlet, ItemId = "inventory_gauntlet_gloves.png" };
            inventory.Helmet = new Item() { ItemClass = ItemClass.Helmet, ItemId = "inventory_helmet_zischagge.png" };
            inventory.MainArmor = new Item() { ItemClass = ItemClass.MainArmor, ItemId = "inventory_armor_plate_mail.png" };
            inventory.LeftHand[0] = new Item() { ItemClass = ItemClass.Shield, ItemId = "inventory_shield_small_shield.png" };
            inventory.Items.Add(new ProtoPoint(0, 1), new Item() { ItemClass = ItemClass.Weapon, ItemId = "inventory_weapon_shovel.png" });
            inventory.Items.Add(new ProtoPoint(2, 1), new Item() { ItemClass = ItemClass.Weapon, ItemId = "inventory_weapon_knife.png" });
            inventory.Items.Add(new ProtoPoint(3, 1), new Item() { ItemClass = ItemClass.Weapon, ItemId = "inventory_weapon_club.png" });
            inventory.Items.Add(new ProtoPoint(4, 1), new Item() { ItemClass = ItemClass.MainArmor, ItemId = "inventory_armor_plate_mail.png" });
            inventory.Items.Add(new ProtoPoint(6, 1), new Item() { ItemClass = ItemClass.Weapon, ItemId = "inventory_weapon_maul.png" });
            inventory.Items.Add(new ProtoPoint(8, 1), new Item() { ItemClass = ItemClass.Weapon, ItemId = "inventory_sword.png" });
            inventory.Items.Add(new ProtoPoint(9, 1), new Item() { ItemClass = ItemClass.Other, ItemId = "inventory_health_potion.png" });
        }
示例#2
0
        private void MakeGame()
        {
            var getfile = this.getfile;
            var gamedata = new GameDataCsv();
            var clientgame = w;
            ICurrentSeason currentseason = clientgame;
            gamedata.CurrentSeason = currentseason;
            var network = w;
            var mapstorage = clientgame;
            var config3d = new Config3d();
            var mapManipulator = new MapManipulator();
            var the3d = new The3d();
            the3d.d_GetFile = getfile;
            the3d.d_Config3d = config3d;
            the3d.d_ViewportSize = w;
            w.d_The3d = the3d;
            var localplayerposition = w;
            var physics = new CharacterPhysics();
            var internetgamefactory = this;
            ICompression compression = new CompressionGzip(); //IsSinglePlayer ? (ICompression)new CompressionGzip() : new CompressionGzip();
            network.d_Compression = compression;
            network.d_ResetMap = this;
            if (IsSinglePlayer)
            {
                var socket = new SocketDummy() { network = this.dummyNetwork };
                network.main = socket;
            }
            else
            {
                network.main = new SocketNet(new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp));
            }
            var terrainTextures = new TerrainTextures();
            terrainTextures.d_GetFile = getfile;
            terrainTextures.d_The3d = the3d;
            bool IsMono = Type.GetType("Mono.Runtime") != null;
            terrainTextures.d_TextureAtlasConverter = new TextureAtlasConverter();
            if (IsMono)
            {
                terrainTextures.d_TextureAtlasConverter.d_FastBitmapFactory = () => { return new FastBitmapDummy(); };
            }
            else
            {
                terrainTextures.d_TextureAtlasConverter.d_FastBitmapFactory = () => { return new FastBitmap(); };
            }
            terrainTextures.Start();
            w.d_TerrainTextures = terrainTextures;
            var blockrenderertorch = new BlockRendererTorch();
            blockrenderertorch.d_TerainRenderer = terrainTextures;
            blockrenderertorch.d_Data = gamedata;
            //InfiniteMapChunked map = new InfiniteMapChunked();// { generator = new WorldGeneratorDummy() };
            var map = w;
            var terrainchunktesselator = new TerrainChunkTesselator();
            terrainchunktesselator.d_Config3d = config3d;
            terrainchunktesselator.d_Data = gamedata;
            terrainchunktesselator.d_MapStorage = clientgame;
            terrainchunktesselator.d_MapStoragePortion = map;
            terrainchunktesselator.d_MapStorageLight = clientgame;
            w.d_TerrainChunkTesselator = terrainchunktesselator;
            var frustumculling = new FrustumCulling() { d_GetCameraMatrix = the3d };
            w.d_Batcher = new MeshBatcher() { d_FrustumCulling = frustumculling };
            w.d_FrustumCulling = frustumculling;
            w.BeforeRenderFrame += (a, b) => { frustumculling.CalcFrustumEquations(); };
            terrainchunktesselator.d_BlockRendererTorch = blockrenderertorch;
            terrainchunktesselator.d_TerrainTextures = terrainTextures;
            //w.d_Map = clientgame.mapforphysics;
            w.d_Physics = physics;
            w.d_Clients = clientgame;
            w.d_Data = gamedata;
            w.d_DataMonsters = new GameDataMonsters(getfile);
            w.d_GetFile = getfile;
            w.d_Config3d = config3d;
            w.d_MapManipulator = mapManipulator;
            w.PickDistance = 4.5f;
            var skysphere = new SkySphere();
            skysphere.d_MeshBatcher = new MeshBatcher() { d_FrustumCulling = new FrustumCullingDummy() };
            skysphere.d_LocalPlayerPosition = localplayerposition;
            skysphere.d_The3d = the3d;
            w.skysphere = skysphere;
            var textrenderer = new ManicDigger.Renderers.TextRenderer();
            w.d_TextRenderer = textrenderer;
            Inventory inventory = Inventory.Create();
            weapon = new WeaponBlockInfo() { d_Data = gamedata, d_Terrain = terrainTextures, d_Viewport = w, d_Map = clientgame, d_Shadows = w, d_Inventory = inventory, d_LocalPlayerPosition = w };
            w.d_Weapon = new WeaponRenderer() { d_Info = weapon, d_BlockRendererTorch = blockrenderertorch, d_LocalPlayerPosition = w };
            var playerrenderer = new CharacterRendererMonsterCode();
            playerrenderer.Load(new List<string>(MyStream.ReadAllLines(getfile.GetFile("player.mdc"))));
            w.d_CharacterRenderer = playerrenderer;
            particle = new ParticleEffectBlockBreak() { d_Data = gamedata, d_Map = clientgame, d_Terrain = terrainTextures };
            w.particleEffectBlockBreak = particle;
            w.ENABLE_FINITEINVENTORY = false;
            w.d_Shadows = w;
            clientgame.d_Data = gamedata;
            clientgame.d_CraftingTableTool = new CraftingTableTool() { d_Map = mapstorage };
            clientgame.d_Audio = audio;
            clientgame.d_RailMapUtil = new RailMapUtil() { d_Data = gamedata, d_MapStorage = clientgame };
            clientgame.d_MinecartRenderer = new MinecartRenderer() { d_GetFile = getfile, d_The3d = the3d };
            clientgame.d_TerrainTextures = terrainTextures;
            clientgame.d_GetFile = getfile;
            var craftingrecipes = new CraftingRecipes();
            craftingrecipes.data = gamedata;
            w.d_CraftingRecipes = craftingrecipes;
            network.d_CraftingRecipes = craftingrecipes;
            w.Reset(10 * 1000, 10 * 1000, 128);
            clientgame.d_Map = map;
            PlayerSkinDownloader playerskindownloader = new PlayerSkinDownloader();
            playerskindownloader.d_Exit = exit;
            playerskindownloader.d_The3d = the3d;
            playerskindownloader.skinserver = "http://fragmer.net/md/skins/";
            w.playerskindownloader = playerskindownloader;
            w.d_FpsHistoryGraphRenderer = new HudFpsHistoryGraphRenderer() { d_Draw = the3d, d_ViewportSize = w };
            w.d_Screenshot = new Screenshot() { d_GameWindow = maingamewindow };
            w.d_FrustumCulling = frustumculling;
            physics.d_Map = clientgame.mapforphysics;
            physics.d_Data = gamedata;
            audio.d_GetFile = getfile;
            audio.d_GameExit = exit;
            this.map = map;
            the3d.d_Terrain = terrainTextures;
            the3d.d_TextRenderer = textrenderer;
            w.d_CurrentShadows = this;
            var sunmoonrenderer = new SunMoonRenderer() { d_Draw2d = the3d, d_LocalPlayerPosition = w, d_GetFile = getfile, d_The3d = the3d };
            w.d_SunMoonRenderer = sunmoonrenderer;
            clientgame.d_SunMoonRenderer = sunmoonrenderer;
            this.heightmap = new InfiniteMapChunked2d() { d_Map = map };
            heightmap.Restart();
            network.d_Heightmap = heightmap;
            this.light = new InfiniteMapChunkedSimple() { d_Map = map };
            light.Restart();
            this.terrainchunktesselator = terrainchunktesselator;
            w.d_TerrainChunkTesselator = terrainchunktesselator;
            terrainchunktesselator.d_Shadows = w;
            if (fullshadows)
            {
                UseShadowsFull();
            }
            else
            {
                UseShadowsSimple();
            }
            w.d_HudChat = new ManicDigger.Gui.HudChat() { d_Draw2d = the3d, d_ViewportSize = w };

            var dataItems = new GameDataItemsBlocks() { d_Data = gamedata };
            var inventoryController = clientgame;
            var inventoryUtil = new InventoryUtil();
            var hudInventory = new HudInventory();
            hudInventory.dataItems = dataItems;
            hudInventory.inventory = inventory;
            hudInventory.inventoryUtil = inventoryUtil;
            hudInventory.controller = inventoryController;
            hudInventory.viewport_size = w;
            hudInventory.mouse_current = w;
            hudInventory.the3d = the3d;
            hudInventory.getfile = getfile;
            hudInventory.ActiveMaterial = w;
            hudInventory.viewport3d = w;
            w.d_Inventory = inventory;
            w.d_InventoryController = inventoryController;
            w.d_InventoryUtil = inventoryUtil;
            inventoryUtil.d_Inventory = inventory;
            inventoryUtil.d_Items = dataItems;

            clientgame.d_Inventory = inventory;
            w.d_HudInventory = hudInventory;
            if (Debugger.IsAttached)
            {
                new DependencyChecker(typeof(InjectAttribute)).CheckDependencies(
                    w, audio, gamedata, clientgame, network, mapstorage, getfile,
                    config3d, mapManipulator, w, the3d, exit,
                    localplayerposition, physics,
                    internetgamefactory, blockrenderertorch, playerrenderer,
                    map, terrainchunktesselator);
            }
        }