BWAPI
|
00001 #pragma once 00002 #include <stdlib.h> 00003 #include <BWAPI.h> 00004 00005 struct Rainbow { 00006 std::vector<BWAPI::Color> rainbow; 00007 size_t ind; 00008 Rainbow() 00009 { 00010 rainbow.clear(); 00011 rainbow.push_back(BWAPI::Color(244, 0, 0)); // red (R,G,B) 00012 rainbow.push_back(BWAPI::Color(244, 42, 42)); 00013 rainbow.push_back(BWAPI::Color(244, 92, 92)); 00014 rainbow.push_back(BWAPI::Color(244, 128, 128)); 00015 // rainbow.push_back(BWAPI::Color(244, 92, 92)); 00016 } 00017 Rainbow(BWAPI::Color startColor, int increment) 00018 { 00019 rainbow.clear(); 00020 int primaryred = startColor.red(); 00021 int primarygreen = startColor.green(); 00022 int primaryblue = startColor.blue(); 00023 int secondaryred = (primaryred >= primarygreen 00024 && primaryred >= primaryblue) ? 0 : 1; 00025 int secondarygreen = (primarygreen >= primaryblue 00026 && primarygreen > primaryred) ? 0 : 1; 00027 int secondaryblue = (primaryblue > primaryred 00028 && primaryblue > primarygreen) ? 0 : 1; 00029 int maxsecondary = max(min(primaryred, primarygreen), min(primaryred, primaryblue)); 00030 int i = 0; 00031 while ((maxsecondary + i) < 255) 00032 { 00033 rainbow.push_back(BWAPI::Color(primaryred + secondaryred*i, 00034 primarygreen + secondarygreen*i, 00035 primaryblue + secondaryblue*i)); 00036 i += increment; 00037 } 00038 } 00039 ~Rainbow() {} 00040 BWAPI::Color nextColor() 00041 { 00042 return rainbow[ind++ % rainbow.size()]; 00043 } 00044 };