From adc884ae8f484a439bf13a0371f0fea95cd50392 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 May 2016 22:44:24 +0200 Subject: SCUMM HE: AIEntity class implementation --- engines/scumm/he/moonbase/ai_types.cpp | 175 +++++++++++++++++++++++++++++++++ engines/scumm/he/moonbase/ai_types.h | 97 ++++++++++++++++++ engines/scumm/module.mk | 1 + 3 files changed, 273 insertions(+) create mode 100644 engines/scumm/he/moonbase/ai_types.cpp create mode 100644 engines/scumm/he/moonbase/ai_types.h diff --git a/engines/scumm/he/moonbase/ai_types.cpp b/engines/scumm/he/moonbase/ai_types.cpp new file mode 100644 index 0000000000..1674e03777 --- /dev/null +++ b/engines/scumm/he/moonbase/ai_types.cpp @@ -0,0 +1,175 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/textconsole.h" +#include "scumm/he/moonbase/ai_types.h" + +namespace Scumm { + +AIEntity::AIEntity(int id) { + switch (id) { + case BRUTAKAS: + warning("BRUTAKAS"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "BRUTAKAS"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_SMALL; + _angleVariation = AI_VAR_SMALL; + _powerVariation = AI_VAR_SMALL; + break; + + case AGI: + warning("Agi"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "Agi"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_MEDIUM; + _angleVariation = AI_VAR_MEDIUM; + _powerVariation = AI_VAR_LARGE; + break; + + case EL_GATO: + warning("El Gato de la Noche"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "El Gato de la Noche"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_SMALL; + _angleVariation = AI_VAR_SMALL; + _powerVariation = AI_VAR_MEDIUM; + break; + + case PIXELAHT: + warning("Pixelaht"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "Pixelaht"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_LARGE; + _angleVariation = AI_VAR_MEDIUM; + _powerVariation = AI_VAR_SMALL; + break; + + case CYBALL: + warning("cYbaLL"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "cYbaLL"); + _behaviorVariation = AI_VAR_LARGE; + _targetVariation = AI_VAR_LARGE; + _angleVariation = AI_VAR_SMALL; + _powerVariation = AI_VAR_SMALL; + break; + + case NEEP: + warning("Neep! Neep!"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "Neep! Neep!"); + _behaviorVariation = AI_VAR_MEDIUM; + _targetVariation = AI_VAR_SMALL; + _angleVariation = AI_VAR_SMALL; + _powerVariation = AI_VAR_LARGE; + break; + + case WARCUPINE: + warning("WARcupine"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "WARcupine"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_SMALL; + _angleVariation = AI_VAR_LARGE; + _powerVariation = AI_VAR_MEDIUM; + break; + + case AONE: + warning("aone"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "aone"); + _behaviorVariation = AI_VAR_MEDIUM; + _targetVariation = AI_VAR_MEDIUM; + _angleVariation = AI_VAR_MEDIUM; + _powerVariation = AI_VAR_MEDIUM; + break; + + case SPANDO: + warning("S p a n d o"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "S p a n d o"); + _behaviorVariation = AI_VAR_LARGE; + _targetVariation = AI_VAR_LARGE; + _angleVariation = AI_VAR_SMALL; + _powerVariation = AI_VAR_SMALL; + break; + + case ORBNU_LUNATEK: + warning("Bonur J Lunatek"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "Bonur J Lunatek"); + _behaviorVariation = AI_VAR_HUGE; + _targetVariation = AI_VAR_HUGE; + _angleVariation = AI_VAR_HUGE; + _powerVariation = AI_VAR_HUGE; + break; + + case CRAWLER_CHUCKER: + warning("Le Chuckre des Crawlres"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "Le Chuckre des Crawlres"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_MEDIUM; + _angleVariation = AI_VAR_MEDIUM; + _powerVariation = AI_VAR_LARGE; + break; + + case ENERGY_HOG: + warning("Energy Hog"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "Energy Hog\n"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_SMALL; + _angleVariation = AI_VAR_SMALL; + _powerVariation = AI_VAR_SMALL; + break; + + case RANGER: + warning("Ranger"); + _id = id; + _nameString = new char[64]; + strcpy(_nameString, "Ranger\n"); + _behaviorVariation = AI_VAR_SMALL; + _targetVariation = AI_VAR_SMALL; + _angleVariation = AI_VAR_SMALL; + _powerVariation = AI_VAR_SMALL; + break; + } +} + +} // End of namespace Scumm diff --git a/engines/scumm/he/moonbase/ai_types.h b/engines/scumm/he/moonbase/ai_types.h new file mode 100644 index 0000000000..1e8c829d81 --- /dev/null +++ b/engines/scumm/he/moonbase/ai_types.h @@ -0,0 +1,97 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef SCUMM_HE_MOONBASE_AI_TYPES_H +#define SCUMM_HE_MOONBASE_AI_TYPES_H + +namespace Scumm { + +enum { + AGI = 1, + AONE = 2, + BRUTAKAS = 3, + CYBALL = 4, + EL_GATO = 5, + NEEP = 6, + ORBNU_LUNATEK = 7, + PIXELAHT = 8, + SPANDO = 9, + WARCUPINE = 10 +}; + +enum { + CRAWLER_CHUCKER = 11, + ENERGY_HOG = 12, + RANGER = 13 +}; + +enum { + AI_VAR_NONE = -1, + AI_VAR_SMALL = 0, + AI_VAR_MEDIUM = 1, + AI_VAR_LARGE = 2, + AI_VAR_HUGE = 5 +}; + +enum { + AI_VAR_BASE_BEHAVIOR = 10, + AI_VAR_BASE_TARGET = 10, + AI_VAR_BASE_ANGLE = 2, + AI_VAR_BASE_POWER = 5 +}; + +class AIEntity { +private: + int _id; + char *_nameString; + int _behaviorVariation; + int _targetVariation; + int _angleVariation; + int _powerVariation; + +public: + AIEntity(int id); + ~AIEntity() { + if (_nameString) { + delete _nameString; + _nameString = 0; + } + } + + int GetID() const { return _id; } + char *GetNameString() const { return _nameString; } + int GetBehaviorVariation() const { return _behaviorVariation; } + int GetTargetVariation() const { return _targetVariation; } + int GetAngleVariation() const { return _angleVariation; } + int GetPowerVariation() const { return _powerVariation; } + + void SetID(int id) { _id = id; } + void SetNameString(char *nameString) { _nameString = nameString; } + void SetBehaviorVariation(int behaviorVariation) { _behaviorVariation = behaviorVariation; } + void SetTargetVariation(int targetVariation) { _targetVariation = targetVariation; } + void SetAngleVariation(int angleVariation) { _angleVariation = angleVariation; } + void SetPowerVariation(int powerVariation) { _powerVariation = powerVariation; } +}; + +} // End of namespace Scumm + +#endif diff --git a/engines/scumm/module.mk b/engines/scumm/module.mk index f1551b2bd2..717ca8146e 100644 --- a/engines/scumm/module.mk +++ b/engines/scumm/module.mk @@ -140,6 +140,7 @@ MODULE_OBJS += \ he/logic/puttrace.o \ he/logic/soccer.o \ he/moonbase/ai_defenseunit.o \ + he/moonbase/ai_types.o \ he/moonbase/moonbase.o \ he/moonbase/moonbase_fow.o endif -- cgit v1.2.3