Further capital ship tweaks.

This commit is contained in:
Steve 2015-12-10 10:04:22 +00:00
parent ede17199c3
commit 54ebea7c43
2 changed files with 47 additions and 1 deletions

View File

@ -64,12 +64,41 @@ Entity *spawnCapitalShip(char *name, int x, int y, int side)
static void think(void)
{
float dir;
int wantedAngle;
if (--self->aiActionTime <= 0)
{
self->targetLocation.x = rand() % GRID_SIZE;
self->targetLocation.x *= GRID_CELL_WIDTH;
self->targetLocation.y = rand() % GRID_SIZE;
self->targetLocation.y *= GRID_CELL_HEIGHT;
self->aiActionTime = FPS * (30 + (rand() % 120));
}
wantedAngle = getAngle(self->x, self->y, self->targetLocation.x, self->targetLocation.y);
wantedAngle %= 360;
if (fabs(wantedAngle - self->angle) > TURN_THRESHOLD)
{
dir = ((int)(wantedAngle - self->angle + 360)) % 360 > 180 ? -1 : 1;
dir *= TURN_SPEED;
self->angle += dir;
self->angle = fmod(self->angle, 360);
}
applyFighterThrust();
}
static void gunThink(void)
{
/*doAI();*/
doAI();
}
static void componentDie(void)
@ -86,7 +115,17 @@ static void componentDie(void)
static void die(void)
{
Entity *e;
self->alive = ALIVE_DEAD;
for (e = battle.entityHead.next ; e != NULL ; e = e->next)
{
if (e->owner == self)
{
e->health = 0;
}
}
}
void loadCapitalShipDefs(void)
@ -135,6 +174,7 @@ static void loadCapitalShipDef(char *filename)
e->shield = e->maxShield = cJSON_GetObjectItem(root, "shield")->valueint;
e->shieldRechargeRate = cJSON_GetObjectItem(root, "shieldRechargeRate")->valueint;
e->texture = getTexture(cJSON_GetObjectItem(root, "texture")->valuestring);
e->speed = 1;
e->action = think;
e->die = die;

View File

@ -18,6 +18,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#define TURN_SPEED 0.1
#define TURN_THRESHOLD 2
#include "../common.h"
#include "../json/cJSON.h"
@ -31,6 +34,9 @@ extern char *getFileLocation(char *filename);
extern long flagsToLong(char *flags);
extern long lookup(char *name);
extern void doAI(void);
extern float getAngle(int x1, int y1, int x2, int y2);
extern float mod(float n, float x);
extern void applyFighterThrust(void);
extern Battle battle;
extern Entity *self;