Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

157 lignes
4.4 KiB

  1. //
  2. // Neercs
  3. //
  4. // Copyright: (c) 2012 Sam Hocevar <sam@hocevar.net>
  5. //
  6. #if defined HAVE_CONFIG_H
  7. # include "config.h"
  8. #endif
  9. #if defined _WIN32
  10. # include <direct.h>
  11. #endif
  12. #if defined _XBOX
  13. # define _USE_MATH_DEFINES /* for M_PI */
  14. # include <xtl.h>
  15. # undef near /* Fuck Microsoft */
  16. # undef far /* Fuck Microsoft again */
  17. #elif defined _WIN32
  18. # define _USE_MATH_DEFINES /* for M_PI */
  19. # define WIN32_LEAN_AND_MEAN
  20. # include <windows.h>
  21. # undef near /* Fuck Microsoft */
  22. # undef far /* Fuck Microsoft again */
  23. #else
  24. # include <cmath>
  25. #endif
  26. #if USE_SDL && defined __APPLE__
  27. # include <SDL_main.h>
  28. #endif
  29. #include <time.h>
  30. #include <caca.h>
  31. #include "core.h"
  32. #include "loldebug.h"
  33. using namespace std;
  34. using namespace lol;
  35. #include "neercs.h"
  36. #include "video/render.h"
  37. extern "C"
  38. {
  39. #include "old/neercs.h"
  40. }
  41. Neercs::Neercs(int argc, char **argv)
  42. : m_ready(false),
  43. m_caca(caca_create_canvas(10, 10)),
  44. m_render(new Render(m_caca)),
  45. m_time(0.f)
  46. {
  47. Ticker::Ref(m_render);
  48. }
  49. int Neercs::hex_color(float r, float g, float b)
  50. {
  51. return ((int)(r * 15.99f) << 8) | ((int)(g * 15.99f) << 4) | (int)(b * 15.99f);
  52. }
  53. void Neercs::TickGame(float seconds)
  54. {
  55. WorldEntity::TickGame(seconds);
  56. m_time += seconds;
  57. /* draw something */
  58. int bg_color = 0x222;
  59. int w = caca_get_canvas_width(m_caca);
  60. int h = caca_get_canvas_height(m_caca);
  61. caca_set_color_argb(m_caca, 0xfff, bg_color);
  62. caca_clear_canvas(m_caca);
  63. caca_set_color_argb(m_caca, 0xa46, bg_color);
  64. for(int i = 0; i < h; i++)
  65. {
  66. float a = M_PI / 180 * i * 16 + m_time * 4;
  67. float b = M_PI / 180 * i * 12;
  68. int x = w / 2 - 15 + h / 3 * lol::cos(a) + h / 4 * lol::sin(b);
  69. caca_put_str(m_caca, x, i, "LOL WUT! NEERCS SI TEH RULEZ!");
  70. }
  71. caca_set_color_argb(m_caca, 0x444, bg_color);
  72. for(int i = 0; i < w; i++)
  73. {
  74. float a = m_time * 1 + M_PI / 180 * i * 8;
  75. float b = m_time * -2 + M_PI / 180 * i * 5;
  76. int y = h / 2 + h / 4 * lol::cos(a) + h / 4 * lol::sin(b);
  77. caca_set_color_argb(m_caca, hex_color(0.25f + 0.5f / w * i - 0.25f / h * y, 0.25f, 0.25f + 0.25f / w * i + 0.25f / h * y), bg_color);
  78. caca_draw_line(m_caca, i, y - 1, i, y + 1,'%');
  79. }
  80. /*
  81. .___ __ ______ ______ ______ ______ ______,
  82. \° \| /° __ \° __ \° __ \/° ___//° ___/
  83. / ` > ____/ ____/ ,_ <_ <____\___ \
  84. /__/\___\______\______\__| \__/_____________\
  85. */
  86. int logo_x = (w - 45) / 2;
  87. int logo_y = h / 2 - 2;
  88. caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * lol::cos(m_time * 3 ), 0.5f, 0.5f + 0.25f * lol::sin(m_time * 3 )), bg_color);
  89. caca_put_str(m_caca, logo_x, logo_y ,".___ __ ______ ______ ______ ______ ______,");
  90. caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * lol::cos(m_time * 3 + M_PI / 4 * 1), 0.5f, 0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 1)), bg_color);
  91. caca_put_str(m_caca, logo_x, logo_y + 1, " \\° \\| /° __ \\° __ \\° __ \\/° ___//° ___/");
  92. caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * lol::cos(m_time * 3 + M_PI / 4 * 2), 0.5f, 0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 2)), bg_color);
  93. caca_put_str(m_caca, logo_x, logo_y + 2, " / ` > ____/ ____/ ,_ <_ <____\\___ \\");
  94. caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * lol::cos(m_time * 3 + M_PI / 4 * 3), 0.5f, 0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 3)), bg_color);
  95. caca_put_str(m_caca, logo_x, logo_y + 3, "/__/\\___\\______\\______\\__| \\__/_____________\\");
  96. caca_set_color_argb(m_caca, 0xdef, bg_color);
  97. caca_put_str(m_caca, logo_x + 5, logo_y + 5, "ALL YOUR TERMINALS ARE BELONG TO US");
  98. caca_set_color_argb(m_caca, 0x666, bg_color);
  99. caca_printf(m_caca, 2, h - 3, "W=%i", w);
  100. caca_printf(m_caca, 2, h - 2, "H=%i", h);
  101. caca_set_color_argb(m_caca, hex_color(0.6f + 0.4f * lol::cos(m_time * 2), 0.2f, 0.2f), bg_color);
  102. caca_put_str(m_caca, w - 12, h - 2, "CACA RULEZ");
  103. }
  104. void Neercs::TickDraw(float seconds)
  105. {
  106. WorldEntity::TickDraw(seconds);
  107. }
  108. Neercs::~Neercs()
  109. {
  110. Ticker::Unref(m_render);
  111. }
  112. int main(int argc, char **argv)
  113. {
  114. Application app("Neercs", ivec2(800, 600), 60.0f);
  115. #if defined _MSC_VER && !defined _XBOX
  116. _chdir("..");
  117. #elif defined _WIN32 && !defined _XBOX
  118. _chdir("../..");
  119. #endif
  120. new Neercs(argc, argv);
  121. new DebugFps(2, 2);
  122. app.ShowPointer(false);
  123. app.Run();
  124. return EXIT_SUCCESS;
  125. }