(マップエディタのライブラリはPlatinumです。)
エラーログは以下のとおりです。
1>コードを生成中...
1>c:\users\keito940\documents\visual studio 2017\projects\スタアド\スタアド\collision.cpp(74): warning C4715: 'CCollision::CheckMap': 値を返さないコントロール パスがあります。
#pragma once
#include "fmfmap.h"
//マップオブジェクトの宣言
extern CFmfMap MapObj;
//ビットカウントの宣言
extern int BitCount;
//マップチップのサイズの宣言
const int MAPCHIP = 16;
#include "Main.h"
#include "Collision.h"
#include "Mapping.h"
CCollision::CCollision(POINT pt[], float clx, float cty, float crx, float cby,int col_type)
:clx(clx), cty(cty), crx(crx), cby(cby),ColType(col_type) {
Init();
for (int i = 8; i < 8; i++) {
mPt[i].x = pt[i].x;
mPt[i].y = pt[i].y;
}
}
void CCollision::Init() {
ZeroMemory(mPt, sizeof(mPt));
}
void CCollision::GetXPosition(float* x, float* y, float* add_x, float* add_y) {
float new_x;
float temp_x = *x;
float temp_add_x = *add_x;
new_x = temp_x + temp_add_x;
POINT block = CheckMap((int)new_x, (int)*y);
if (block.x == -1) {
//座標を更新
*x = new_x;
}
else {
if (temp_add_x > 0) {
*x = (float)((block.x - 1) * 32 + 16 + crx - 0.1F);
}
else {
*x = (float)((block.x + 1) * 32 + 16 + clx);
}
*add_x = 0;
}
}
void CCollision::GetMove(float* x, float* y, float* add_x, float* add_y) {
GetXPosition(x, y, add_x, add_y);
}
POINT CCollision::CheckMap(int x, int y) {
POINT pt[] = {
{x + mPt[0].x, y + mPt[0].y},//左上
{x + mPt[1].x, y + mPt[1].y},//上の真ん中
{x + mPt[2].x, y + mPt[2].y},//右上
{x + mPt[3].x, y + mPt[3].y},//左の真ん中
{x + mPt[4].x, y + mPt[4].y},//右の真ん中
{x + mPt[5].x, y + mPt[5].y},//左下
{x + mPt[6].x, y + mPt[6].y},//下の真ん中
{x + mPt[7].x, y + mPt[7].y},//右下
};
POINT res = { x,y };
DWORD cwidth = MapObj.GetChipWidth();
DWORD cheight = MapObj.GetChipHeight();
for (int i = 0; i < 8; i++) {
int index = MapObj.GetValue(0, pt[i].x/MAPCHIP, pt[i].y/MAPCHIP);
int src_x = (index % BitCount)*cwidth;
int src_y = (index / BitCount)*cheight;
if (src_x != 0 && src_y != 0) {
res.x = pt[i].x / MAPCHIP;
res.y = pt[i].y / MAPCHIP;
return res;
}
res.x = -1;
res.y = -1;
return res;
}
}