コード例 #1
0
        private static void WriteHFile(string buildPath, Level level, string version, FormBuildProgress bpf)
        {
            string       withoutExtension = Path.GetFileNameWithoutExtension(buildPath);
            StreamWriter text             = File.CreateText(Path.GetDirectoryName(buildPath) + "\\" + withoutExtension + ".h");

            LevelBuilder.WriteHeaderComment(text, level, version);
            text.WriteLine("#pragma once");
            text.WriteLine("");
            text.WriteLine("#include \"MA_LevelDescription.h\"");
            text.WriteLine("");
            text.WriteLine("class " + withoutExtension + " : public MA_LevelDescription");
            text.WriteLine("{");
            text.WriteLine("public:");
            text.WriteLine("    " + withoutExtension + "();");
            text.WriteLine("};");
            text.WriteLine("");
            text.Close();
        }
コード例 #2
0
        private static void WriteCPPFile(string buildPath, Level level, string version, FormBuildProgress bpf)
        {
            StreamWriter text             = File.CreateText(buildPath);
            string       withoutExtension = Path.GetFileNameWithoutExtension(buildPath);

            LevelBuilder.WriteHeaderComment(text, level, version);
            text.WriteLine("#include \"MA_LevelContainer.h\"");
            text.WriteLine("#include \"" + withoutExtension + ".h\"");
            text.WriteLine("#include \"all_gfx.h\"");
            text.WriteLine("");
            text.WriteLine(withoutExtension + "::" + withoutExtension + "() : MA_LevelDescription()");
            text.WriteLine("{");
            text.WriteLine("    // NB all coordinates are (x<<8)");
            text.WriteLine("    this->levelName = \"" + level.Name + "\";");
            text.WriteLine("    ");
            text.WriteLine("    // Set the dimension of the level");
            text.WriteLine("    this->levelWidth = " + (object)level.Width + "<<8;");
            text.WriteLine("    this->levelHeight = " + (object)level.Height + "<<8;");
            text.WriteLine("    ");
            text.WriteLine("    // Define the goal requirements for pickups (gold, silver, bronze)");
            text.WriteLine("    this->pickupRequirements[0] = " + (object)level.TargetFishCountGold + ";");
            text.WriteLine("    this->pickupRequirements[1] = " + (object)level.TargetFishCountSilver + ";");
            text.WriteLine("    this->pickupRequirements[2] = " + (object)level.TargetFishCountBronze + ";");
            text.WriteLine("    ");
            text.WriteLine("    // Define the time allowance in seconds for gold, silver, bronze");
            text.WriteLine("    this->totalTimeRequirements[0] = " + (object)level.NewTargetTime1Gold + ";");
            text.WriteLine("    this->totalTimeRequirements[1] = " + (object)level.NewTargetTime2Silver + ";");
            text.WriteLine("    this->totalTimeRequirements[2] = " + (object)level.NewTargetTime3Bronze + ";");
            text.WriteLine("    ");
            text.WriteLine("    // Add some tiles (xPos, yPos, tileIndex, moving, moveVectorX, movevectorY, movespeed)");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_Tile) == entity.GetType())
                {
                    MA_Tile maTile = entity as MA_Tile;
                    if (maTile.TileGroup == TileGroup.NoGroup)
                    {
                        text.WriteLine("    this->AddTile(" + (object)(int)maTile.Position.X + "<<8, " + (object)(int)maTile.Position.Y + "<<8, " + (object)0 + ", " + (maTile.IsMoving ? (object)"true" : (object)"false") + ", " + (object)(int)maTile.MoveVector.X + "<<8, " + (object)(int)maTile.MoveVector.Y + "<<8, " + (object)1 + ");");
                    }
                    else
                    {
                        text.WriteLine("    this->CreateTileSet(" + (object)(int)maTile.Position.X + "<<8, " + (object)(int)maTile.Position.Y + "<<8, " + (object)maTile.TileGroup + ", " + (maTile.IsMoving ? (object)"true" : (object)"false") + ", " + (object)(int)maTile.MoveVector.X + "<<8, " + (object)(int)maTile.MoveVector.Y + "<<8, " + (object)1 + ");");
                    }
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add pickups");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_Pickup) == entity.GetType())
                {
                    MA_Pickup maPickup = entity as MA_Pickup;
                    text.WriteLine("    this->AddCollectable(" + (object)(int)maPickup.Position.X + "<<8, " + (object)(int)maPickup.Position.Y + "<<8, " + (object)(int)maPickup.Offset.X + "<<8, " + (object)(int)maPickup.Offset.Y + "<<8, (void*)fishjump_Sprite, " + (object)maPickup.SpriteSize + ");");
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add signs");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_Sign) == entity.GetType())
                {
                    MA_Sign maSign = entity as MA_Sign;
                    text.WriteLine("    this->AddSign(" + (object)(int)maSign.Position.X + "<<8, " + (object)(int)maSign.Position.Y + "<<8, " + (object)(int)maSign.Offset.X + "<<8, " + (object)(int)maSign.Offset.Y + "<<8, (void*)sign_3_Sprite, " + (object)maSign.SpriteSize + ", \"" + maSign.SignText + "\");");
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add checkpoints");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_Checkpoint) == entity.GetType())
                {
                    MA_Checkpoint maCheckpoint = entity as MA_Checkpoint;
                    text.WriteLine("    this->AddCheckpoint(" + (object)(int)maCheckpoint.Position.X + "<<8, " + (object)(int)maCheckpoint.Position.Y + "<<8, " + (object)(int)maCheckpoint.Offset.X + "<<8, " + (object)(int)maCheckpoint.Offset.Y + "<<8, (void*)snowman_Sprite, " + (object)maCheckpoint.SpriteSize + ");");
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add penguin");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_PlayerPenguin) == entity.GetType())
                {
                    MA_PlayerPenguin maPlayerPenguin = entity as MA_PlayerPenguin;
                    text.WriteLine("    this->AddPenguin(" + (object)(int)maPlayerPenguin.Position.X + "<<8, " + (object)(int)maPlayerPenguin.Position.Y + "<<8);");
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add polar bear(s)");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_PlayerPolarBear) == entity.GetType())
                {
                    MA_PlayerPolarBear maPlayerPolarBear = entity as MA_PlayerPolarBear;
                    text.WriteLine("    this->AddPolarBear(" + (object)(int)maPlayerPolarBear.Position.X + "<<8, " + (object)(int)maPlayerPolarBear.Position.Y + "<<8);");
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add ice blocks");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_IceBlock) == entity.GetType())
                {
                    MA_IceBlock maIceBlock = entity as MA_IceBlock;
                    text.WriteLine("    this->AddIceBlock(" + (object)(int)maIceBlock.Position.X + "<<8, " + (object)(int)maIceBlock.Position.Y + "<<8);");
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add start gate");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_StartGate) == entity.GetType())
                {
                    MA_StartGate maStartGate = entity as MA_StartGate;
                    text.WriteLine("    this->AddStartGate(" + (object)(int)maStartGate.Position.X + "<<8, " + (object)(int)maStartGate.Position.Y + "<<8);");
                }
            }
            text.WriteLine("    ");
            text.WriteLine("    // Add finish gate");
            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_FinishGate) == entity.GetType())
                {
                    MA_FinishGate maFinishGate = entity as MA_FinishGate;
                    text.WriteLine("    this->AddFinishGate(" + (object)(int)maFinishGate.Position.X + "<<8, " + (object)(int)maFinishGate.Position.Y + "<<8);");
                }
            }
            text.WriteLine("    ");
            int num = 0;

            foreach (object entity in level.Entities)
            {
                if (typeof(MA_Node) == entity.GetType())
                {
                    ++num;
                }
            }
            text.WriteLine("    // Create shark nodes - make sure to give the nodes neighbours otherwise the shark will get stuck");
            text.WriteLine("    this->sharkNodeCount = " + (object)num + ";");
            text.WriteLine("    ");
            text.WriteLine("    // Create an array of nodes");
            text.WriteLine("    this->sharkNodes = new MA_Node[this->sharkNodeCount];");
            text.WriteLine("    ");
            List <MA_Node> maNodeList = new List <MA_Node>();

            foreach (MA_Entity entity in level.Entities)
            {
                if (typeof(MA_Node) == entity.GetType())
                {
                    maNodeList.Add(entity as MA_Node);
                }
            }
            for (int index1 = 0; index1 < maNodeList.Count; ++index1)
            {
                MA_Node maNode = maNodeList[index1];
                text.WriteLine("    this->sharkNodes[" + (object)index1 + "].X = " + (object)(float)maNode.Position.X + " << 8;");
                text.WriteLine("    this->sharkNodes[" + (object)index1 + "].Y = " + (object)(float)maNode.Position.Y + " << 8;");
                for (int index2 = 0; index2 < maNode.Neighbours.Count; ++index2)
                {
                    for (int index3 = 0; index3 < maNodeList.Count; ++index3)
                    {
                        if (maNodeList[index3].NodeID == maNode.Neighbours[index2])
                        {
                            text.WriteLine("    this->sharkNodes[" + (object)index1 + "].AddNeighbour(" + (object)index3 + ");");
                        }
                    }
                }
                if (maNode.SharkNode)
                {
                    text.WriteLine("    this->AddShark(" + (object)index1 + ");");
                }
                text.WriteLine("    ");
            }
            text.WriteLine("}");
            text.Close();
        }
コード例 #3
0
 public static void Build(string buildPath, Level level, string version, FormBuildProgress bpf)
 {
     LevelBuilder.WriteHFile(buildPath, level, version, bpf);
     LevelBuilder.WriteCPPFile(buildPath, level, version, bpf);
 }