shithub: cstory

Download patch

ref: 42f7bb55c02d03cd9402f90aa02ea07a6839a57e
parent: b4bceb4faf7307ceb2a59cae1bbbd313ddc70e63
author: cuckydev <cuckydev@users.noreply.github.com>
date: Sun Feb 3 08:26:43 EST 2019

STAR

--- a/Makefile
+++ b/Makefile
@@ -91,6 +91,7 @@
 	Shoot \
 	Sound \
 	Stage \
+	Star \
 	SelStage \
 	TextScr \
 	Triangle \
--- a/src/Game.cpp
+++ b/src/Game.cpp
@@ -17,6 +17,7 @@
 #include "Bullet.h"
 #include "BulHit.h"
 #include "Shoot.h"
+#include "Star.h"
 #include "Fade.h"
 #include "Frame.h"
 #include "Flags.h"
@@ -103,7 +104,7 @@
 {
 	InitNpChar();
 	InitCaret();
-	//InitStar();
+	InitStar();
 	InitFade();
 	InitFlash();
 	InitBossLife();
@@ -245,7 +246,7 @@
 	
 	//Reset everything
 	InitCaret();
-	//InitStar();
+	InitStar();
 	CutNoise();
 	
 	//Create variables
@@ -436,7 +437,7 @@
 	InitNpChar();
 	InitBullet();
 	InitCaret();
-	//InitStar();
+	InitStar();
 	InitFade();
 	InitFlash();
 	ClearArmsData();
@@ -470,7 +471,7 @@
 				else
 					ActMyChar(false);
 				
-				//ActStar();
+				ActStar();
 				ActNpChar();
 				ActBossChar();
 				ActValueView();
@@ -513,7 +514,7 @@
 			PutNpChar(frame_x, frame_y);
 			PutBullet(frame_x, frame_y);
 			PutMyChar(frame_x, frame_y);
-			//PutStar(frame_x, frame_y);
+			PutStar(frame_x, frame_y);
 			PutMapDataVector(frame_x, frame_y);
 			PutStage_Front(frame_x, frame_y);
 			PutFront(frame_x, frame_y);
--- a/src/Profile.cpp
+++ b/src/Profile.cpp
@@ -11,6 +11,7 @@
 #include "Flags.h"
 #include "MiniMap.h"
 #include "MyChar.h"
+#include "Star.h"
 #include "NpChar.h"
 #include "Frame.h"
 #include "SelStage.h"
@@ -215,7 +216,7 @@
 	SetFrameTargetMyChar(16);
 	InitBossLife();
 	CutNoise();
-	//InitStar();
+	InitStar();
 	ClearValueView();
 	gCurlyShoot_wait = 0;
 	return true;
--- /dev/null
+++ b/src/Star.cpp
@@ -1,0 +1,126 @@
+#include <string.h>
+
+#include "WindowsWrapper.h"
+
+#include "MyChar.h"
+#include "Draw.h"
+#include "Bullet.h"
+#include "Game.h"
+
+static struct
+{
+	int cond;
+	int code;
+	int direct;
+	int x;
+	int y;
+	int xm;
+	int ym;
+	int act_no;
+	int act_wait;
+	int ani_no;
+	int ani_wait;
+	int view_left;
+	int view_top;
+	RECT rect;
+} star[3];
+
+void InitStar()
+{
+	//Clear stars
+	memset(star, 0, sizeof(star));
+	
+	//Position
+	star[0].x = gMC.x;
+	star[0].y = gMC.y;
+	
+	star[1].x = gMC.x;
+	star[1].y = gMC.y;
+	
+	star[2].x = gMC.x;
+	star[2].y = gMC.y;
+	
+	//Speed
+	star[0].xm = 0x400;
+	star[0].ym = -0x200;
+	
+	star[1].xm = -0x200;
+	star[1].ym = 0x400;
+	
+	star[2].xm = 0x200;
+	star[2].ym = 0x200;
+}
+
+void ActStar()
+{
+	static int a;
+	a++;
+	a %= 3;
+	
+	for (int i = 0; i < 3; i++)
+	{
+		if (i)
+		{
+			if (star[i - 1].x >= star[i].x)
+				star[i].xm += 0x80;
+			else
+				star[i].xm -= 0x80;
+			
+			if (star[i - 1].y >= star[i].y)
+				star[i].ym += 0xAA;
+			else
+				star[i].ym -= 0xAA;
+		}
+		else
+		{
+			if (gMC.x >= star[0].x)
+				star[0].xm += 0x80;
+			else
+				star[0].xm -= 0x80;
+			if (gMC.y >= star[0].y)
+				star[0].ym += 0xAA;
+			else
+				star[0].ym -= 0xAA;
+		}
+		
+		if (star[i].xm > 0xA00)
+			star[i].xm = 0xA00;
+		if (star[i].xm < -0xA00)
+			star[i].xm = -0xA00;
+		if (star[i].ym > 0xA00)
+			star[i].ym = 0xA00;
+		if (star[i].ym < -0xA00)
+			star[i].ym = -0xA00;
+		if (star[i].xm > 0xA00)
+			star[i].xm = 0xA00;
+		if (star[i].xm < -0xA00)
+			star[i].xm = -0xA00;
+		if (star[i].ym > 0xA00)
+			star[i].ym = 0xA00;
+		if (star[i].ym < -0xA00)
+			star[i].ym = -0xA00;
+		
+		star[i].x += star[i].xm;
+		star[i].y += star[i].ym;
+		
+		if (gMC.star > i && (gMC.equip & 0x80) && (g_GameFlags & 2) && a == i)
+			SetBullet(45, star[a].x, star[a].y, 0);
+	}
+}
+
+void __cdecl PutStar(int fx, int fy)
+{
+	RECT rc[3];
+	rc[0] = {192, 0, 200, 8};
+	rc[1] = {192, 8, 200, 16};
+	rc[2] = {192, 16, 200, 24};
+	
+	if (!(gMC.cond & 2) && (gMC.equip & 0x80))
+	{
+		for (int i = 0; i < 3; i++)
+		{
+			if (gMC.star > i)
+				PutBitmap3(&grcGame, star[i].x / 0x200 - fx / 0x200 - 4, star[i].y / 0x200 - fy / 0x200 - 4, &rc[i], 16);
+		}
+	}
+}
--- /dev/null
+++ b/src/Star.h
@@ -1,0 +1,4 @@
+#pragma once
+void InitStar();
+void ActStar();
+void PutStar(int fx, int fy);
--