Background.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // $Id: foo.cpp 2979 2006-01-10 00:00:04Z sommer $
  2. //
  3. // Cobble - A simple SuperTux level editor
  4. // Copyright (C) 2006 Christoph Sommer <supertux@2006.expires.deltadevelopment.de>
  5. //
  6. // This program is free software; you can redistribute it and/or
  7. // modify it under the terms of the GNU General Public License
  8. // as published by the Free Software Foundation; either version 2
  9. // of the License, or (at your option) any later version.
  10. //
  11. // This program is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. // GNU General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU General Public License
  17. // along with this program; if not, write to the Free Software
  18. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  19. // 02111-1307, USA.
  20. using System;
  21. using System.Collections.Generic;
  22. using System.Text;
  23. using Lisp;
  24. namespace Cobble {
  25. public class Background {
  26. public string image;
  27. public float speed;
  28. public Background(Parser parser) {
  29. int d = parser.Depth;
  30. while (parser.Parse() && parser.Depth >= d) {
  31. if (parser.Depth == d + 1) {
  32. if (parser.Type != Parser.LispType.SYMBOL)
  33. throw new Exception("expected SYMBOL");
  34. string symbol = parser.SymbolValue;
  35. parser.Parse();
  36. switch (symbol) {
  37. case "image":
  38. this.image = parser.StringValue;
  39. break;
  40. case "speed":
  41. this.speed = parser.FloatValue;
  42. break;
  43. default:
  44. throw new Exception("Unexpected entry in background list: " + parser.SymbolValue);
  45. }
  46. }
  47. }
  48. }
  49. public Background(string image, float speed) {
  50. this.image = image;
  51. this.speed = speed;
  52. }
  53. public void Write(LispWriter writer) {
  54. writer.StartList("background");
  55. writer.Write("image", this.image);
  56. writer.Write("speed", this.speed);
  57. writer.EndList("background");
  58. }
  59. }
  60. }