SCRLSURF.CPP
上传用户:abcdshs
上传日期:2007-01-07
资源大小:1858k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. // (C) Copyright 1996-1998 by Anthony J. Carin.  All Rights Reserved.
  2. #include "stdafx.h"
  3. #include "scrlsurf.h"
  4. scrollsurf::scrollsurf()
  5. {
  6.     m_bmps = m_curr = NULL;
  7. }
  8. scrollsurf::~scrollsurf()
  9. {
  10.     bmpsurfholder *tmp = m_bmps;
  11.     while (tmp)
  12.     {
  13.         m_curr = tmp->m_next;
  14.         delete tmp;
  15.         tmp = m_curr;
  16.     }
  17. }
  18. void scrollsurf::draw()
  19. {
  20.     if (m_curr)
  21.     {
  22.         m_curr->m_bmp.draw();
  23.         m_curr = m_curr->m_next;
  24.         if (m_curr == NULL)
  25.             m_curr = m_bmps;
  26.     }
  27. }
  28. void scrollsurf::ExemptFromIntersect()
  29. {
  30.     bmpsurfholder *tmp = m_bmps;
  31.     while (tmp)
  32.     {
  33.         tmp->m_bmp.ExemptFromIntersect();
  34.         tmp = tmp->m_next;
  35.     }
  36. }
  37. void scrollsurf::OKToIntersect()
  38. {
  39.     bmpsurfholder *tmp = m_bmps;
  40.     while (tmp)
  41.     {
  42.         tmp->m_bmp.OKToIntersect();
  43.         tmp = tmp->m_next;
  44.     }
  45. }
  46. char scrollsurf::intersects(coordinate &a, coordinate &b)
  47. {
  48.     if (m_curr)
  49.         return m_curr->m_bmp.intersects(a, b);
  50.     return FALSE;
  51. }
  52. void scrollsurf::xrotate(direction& d)
  53. {
  54.     bmpsurfholder *tmp = m_bmps;
  55.     while (tmp)
  56.     {
  57.         tmp->m_bmp.xrotate(d);
  58.         tmp = tmp->m_next;
  59.     }
  60. }
  61. void scrollsurf::yrotate(direction& d)
  62. {
  63.     bmpsurfholder *tmp = m_bmps;
  64.     while (tmp)
  65.     {
  66.         tmp->m_bmp.yrotate(d);
  67.         tmp = tmp->m_next;
  68.     }
  69. }
  70. void scrollsurf::zrotate(direction& d)
  71. {
  72.     bmpsurfholder *tmp = m_bmps;
  73.     while (tmp)
  74.     {
  75.         tmp->m_bmp.zrotate(d);
  76.         tmp = tmp->m_next;
  77.     }
  78. }
  79. scrollsurf::scrollsurf(surfs& s) : surfs(s)
  80. {
  81.     bmpsurfholder *tmp = m_bmps;
  82.     while (tmp)
  83.     {
  84.         tmp->m_bmp = s;
  85.         tmp = tmp->m_next;
  86.     }
  87. }
  88. void scrollsurf::CalcNormals()
  89. {
  90.     bmpsurfholder *tmp = m_bmps;
  91.     while (tmp)
  92.     {
  93.         tmp->m_bmp.CalcNormals();
  94.         tmp = tmp->m_next;
  95.     }
  96. }
  97. coordinate& scrollsurf::intersectingpoint()
  98. {
  99.     static coordinate c;
  100.     if (m_curr)
  101.         c = m_curr->m_bmp.intersectingpoint();
  102.     return c;
  103. }
  104. char scrollsurf::iswithin(coordinate& c)
  105. {
  106.     if (m_curr)
  107.         return m_curr->m_bmp.iswithin(c);
  108.     return FALSE;
  109. }
  110. void scrollsurf::addsurf(CString& filename)
  111. {
  112.     m_curr = new bmpsurfholder(filename);
  113.     m_curr->m_next = m_bmps;
  114.     m_bmps = m_curr;
  115. }
  116. void scrollsurf::setto(coordinate& a, coordinate& b, coordinate& c, coordinate& d)
  117. {
  118.     bmpsurfholder *tmp = m_bmps;
  119.     while (tmp)
  120.     {
  121.         tmp->m_bmp.setto(a, b, c, d);
  122.         tmp = tmp->m_next;
  123.     }
  124. }
  125. void scrollsurf::operator =(surfs& s)
  126. {
  127.     bmpsurfholder *tmp = m_bmps;
  128.     while (tmp)
  129.     {
  130.         tmp->m_bmp = s;
  131.         tmp = tmp->m_next;
  132.     }
  133. }
  134. void scrollsurf::operator +=(coordinate& c)
  135. {
  136.     bmpsurfholder *tmp = m_bmps;
  137.     while (tmp)
  138.     {
  139.         tmp->m_bmp += c;
  140.         tmp = tmp->m_next;
  141.     }
  142. }