瀏覽代碼

Started pattern system.

Eiyeron Fulmincendii 11 年之前
父節點
當前提交
c48eed1d0a
共有 3 個文件被更改,包括 69 次插入0 次删除
  1. 23 0
      pattern.c
  2. 37 0
      pattern.h
  3. 9 0
      struct.h

+ 23 - 0
pattern.c

@@ -0,0 +1,23 @@
+#include "pattern.h"
+#include "struct.h"
+#include "wall.h"
+
+Pattern* readPattern() {
+
+}
+
+void addPattern(Game_Data* data, Pattern* pattern, unsigned char offset) {
+	unsigned int i;
+	for(i = 0; i < pattern->length; i++) {
+		// Build wall
+		addWall(data->list, pattern->distance[i], pattern->wall_length, 1, (pattern->side[i] + offset)%data->nb_lines);
+	}
+}
+
+Pattern* freePattern(Pattern* pattern) {
+	free(pattern->side);
+	free(pattern->distance);
+	free(pattern->wall_length);
+	free(pattern);
+	return NULL;
+}

+ 37 - 0
pattern.h

@@ -0,0 +1,37 @@
+#ifndef PATTERN_H
+#define PATTERN_H
+
+#include "struct.h"
+
+
+/**
+ * Read a buffer to convert into an dynamically pattern
+ * Structure of the pattern data:
+ * <pre>
+ * XX\n <=> Pattern length (uint_8)
+ * AABBBBCCCC\n
+ * AABBBBCCCC\n
+ * AABBBBCCCC\n
+ * ...
+ * </pre>
+ * Legend
+ * <pre>
+ * AA   <=> side (uint_8)
+ * BBBB <=> distance(uint_16)
+ * CCCC <=> wall_length(uint_16)
+ * </pre>
+ * @param  data Data to read
+ * @return      A brand new pattern
+ */
+Pattern* readPattern(unsigned char data);
+
+/**
+ * Add the whole patter to the current game.
+ * @param data   data
+ * @param offset Offsets the sides to rotate the pattern
+ */
+void addPattern(Game_Data* data, Pattern* pattern, unsigned char offset);
+
+free* freePattern(Pattern* pattern);
+
+#endif

+ 9 - 0
struct.h

@@ -103,4 +103,13 @@ struct Game_Data{
 	unsigned char alpha_latch_value;
 };
 
+typedef struct {
+	unsigned char length;
+	// Should be dynamically allocated
+	unsigned char* side;
+	unsigned short* distance;
+	unsigned short* wall_length;
+} Pattern;
+
+
 #endif