Beispiel #1
0
 private void ReadToEndOfGroove(BaseTextFile file)
 {
     while (true)
     {
         string line = file.ReadLine();
         if (line == "NEXT GROOVE")
         {
             return;
         }
         if (line == "END OF GROOVE")
         {
             AtEnd = true;
             return;
         }
     }
 }
Beispiel #2
0
 private void ReadToEndOfFunk(BaseTextFile file)
 {
     while (true)
     {
         string line = file.ReadLine();
         if (line == "NEXT FUNK")
         {
             return;
         }
         if (line == "END OF FUNK")
         {
             AtEnd = true;
             return;
         }
     }
 }
Beispiel #3
0
        public BaseGroove Read(BaseTextFile file)
        {
            string actorName = file.ReadLine();

            if (actorName == "END OF GROOVE")
            {
                AtEnd = true;
                return(null);
            }

            string lollipop = file.ReadLine().ToUpper();

            Trace.Assert(lollipop.StartsWith("NOT A"));
            string     movement = file.ReadLine();           //constant / distance
            string     pathType = file.ReadLine().ToUpper(); //no path
            PathGroove path     = null;

            if (pathType == "STRAIGHT")
            {
                path                  = new PathGroove();
                path.Motion           = (Motion)Enum.Parse(typeof(Motion), file.ReadLine(), true);
                path.CenterOfMovement = file.ReadLineAsVector3(false);
                path.Speed            = file.ReadLineAsFloat(false);
                path.Movement         = file.ReadLineAsVector3(false);
            }
            //Trace.Assert(path.StartsWith("NO "));
            string action = file.ReadLine().ToUpper();

            if (action == "SPIN")
            {
                SpinGroove spin = new SpinGroove();

                spin.ActorName = actorName;
                string actionTrigger = file.ReadLine(); //continuous, controlled
                spin.Speed            = file.ReadLineAsFloat(false);
                spin.CenterOfMovement = file.ReadLineAsVector3(false);
                spin.Axis             = (Axis)Enum.Parse(typeof(Axis), file.ReadLine(), true);
                spin.Path             = path;
                ReadToEndOfGroove(file);
                return(spin);
            }
            else if (action == "ROCK")
            {
                RockGroove rock = new RockGroove();
                rock.ActorName        = actorName;
                rock.Motion           = (Motion)Enum.Parse(typeof(Motion), file.ReadLine(), true);
                rock.Speed            = file.ReadLineAsFloat(false);
                rock.CenterOfMovement = file.ReadLineAsVector3(false);
                rock.Axis             = (Axis)Enum.Parse(typeof(Axis), file.ReadLine(), true);
                rock.MaxAngle         = MathHelper.ToRadians(file.ReadLineAsFloat(false)); //in degrees in file
                rock.Path             = path;
                ReadToEndOfGroove(file);
                return(rock);
            }
            else
            {
                if (!action.StartsWith("NO OB"))
                {
                }
                ReadToEndOfGroove(file);
                if (path != null)
                {
                    path.ActorName = actorName;
                    return(path);
                }
                return(null);
            }
        }
Beispiel #4
0
 private void ReadToEndOfFunk(BaseTextFile file)
 {
     while (true)
     {
         string line = file.ReadLine();
         if (line == "NEXT FUNK")
             return;
         if (line == "END OF FUNK")
         {
             AtEnd = true;
             return;
         }
     }
 }
Beispiel #5
0
        public BaseFunk Read(BaseTextFile file)
        {
            string materialName = file.ReadLine();

            if (materialName == "END OF FUNK")
            {
                AtEnd = true;
                return null;
            }

            string activation = file.ReadLine();
            string animation = file.ReadLine().ToUpper();
            while (animation != "FLIC" && animation != "FRAMES" && animation != "ROLL"
                && animation != "THROB" && animation != "SLITHER" && animation != "SPIN")
            {
                animation = file.ReadLine().ToUpper();
            }

            if (animation == "FLIC")
            {
                file.ReadLine(); //approximate/accurate
                string fliname = file.ReadLine();
                FlicFunk flic = new FlicFunk(fliname);
                flic.MaterialName = materialName;
                ReadToEndOfFunk(file);
                return flic;
            }
            else if (animation == "FRAMES")
            {
                file.ReadLine(); //approximate/accurate
                file.ReadLine(); //continuous

                FramesFunk frames = new FramesFunk();
                frames.MaterialName = materialName;

                frames.Speed = 1 / file.ReadLineAsFloat(false);
                int nbrFrames = file.ReadLineAsInt();
                for (int i = 0; i < nbrFrames; i++)
                {
                    frames.FrameNames.Add(file.ReadLine());
                }
                ReadToEndOfFunk(file);
                return frames;
            }
            else if (animation == "ROLL")
            {
                string loop = file.ReadLine();
                RollFunk roll = new RollFunk();
                roll.MaterialName = materialName;
                roll.Speed = file.ReadLineAsVector2(false);
                ReadToEndOfFunk(file);
                return roll;
            }
            else if (animation == "SLITHER")
            {
                SlitherFunk slither = new SlitherFunk();
                slither.MaterialName = materialName;
                slither.Motion = (Motion)Enum.Parse(typeof(Motion), file.ReadLine(), true);
                slither.CyclesPerSecond = file.ReadLineAsVector2(false);
                slither.MoveDistance = file.ReadLineAsVector2(false)/12;
                slither.Initialize();
                ReadToEndOfFunk(file);
                return slither;
            }
            else if (animation == "THROB")
            {
                ThrobFunk throb = new ThrobFunk();
                throb.MaterialName = materialName;
                throb.Motion = (Motion)Enum.Parse(typeof(Motion), file.ReadLine(), true);
                throb.CyclesPerSecond = file.ReadLineAsVector2(false);
                throb.MoveDistance = file.ReadLineAsVector2(false) / 12;
                throb.Initialize();
                ReadToEndOfFunk(file);
                return throb;
            }
            else
            {
                ReadToEndOfFunk(file);
                return null;
            }
        }
Beispiel #6
0
        public BaseFunk Read(BaseTextFile file)
        {
            string materialName = file.ReadLine();

            if (materialName == "END OF FUNK")
            {
                AtEnd = true;
                return(null);
            }

            string activation = file.ReadLine();
            string animation  = file.ReadLine().ToUpper();

            while (animation != "FLIC" && animation != "FRAMES" && animation != "ROLL" &&
                   animation != "THROB" && animation != "SLITHER" && animation != "SPIN")
            {
                animation = file.ReadLine().ToUpper();
            }

            if (animation == "FLIC")
            {
                file.ReadLine(); //approximate/accurate
                string   fliname = file.ReadLine();
                FlicFunk flic    = new FlicFunk(fliname);
                flic.MaterialName = materialName;
                ReadToEndOfFunk(file);
                return(flic);
            }
            else if (animation == "FRAMES")
            {
                file.ReadLine(); //approximate/accurate
                file.ReadLine(); //continuous

                FramesFunk frames = new FramesFunk();
                frames.MaterialName = materialName;

                frames.Speed = 1 / file.ReadLineAsFloat(false);
                int nbrFrames = file.ReadLineAsInt();
                for (int i = 0; i < nbrFrames; i++)
                {
                    frames.FrameNames.Add(file.ReadLine());
                }
                ReadToEndOfFunk(file);
                return(frames);
            }
            else if (animation == "ROLL")
            {
                string   loop = file.ReadLine();
                RollFunk roll = new RollFunk();
                roll.MaterialName = materialName;
                roll.Speed        = file.ReadLineAsVector2(false);
                ReadToEndOfFunk(file);
                return(roll);
            }
            else if (animation == "SLITHER")
            {
                SlitherFunk slither = new SlitherFunk();
                slither.MaterialName    = materialName;
                slither.Motion          = (Motion)Enum.Parse(typeof(Motion), file.ReadLine(), true);
                slither.CyclesPerSecond = file.ReadLineAsVector2(false);
                slither.MoveDistance    = file.ReadLineAsVector2(false) / 12;
                slither.Initialize();
                ReadToEndOfFunk(file);
                return(slither);
            }
            else if (animation == "THROB")
            {
                ThrobFunk throb = new ThrobFunk();
                throb.MaterialName    = materialName;
                throb.Motion          = (Motion)Enum.Parse(typeof(Motion), file.ReadLine(), true);
                throb.CyclesPerSecond = file.ReadLineAsVector2(false);
                throb.MoveDistance    = file.ReadLineAsVector2(false) / 12;
                throb.Initialize();
                ReadToEndOfFunk(file);
                return(throb);
            }
            else
            {
                ReadToEndOfFunk(file);
                return(null);
            }
        }