diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj
index 955107ef..f1cbf970 100644
--- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj
+++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj
@@ -206,6 +206,7 @@
+
@@ -216,6 +217,7 @@
+
diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp
index 07d2d0ec..64526c0b 100644
--- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp
+++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp
@@ -5,6 +5,7 @@
#include "GameClientState/GameClientState.h"
#include "GameClientState\GameState.h"
#include "GameClientState\LobbyState.h"
+#include "GameClientState\LoginState.h"
#include
#include "NetworkClient.h"
@@ -61,15 +62,15 @@ namespace DanBias
return DanBiasClientReturn_Error;
m_data->recieverObj = new GameRecieverObject;
- m_data->recieverObj->Connect(desc.port, desc.IP);
+ /*m_data->recieverObj->Connect(desc.port, desc.IP);
if (!m_data->recieverObj->IsConnected())
{
// failed to connect
return DanBiasClientReturn_Error;
- }
+ }*/
// Start in lobby state
- m_data->recieverObj->gameClientState = new Client::LobbyState();
+ m_data->recieverObj->gameClientState = new Client::LoginState();
if(!m_data->recieverObj->gameClientState->Init(m_data->recieverObj))
return DanBiasClientReturn_Error;
@@ -134,6 +135,7 @@ namespace DanBias
m_data->inputObj->Update();
+
DanBias::Client::GameClientState::ClientState state = DanBias::Client::GameClientState::ClientState_Same;
state = m_data->recieverObj->gameClientState->Update(deltaTime, m_data->inputObj);
diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h
index 2ba930b7..28a671ba 100644
--- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h
+++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h
@@ -51,6 +51,7 @@ public:
};
enum ClientState
{
+ ClientState_Login,
ClientState_Lobby,
ClientState_Game,
ClientState_Same,
diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp
index 89d8b1b7..d30fcd59 100644
--- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp
+++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp
@@ -31,7 +31,7 @@ LobbyState::~LobbyState(void)
bool LobbyState::Init(Oyster::Network::NetworkClient* nwClient)
{
privData = new myData();
-
+ this->nwClient = nwClient;
// load models
LoadModels(L"UImodels.txt");
InitCamera(Oyster::Math::Float3(0,0,5.4f));
diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.h b/Code/Game/DanBiasGame/GameClientState/LobbyState.h
index e7cb7b8c..057fc850 100644
--- a/Code/Game/DanBiasGame/GameClientState/LobbyState.h
+++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.h
@@ -3,6 +3,7 @@
#include "GameClientState.h"
#include "OysterMath.h"
+#include "NetworkClient.h"
#include
namespace DanBias
{
@@ -12,6 +13,7 @@ namespace DanBias
class LobbyState : public GameClientState
{
private:
+ Oyster::Network::NetworkClient* nwClient;
struct myData;
myData* privData;
public:
diff --git a/Code/Game/DanBiasGame/GameClientState/LoginState.cpp b/Code/Game/DanBiasGame/GameClientState/LoginState.cpp
new file mode 100644
index 00000000..8fa4936d
--- /dev/null
+++ b/Code/Game/DanBiasGame/GameClientState/LoginState.cpp
@@ -0,0 +1,166 @@
+#include "LoginState.h"
+#include "DllInterfaces/GFXAPI.h"
+#include "OysterMath.h"
+#include "C_obj/C_Player.h"
+#include "C_obj/C_StaticObj.h"
+#include "C_obj/C_DynamicObj.h"
+#include
+
+using namespace DanBias::Client;
+
+struct LoginState::myData
+{
+ myData(){}
+ Oyster::Math3D::Float4x4 view;
+ Oyster::Math3D::Float4x4 proj;
+ C_Object* object[2];
+ int modelCount;
+ // UI object
+ // game client*
+}privData;
+
+LoginState::LoginState(void)
+{
+
+}
+
+LoginState::~LoginState(void)
+{
+
+}
+
+bool LoginState::Init(Oyster::Network::NetworkClient* nwClient)
+{
+ privData = new myData();
+ this->nwClient = nwClient;
+ // load models
+ LoadModels(L"UImodels.txt");
+ InitCamera(Oyster::Math::Float3(0,0,5.4f));
+ return true;
+}
+bool LoginState::LoadModels(std::wstring file)
+{
+ Oyster::Graphics::Definitions::Pointlight plight;
+ plight.Pos = Oyster::Math::Float3(-2,3,0);
+ plight.Color = Oyster::Math::Float3(0,1,0);
+ plight.Radius = 10;
+ plight.Bright = 1;
+ Oyster::Graphics::API::AddLight(plight);
+ // open file
+ // read file
+ // init models
+ privData->modelCount = 2;
+
+ ModelInitData modelData;
+
+ modelData.world = Oyster::Math3D::Float4x4::identity;
+ modelData.visible = true;
+ modelData.modelPath = L"..\\Content\\Models\\box_2.dan";
+ // load models
+ privData->object[0] = new C_StaticObj();
+ privData->object[0]->Init(modelData);
+
+ Oyster::Math3D::Float4x4 translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(-2,-2,-2));
+ modelData.world = modelData.world * translate;
+
+ privData->object[1] = new C_DynamicObj();
+ privData->object[1]->Init(modelData);
+ return true;
+}
+
+bool LoginState::InitCamera(Oyster::Math::Float3 startPos)
+{
+ privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1024.0f/768.0f,.1f,1000);
+ //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000);
+ Oyster::Graphics::API::SetProjection(privData->proj);
+
+ privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos);
+ privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view);
+ return true;
+}
+GameClientState::ClientState LoginState::Update(float deltaTime, InputClass* KeyInput)
+{
+ // picking
+ // mouse events
+ // different menus
+ // play sounds
+ // update animation
+ // send data to server
+ // check data from server
+
+ // create game
+ if( KeyInput->IsKeyPressed(DIK_C))
+ {
+ DanBias::GameServerAPI::ServerInitDesc desc;
+
+ DanBias::GameServerAPI::ServerInitiate(desc);
+ DanBias::GameServerAPI::ServerStart();
+ // my ip
+ nwClient->Connect(15151, "127.0.0.1");
+
+ if (!nwClient->IsConnected())
+ {
+ // failed to connect
+ return ClientState_Same;
+ }
+ return ClientState_Lobby;
+ }
+ // join game
+ if( KeyInput->IsKeyPressed(DIK_J))
+ {
+ // game ip
+ nwClient->Connect(15151, "194.47.150.56");
+
+ if (!nwClient->IsConnected())
+ {
+ // failed to connect
+ return ClientState_Same;
+ }
+ return ClientState_Lobby;
+ }
+ return ClientState_Same;
+}
+bool LoginState::Render()
+{
+
+ Oyster::Graphics::API::SetView(privData->view);
+ Oyster::Graphics::API::SetProjection( privData->proj);
+
+
+ Oyster::Graphics::API::NewFrame();
+ // render objects
+ for (int i = 0; i < privData->modelCount; i++)
+ {
+ privData->object[i]->Render();
+ }
+
+ // render effects
+
+ // render lights
+
+ Oyster::Graphics::API::EndFrame();
+ return true;
+}
+bool LoginState::Release()
+{
+ for (int i = 0; i < privData->modelCount; i++)
+ {
+ privData->object[i]->Release();
+ delete privData->object[i];
+ privData->object[i] = NULL;
+ }
+
+ delete privData;
+ privData = NULL;
+ return true;
+}
+void LoginState::Protocol(ProtocolStruct* protocol)
+{
+ if((PlayerName*)protocol)
+ PlayerJoinProtocol((PlayerName*)protocol);
+
+}
+void LoginState::PlayerJoinProtocol(PlayerName* name)
+{
+
+}
\ No newline at end of file
diff --git a/Code/Game/DanBiasGame/GameClientState/LoginState.h b/Code/Game/DanBiasGame/GameClientState/LoginState.h
new file mode 100644
index 00000000..d426187d
--- /dev/null
+++ b/Code/Game/DanBiasGame/GameClientState/LoginState.h
@@ -0,0 +1,33 @@
+#ifndef DANBIAS_CLIENT_LOGINSTATE_H
+#define DANBIAS_CLIENT_LOGINSTATE_H
+
+#include "GameClientState.h"
+#include "OysterMath.h"
+#include "NetworkClient.h"
+#include
+namespace DanBias
+{
+ namespace Client
+ {
+
+ class LoginState : public GameClientState
+ {
+ private:
+ Oyster::Network::NetworkClient* nwClient;
+ struct myData;
+ myData* privData;
+ public:
+ LoginState(void);
+ ~LoginState(void);
+ bool Init(Oyster::Network::NetworkClient* nwClient);
+ bool LoadModels(std::wstring file);
+ bool InitCamera(Oyster::Math::Float3 startPos);
+ ClientState Update(float deltaTime, InputClass* KeyInput);
+
+ bool Render();
+ bool Release();
+ void Protocol(ProtocolStruct* protocol)override;
+ void PlayerJoinProtocol(PlayerName* name);
+
+ };};};
+#endif // ! DANBIAS_CLIENT_LOGINSTATE_H
\ No newline at end of file