PlayerManager – prototype class

Just a quick note. I have managed to write Player Manager class which is kind a prototype.. the two issues that I am having are how to get an offset of a map.. if I am trying to set up offset to static DXDVECTOR3 variable inside Level class linker is complaining, passing as attribute well it is a option but then I need to modify other classes.

Second problem is click in a frame. actually I have just figured this out :).. wow sometimes one sec break and step back can do the trick.

Anyway deep beta presents PlayerManager prototype class – probably it will be totally modified but as far as now I have something like that:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// PlayerManager.h
 
#pragma once
#ifndef PLAYERMANAGER_H
#define PLAYERMANAGER_H
 
[...]
#include "Entity.h"
#include "Level.h"
 
class PlayerManager
{
private:
  //players entities
  static std::map<int , Entity*> playersEntities;
  static std::map</int><int , Entity*> playersSelectedEntities;	
public:
  static PlayerManager* instance;
  static void init();
  static void registerPlayersEntity(Entity* playersEntity); // called in players unity type constructor
  static void removePlayersEntity(Entity* playersEntity);
  static Entity* getPlayersEntity(int id);
  static void clearSelected();
  static void addEntityToSelected(POINT mousePosition);
 
  PlayerManager();
  ~PlayerManager();
};
#endif
</int>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// PlayerManager.cpp
#include "PlayerManager.h"
#include "Collision.h"
 
PlayerManager* PlayerManager::instance =0;
std::map<int , Entity*> PlayerManager::playersEntities = std::map</int><int , Entity*>();
std::map</int><int , Entity*> PlayerManager::playersSelectedEntities = std::map</int><int , Entity*>();
 
PlayerManager::PlayerManager(){}
 
void PlayerManager::init(){
  PlayerManager::instance = new PlayerManager();
}
 
PlayerManager::~PlayerManager(){
  //clear selected units list
  std::map</int><int ,Entity*>::iterator iter = playersSelectedEntities.begin();
  for(; iter != playersSelectedEntities.end(); ++iter){
    delete iter->second;
    iter->second = 0;
  }
  playersSelectedEntities.clear();
  playersEntities.clear();
}
 
//register entity in players list
void PlayerManager::registerPlayersEntity(Entity* entity){
  //register entity called only once and after registration in entity manager
  // we have entity ID and I am pretty sure it will not dublicate.
  playersEntities[entity->getID()] = entity;
}
 
 
void PlayerManager::removePlayersEntity(Entity* entity){
  //removes selecred entity from players entities lise
  std::map</int><int , Entity*>::iterator iter = playersEntities.find(entity->getID());
  if(iter != playersEntities.end())
    playersEntities.erase(iter);
}
 
Entity* PlayerManager::getPlayersEntity(int id){
  //returns pointer to entity defined by id
  std::map</int><int , Entity*>::iterator iter = playersEntities.find(id);
  if(iter != playersEntities.end())
    return iter->second;
  return 0;
}
 
void PlayerManager::addEntityToSelected(POINT mousePosition){
  D3DXVECTOR3 position(0.0f,0.0f,0.0f);
  float radius = 1.0f;
 
  D3DXVECTOR3 mPosition(mousePosition.x, mousePosition.y, 0.0f);
 
  Circle mouseCircle = {mPosition, radius };
  Circle unitCircle = {position, radius };
  mouseCircle.position.x = mousePosition.x; // need to figure out how to apply offset
  mouseCircle.position.y = mousePosition.y;
  mouseCircle.position.z = 0.0f;
  mouseCircle.radius = 2.0f;
 
  std::map</int><int , Entity*>::iterator iter = playersEntities.begin();
  for(; iter != playersEntities.end(); ++iter){
    unitCircle.position = iter->second->getPosition();
    unitCircle.radius = 20.0f; // need to set this global instead of calculated based on number images etc like TILEBASEWIDTH or something
    CollisionResults collisionResult = TestCollisionCircle(mouseCircle, unitCircle);
    if(collisionResult == OVERLAPPING){
      std::cout < < "AWESOME";
    }else {
      PlayerManager::clearSelected();
      std::cout << "NOT";
    }
  }
}
 
void PlayerManager::clearSelected(){
  std::map<int, Entity*>::iterator iter = playersSelectedEntities.begin();
  for(; iter != playersSelectedEntities.end(); ++iter){
    if(iter->second){
      delete iter->second;
      iter->second = 0;
    }
  }
  playersSelectedEntities.clear();	
}
</int>

Backup plan

right,
I have spent too much time on trying to figure out 3D Picking and meshes.

I need to prepare backup plan – only 6weeks left till deadline.

here it is:

2D –  Top down – survival.

the idea is pretty the same as in 3D version – but I am considering get rid of building and as a production supplies – I mean we will have a farmers family that want to survive on their farm, yes sheep will be there.. here is scenario.

player controls 4 people team in where every unit has special skills – range, male dps, meal tank, healer – pretty standard rpg group.

I am considering as well game play ideally that would be multi player with server and clients but as far as now player will be able to control on of units and the rest will have some sort of AI. RPG elements will allow leveling for a team, and some perks will drop from zombies, wave time based play stays the same.

I have started developing engine from scratch.. again.. well this time I will base on university engine that we are developing at practicals by end of this week I should have:

  • Working framework
  • Tailed base map
  • Entity manager
  • Collision detection
  • Messaging system
  • Basic.. really basic AI
  • loads of small things like sprite renderer, game clock, animation engine, etc

Oh one big change.. I have decided to use DirectX9 instead on 10/11.. we are covering this one at university.. and I really do not have time to learn this one on my own.. probably later on I will do anyway.. but.. I am really tight with my time frames.

Day 11: Well I have done the textures

I cannot admit.. I wanted to finish couple more things..
well so now we have space to render divided to quads.. increase performance, texture, lighting, info about graphic card and memory left on card.

Now I am ready to do game logic.

what should I start with?
random placing objects on a map?
word!

I need to think of a build name for this project.. any suggestions?

Day 10: Height Map

I am satisfied with that height map – no multi textures, blending, water or even trees.. I need to concentrate on logic now, polishing details will be last thing.

plan for today/tomorrow.

picking + adding objects on the map..

good luck Luke..

thanks Luke.

edit:
ok 2 more thing left before I ll be ready to go with picking and objects,

1. need to set up camera in 45 degree
2. I need to think of optimisation.. some sort of quad tree or so..