Changed egg shadow draw layer so it will no longer appear in front of bonusblocks...
[supertux.git] / src / addon / downloader.hpp
index 5aab70d..6e7e482 100644 (file)
 #include <vector>
 
 typedef int TransferId;
+class Downloader;
 
 class TransferStatus
 {
 public:
-  enum Status { RUNNING, COMPLETED, ABORT, ERROR };
-
-public:
+  Downloader& m_downloader;
   TransferId id;
-  Status status;
+  std::vector<std::function<void (bool)> > callbacks;
+
   int dltotal;
   int dlnow;
   int ultotal;
   int ulnow;
-  std::function<void ()> callback;
 
-  TransferStatus(TransferId id_) :
+  std::string error_msg;
+
+  TransferStatus(Downloader& downloader, TransferId id_) :
+    m_downloader(downloader),
     id(id_),
-    status(RUNNING),
+    callbacks(),
     dltotal(0),
     dlnow(0),
     ultotal(0),
     ulnow(0),
-    callback()
+    error_msg()
   {}
 
-  void then(const std::function<void ()>& callback_)
+  void abort();
+  void update();
+
+  void then(const std::function<void (bool)>& callback)
   {
-    callback = callback_;
+    callbacks.push_back(callback);
   }
 };
 
-typedef std::shared_ptr<TransferStatus> TransferStatusPtr;
+using TransferStatusPtr = std::shared_ptr<TransferStatus>;
 
 class Transfer;