Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - SEnergy

Pages: [1] 2
1
General / Re: Improving moving with Rclick?
« on: September 12, 2012, 05:43:16 pm »
ok so I right click to get coords of mouse in window, then I'll set bGo to true and Go Vector to coords of mouse -half of the size of texture, so the middle of the texture will go to that point and set rotation

lets say I clicked on coords 100,200, and I'm on 200,400, therefore I'll go top left, so my rotation will be case 10 since it's left (2) and top ( 8 )

/*your code for window(RenderWindow) and player here - MainWindow & pPlayer*/
Vector2i Go;
bool bGo = false;

const float Speed = 75.f;
Clock clock;

int rot;

//message stuff

float ElapsedTime = clock.getElapsedTime().asSeconds();
                        clock.restart();
if(Mouse::isButtonPressed(Mouse::Right))
                        {
                                Go = Mouse::getPosition(MainWindow);
                                Vector2u size = pPlayer.getSize();
                                size.x /= 2;
                                size.y /= 2;
                                Go.x -= size.x;
                                Go.y -= size.y;
                                if(Go.x > Poss.x)
                                        rot += 1;
                                if(Go.x < Poss.x)
                                        rot += 2;
                                if(Go.y > Poss.y)
                                        rot += 4;
                                if(Go.y < Poss.y)
                                        rot += 8;
                        }

case 10:
                                        {
                                                if((Go.y - Poss.y) < Speed*ElapsedTime && (Go.x - Poss.x) < Speed*ElapsedTime)
                                                        pPlayer.Move(-Speed*ElapsedTime, -Speed*ElapsedTime, a);
                                                else if((Go.x - Poss.x) < Speed*ElapsedTime)
                                                {
                                                        pPlayer.Move(-Speed*ElapsedTime, 0, a);
                                                        if((Go.y - Poss.y) < Speed*ElapsedTime)
                                                                pPlayer.Move(0, -Speed*ElapsedTime, a);
                                                }
                                                else if((Go.y - Poss.y) < Speed*ElapsedTime)
                                                {
                                                        pPlayer.Move(0, -Speed*ElapsedTime, a);
                                                        if((Go.x - Poss.x) < Speed*ElapsedTime)
                                                                pPlayer.Move(-Speed*ElapsedTime, 0, a);
                                                }
                                                else
                                                {
                                                        bGo = false;
                                                }
                                                break;
                                        }


BUT after he moves there he is like 98, 198, which is -2X and -2Y away from "destination", but this occurs only when I go more like 5pixels... and after I click again to 100,200 he will move there since he is close to it...

2
General / Re: Improving moving with Rclick?
« on: September 12, 2012, 04:45:17 pm »
done, hope it's enough, can't explain it simplier

3
General / Improving moving with Rclick?
« on: September 12, 2012, 04:10:29 pm »
I've been doing this thing today and I encountered weird problem, when I go down-right(+X, +Y)(case 5) or any other direction my Sprite (pPlayer) is "bugged", when I click again (I didn't move mouse) after he arrives where he is supposed to be, he somehow "shakes" himself(he is moving to some direction and then opposite direction in less than ~0.3sec)  when I go to other directions my player will move a little bit further and when I click again on that same spot (without moving with mouse) after he arrives it will "come back" to the right spot (where mouse is), since he is always like +2X/+2Y away

Vector2f Poss = pPlayer.getPosition();
                        if(bGo)
                        {
                                HWND hOutput = GetDlgItem(hWnd, IDC_OUTPUT1);
                                SendMessage(hOutput, WM_SETTEXT, NULL, (LPARAM) "true");
                                switch(rot)
                                {
                                case 5: // dole v pravo
                                        {
                                                if((Go.y - Poss.y) > Speed*ElapsedTime && (Go.x - Poss.x) > Speed*ElapsedTime)
                                                        pPlayer.Move(Speed*ElapsedTime, Speed*ElapsedTime, a);
                                                else if((Go.x - Poss.x) > Speed*ElapsedTime)
                                                {
                                                        pPlayer.Move(Speed*ElapsedTime, 0, a);
                                                        if((Go.y - Poss.y) > Speed*ElapsedTime)
                                                                pPlayer.Move(0, Speed*ElapsedTime, a);
                                                }
                                                else if((Go.y - Poss.y) > Speed*ElapsedTime)
                                                {
                                                        pPlayer.Move(0, Speed*ElapsedTime, a);
                                                        if((Go.x - Poss.x) > Speed*ElapsedTime)
                                                                pPlayer.Move(Speed*ElapsedTime, 0, a);
                                                }
                                                else
                                                {
                                                        SendMessage(hOutput, WM_SETTEXT, NULL, (LPARAM) "false");
                                                        bGo = false;
                                                }
                                                break;
                                        }
                                }
                        }

4
General / Re: Optimizing collision system
« on: June 14, 2012, 02:32:22 pm »
nice, it's working, however sometimes there's space between object and player(this bug occurs like 3 of 4 times when I come to object) (1-2 pixels), code:

bool Animation::IsAt(Animation Collider, char direction, float speed)
{
        Vector2f aaa(0,0);
        if(direction == 'r')
                aaa.x = speed;
        if(direction == 'l')
                aaa.x = speed;
        if(direction == 'u')
                aaa.y = speed;
        if(direction == 'd')
                aaa.y = speed;
        FloatRect rAnim(Animation::GetX(), Animation::GetY(), Animation::GetW(), Animation::GetH());
        FloatRect rCollider(Collider.GetX(), Collider.GetY(), Collider.GetW(), Collider.GetH());

        rAnim.left += aaa.x;
        rAnim.top += aaa.y;

        FloatRect result;
        bool b1 = rAnim.intersects(rCollider, result);
        if(b1)
                return true;
        return false;
}

5
General / Re: Optimizing collision system
« on: June 14, 2012, 10:31:58 am »
well I'm actually right now doing check BEFORE I move

for example:

                        if(left)
                        {
                                if(!aPlayer[0].IsAt(aBuilding[0], 'l'))
                                        aPlayer[0].Move(Vector2f(-Speed*ElapsedTime, 0), 'l');
                                lastdir = 3;
                        }

so it will check if aPlayer[0] collides with aBuilding[0], if yes then nothing happens, otherwise it will move to that direction... but when it collides, it will be "inside" of second object, therefore even if I'll move up like 1 pixel manually (like in your code), it will be in second object anyway... well something like that:

well here's picture about it in case I explained it wrong

http://filebeam.com/29662fce25416fcf3c7b83b56bce8c6c.jpg

I'm currently at school so I can't try anything right now...

6
General / Re: Optimizing collision system
« on: June 12, 2012, 08:37:11 pm »
using
IntRect rAnim(Animation::GetX(), Animation::GetY(), Animation::GetW(), Animation::GetH());
        IntRect rCollider(Collider.GetX()-2, Collider.GetY()-2, Collider.GetW()+2, Collider.GetH()+2);

        IntRect result;
        bool b1 = rAnim.intersects(rCollider, result);
        if(b1)
                return true;

now, however I'm still getting those 2 errors (it looks like I created same function as rect... however by adding +2 and -2 to collider it got better, I now collide at right position, or -1 pixel away, which is not that bad, however I can't move when I collide, I don't know how should I fix it... any solutions?

7
General / Optimizing collision system
« on: June 11, 2012, 06:36:54 pm »
Hello,

I've made my own collision system (only for squares and rectangles) but I have 2 little bugs that I don't know how to fix

1. sometimes it will pass through texture, but max of 1 or 2 pixels // I've tried to fix this by adding 1 pixel for "bonus collision range" but sometimes it will collide even when they aren't touching...
2. when it collide with something you can move only to 2 sides, for example:

when I collide with right side with player (left side of second object) I can;t move down, only up and left (on the right side is second object)

here's screenshot of first problem (object is locared at 100,100), I've collided at x = 102 which should be 100

http://filebeam.com/b7d18239c8bb509c5747b20c0e3ec46e.jpg

here's my code:

Collision function:
bool Animation::IsAt(Animation Collider, char direction)
{
        int AnimW, AnimH, ColliderW, ColliderH;
        float AnimX, AnimY, ColliderX, ColliderY;
       
        AnimX = Animation::GetX();
        AnimY = Animation::GetY();
        ColliderX = Collider.GetX();
        ColliderY = Collider.GetY();

        AnimW = Animation::GetW();
        AnimH = Animation::GetH();
        ColliderW = Collider.GetW();
        ColliderH = Collider.GetH();

        if(direction == 'r')
        {
                if(
                        (AnimX+AnimW >= ColliderX && AnimX+AnimW <= ColliderX+ColliderW && AnimY >= ColliderY && AnimY <= ColliderY+ColliderH) ||
                        (AnimX+AnimW >= ColliderX && AnimX+AnimW <= ColliderX+ColliderW && AnimY+AnimH >= ColliderY && AnimY+AnimH <= ColliderY+ColliderH) ||

                        (ColliderX >= AnimX && ColliderX <= AnimX+AnimW && ColliderY >= AnimY && ColliderY <= AnimY+AnimH) ||
                        (ColliderX >= AnimX && ColliderX <= AnimX+AnimW && ColliderY+ColliderH >= AnimY && ColliderY+ColliderH <= AnimY+AnimH)
                        )
                {
                        return true;
                }
        }

        else if(direction == 'l')
        {
                if(
                        (AnimX >= ColliderX && AnimX <= ColliderX+ColliderW && AnimY >= ColliderY && AnimY <= ColliderY+ColliderH) ||
                        (AnimX >= ColliderX && AnimX <= ColliderX+ColliderW && AnimY+AnimH >= ColliderY && AnimY+AnimH <= ColliderY+ColliderH) ||

                        (ColliderX+ColliderW >= AnimX && ColliderX+ColliderW <= AnimX+AnimW && ColliderY >= AnimY && ColliderY <= AnimY+AnimH) ||
                        (ColliderX+ColliderW >= AnimX && ColliderX+ColliderW <= AnimX+AnimW && ColliderY+ColliderH >= AnimY && ColliderY+ColliderH <= AnimY+AnimH)
                        )
                {
                        return true;
                }
        }

        else if(direction == 'u')
        {
                if(
                        (AnimX >= ColliderX && AnimX <= ColliderX+ColliderW && AnimY >= ColliderY && AnimY <= ColliderY+ColliderH) ||
                        (AnimX+AnimW >= ColliderX && AnimX+AnimW <= ColliderX+ColliderW && AnimY >= ColliderY && AnimY <= ColliderY+ColliderH) ||

                        (ColliderX >= AnimX && ColliderX <= AnimX+AnimW && ColliderY+ColliderH >= AnimY && ColliderY+ColliderH <= AnimY+AnimH) ||
                        (ColliderX+ColliderW >= AnimX && ColliderX+ColliderW <= AnimX+AnimW && ColliderY+ColliderH >= AnimY && ColliderY+ColliderH <= AnimY+AnimH)
                        )
                {
                        return true;
                }
        }

        else if(direction == 'd')
        {
                if(
                        (AnimX >= ColliderX && AnimX <= ColliderX+ColliderW && AnimY+AnimH >= ColliderY && AnimY+AnimH <= ColliderY+ColliderH) ||
                        (AnimX+AnimW >= ColliderX && AnimX+AnimW <= ColliderX+ColliderW && AnimY+AnimH >= ColliderY && AnimY+AnimH <= ColliderY+ColliderH) ||

                        (ColliderX >= AnimX && ColliderX <= AnimX+AnimW && ColliderY >= AnimY && ColliderY <= AnimY+AnimH) ||
                        (ColliderX+ColliderW >= AnimX && ColliderX+ColliderW <= AnimX+AnimW && ColliderY >= AnimY && ColliderY <= AnimY+AnimH)
                        )
                {
                        return true;
                }
        }
        return false;
}

how am I detecting collision in game:

if(right)
                        {
                                if(!aPlayer[0].IsAt(aBuilding[0], 'r'))
                                        aPlayer[0].Move(Vector2f(Speed*ElapsedTime, 0), 'r');
                                lastdir = 0;
                        }
                        if(left)
                        {
                                if(!aPlayer[0].IsAt(aBuilding[0], 'l'))
                                        aPlayer[0].Move(Vector2f(-Speed*ElapsedTime, 0), 'l');
                                lastdir = 3;
                        }
                        if(up)
                        {
                                if(!aPlayer[0].IsAt(aBuilding[0], 'u'))
                                        aPlayer[0].Move(Vector2f(0, -Speed*ElapsedTime), 'u');
                                lastdir = 6;
                        }
                        if(down)
                        {
                                if(!aPlayer[0].IsAt(aBuilding[0], 'd'))
                                        aPlayer[0].Move(Vector2f(0, Speed*ElapsedTime), 'd');
                                lastdir = 9;
                        }

I've been working on this second day, total of like 10 hours and I have no more ideas on how to fix that.. my brain is completelly exhausted ...

8
Graphics / Get Size and Position of texture/sprite
« on: June 09, 2012, 10:46:19 pm »
Hello,

I'm trying to get position and size of sprite and texture but I'm getting this error:

error is on wsprintf...

Code: [Select]
Unhandled exception at 0x74df9d60 in Lucid Dreaming.exe: 0xC0000005: Access violation reading location 0x00000320.
part of code:

Vector2u PlayerSize = tBackground[0].getSize();
                                char test[512];
                                wsprintf(test, "%s", PlayerSize);
                                MessageBox(NULL, test, NULL, NULL);

and position is returnin NULL value

Vector2f PlayerPosition = sBackground.getPosition();
                                char test[512];
                                wsprintf(test, "%s", PlayerPosition);
                                MessageBox(NULL, test, NULL, NULL);

also is there any way to return them as int x,y?

9
General / [Win32 API Chat] Defpushbutton and EditControl
« on: June 09, 2012, 08:41:38 pm »
Hello,

I wanted to include chat in my game, I've did a similiar chat to the one that's already working, however when I press enter it wont "simulate" press of the "send" button like it is in my chat, I've did everything like in my chat, even resources, but I have no idea why is this happening, when I press enter it will do a "beep" and nothing will happen, I have to manually press "Send" button, I'm not sure if this is caused because of SFML or there's something wrong in my code

My Game so far:

Source.cpp
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <Windows.h>
#include "Animation.h"
#include "resource.h"
using namespace sf;

/*
default:
right: 0
left : 1
down : 2
up   : 3

Moving:
right: 4
Left : 5
Down : 6
Up   : 7
*/


bool visible = false;

#pragma comment (lib, "sfml-window.lib")
#pragma comment (lib, "sfml-graphics.lib")
#pragma comment (lib, "sfml-system.lib")

BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

#define MY_WM_INITDIALOG (WM_USER + 1)


int wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR lpCmdLine, INT nShowCmd)
{
        UNREFERENCED_PARAMETER(hPrevInst);
        UNREFERENCED_PARAMETER(lpCmdLine);

        WNDCLASSEX wClass;
        ZeroMemory(&wClass,sizeof(WNDCLASSEX));
        wClass.cbClsExtra=0;
        wClass.cbSize=sizeof(WNDCLASSEX);
        wClass.cbWndExtra=DLGWINDOWEXTRA;
        wClass.hbrBackground=(HBRUSH)(COLOR_BTNFACE + 1);
        wClass.hCursor=LoadCursor(NULL,IDC_ARROW);
        wClass.hIcon=NULL;
        wClass.hIconSm=NULL;
        wClass.hInstance=hInst;
        wClass.lpfnWndProc=(WNDPROC)MainDlgProc;
        wClass.lpszClassName="LD Class";
        wClass.lpszMenuName=NULL;
        wClass.style=CS_HREDRAW | CS_VREDRAW;

        if(!RegisterClassEx(&wClass))
        {
                int nResult = GetLastError();
                MessageBox(NULL, "Window Class Creation Failed!", NULL, MB_ICONERROR | MB_OK);
                return 0;
        }

        HWND hWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_MAIN1), NULL, NULL);

        if(!hWnd)
        {
                int nResult = GetLastError();
                MessageBox(NULL, "Dialog Creation Failed!", NULL, MB_ICONERROR | MB_OK);
                return 0;
        }

        DWORD Style = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS;
        HWND View = CreateWindow("STATIC", NULL, Style, 0, 0, 800, 600, hWnd, NULL, hInst, NULL);
        RenderWindow MainWindow(View);

        MainWindow.create(View);

        bool left = false, right = false, up = false, down = false;

        Texture tBackground;
        tBackground.loadFromFile("Background.png");
        Sprite sBackground(tBackground);

        Animation anim;
        anim.Load("Animation/Right Stand.png", 0);
        anim.Load("Animation/Right Move.png", 4);
        anim.Swap(0,0);

        MSG msg;
        ZeroMemory(&msg,sizeof(MSG));

        msg.message = ~WM_QUIT;

        while (msg.message != WM_QUIT)
    {
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
                        if(Keyboard::isKeyPressed(Keyboard::Left))
                        {
                                left = true;
                                right = false;
                                up = false;
                                down = false;
                        }
                        if(Keyboard::isKeyPressed(Keyboard::Right))
                        {
                                right = true;
                                left = false;
                                up = false;
                                down = false;
                        }
                        if(Keyboard::isKeyPressed(Keyboard::Up))
                        {
                                up = true;
                                right = false;
                                left = false;
                                down = false;
                        }
                        if(Keyboard::isKeyPressed(Keyboard::Down))
                        {
                                down = true;
                                right = false;
                                left = false;
                                up = false;
                        }

                        if(left)
                        {
                                anim.Move(Vector2f(-0.2f, 0), 'l');
                        }
                        if(right)
                        {
                                anim.Move(Vector2f(0.2f, 0), 'r');
                        }
                        if(up)
                        {
                                anim.Move(Vector2f(0, -0.2f), 'u');
                        }
                        if(down)
                        {
                                anim.Move(Vector2f(0, 0.2f), 'd');
                        }
               
                        left = false;
                        right = false;
                        up = false;
                        down = false;
               
                        MainWindow.clear();

                        MainWindow.draw(sBackground);

                        anim.Draw(MainWindow);

                        MainWindow.display();

                        anim.ResetFrame();
        }
    }
        return msg.wParam;
}

BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
        switch(msg)
        {
        case MY_WM_INITDIALOG:
                {
                }
                break;
        case WM_CREATE:
                {
                        PostMessage(hWnd, MY_WM_INITDIALOG, 0, 0);
                }
                break;
        case WM_DESTROY:
                {
                        PostQuitMessage(0);
                        return 0;
                }
                break;
        case WM_COMMAND:
                {
                        switch(LOWORD(wParam))
                        {
                        case IDC_CHAT1:
                                {
                                        if(visible)
                                        {
                                                visible = false;
                                                HWND hOutput = GetDlgItem(hWnd, IDC_OUTPUT1);
                                                HWND hMessage = GetDlgItem(hWnd, IDC_MESSAGE1);
                                                HWND hSend = GetDlgItem(hWnd, IDC_SEND1);
                                                ShowWindow(hOutput, SW_HIDE);
                                                ShowWindow(hMessage, SW_HIDE);
                                                ShowWindow(hSend, SW_HIDE);
                                        }
                                        else
                                        {
                                                visible = true;
                                                HWND hOutput = GetDlgItem(hWnd, IDC_OUTPUT1);
                                                HWND hMessage = GetDlgItem(hWnd, IDC_MESSAGE1);
                                                HWND hSend = GetDlgItem(hWnd, IDC_SEND1);
                                                ShowWindow(hOutput, SW_SHOW);
                                                ShowWindow(hMessage, SW_SHOW);
                                                ShowWindow(hSend, SW_SHOW);
                                                SetFocus(hSend);
                                        }
                                }
                        case IDC_SEND1:
                                {
                                        char buffer[128];
                                        GetDlgItemText(hWnd, IDC_MESSAGE1, buffer, sizeof(buffer)/sizeof(buffer[0]));
                                        if(strcmp(buffer, "") != 0)
                                        {
                                                bool cansend = false;
                                                for(unsigned int i = 0; i < strlen(buffer); i++)
                                                {
                                                        if(buffer[i] != ' ')
                                                        {
                                                                cansend = true;
                                                                break;
                                                        }
                                                }
                                                if(cansend == true)
                                                {
                                                        HWND hOutput = GetDlgItem(hWnd, IDC_OUTPUT1);
                                                        HWND hMessage = GetDlgItem(hWnd, IDC_MESSAGE1);
                                                        int Textlen = SendMessage(hOutput, WM_GETTEXTLENGTH, 0, 0);
                                                        SendMessage(hOutput, EM_SETSEL, Textlen, Textlen);
                                                        SendMessage(hOutput, EM_REPLACESEL, TRUE, (LPARAM)buffer);
                                                        SendMessage(hOutput, EM_REPLACESEL, TRUE, (LPARAM)"\n");
                                                        Textlen = SendMessage(hMessage, WM_GETTEXTLENGTH, 0, 0);
                                                        SendMessage(hMessage, EM_SETSEL, 0, Textlen);
                                                        SendMessage(hMessage, EM_REPLACESEL, TRUE, (LPARAM)"");
                                                }
                                        }
                                        break;
                                }
                        }
                        break;
                }
        }
        return DefWindowProc(hWnd, msg, wParam, lParam);
}

Resource.rc
// Generated by ResEdit 1.5.11
// Copyright (C) 2006-2012
// http://www.resedit.net

#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"




//
// Dialog resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_MAIN1 DIALOG 0, 0, 533, 369
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Lucid Dreaming"
CLASS "LD Class"
FONT 8, "Ms Shell Dlg"
{
    EDITTEXT        IDC_MESSAGE1, 17, 353, 163, 14, NOT WS_VISIBLE | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "Send", IDC_SEND1, 181, 353, 22, 14, NOT WS_VISIBLE
    EDITTEXT        IDC_OUTPUT1, 17, 268, 163, 83, NOT WS_VISIBLE | ES_AUTOHSCROLL | ES_MULTILINE | ES_READONLY
    PUSHBUTTON      "C", IDC_CHAT1, 1, 268, 15, 14
}
 

My Chat:

main.cpp
#include <winsock2.h>
#include <Windows.h>
#include "resource.h"
#include <string>
#include <mysql++.h>
#include <manip.h>
#include <sstream>
#include <fstream>
#include <winsock2.h>
#include <Ws2tcpip.h>

using namespace std;

//DB

//deleted now

// Server

#define DN "localhost"

#define WM_DNS (WM_USER + 2)
#define WM_DATA (WM_USER + 3)

#define TCP_PORT 5000
#define BUFSIZE 10240
#define TEXT_SIZE 102400

HANDLE idTask;
SOCKET sock = INVALID_SOCKET;

char buf[MAXGETHOSTSTRUCT];
char textBuffer[TEXT_SIZE];

HWND mainhWnd;

#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")


char Username[16];
char Password[256];

char DBPassword[256];

char cUsername[16];
char cPassword[256];
char cPasswordc[256];
char cEmail[32];

int Perm = 0;
int iRet;

string sPassword;
char scPassword[256];

string wholeMessage;

void AppendText(HWND hDlg, char buffer[TEXT_SIZE], int size);
string MakeText(char buffer[TEXT_SIZE]);
int CreateConnectDlg(HINSTANCE hInst);
void CreateRegDlg(HINSTANCE hInst);
int CreateAccount(HWND hWnd, char cUsername[16], char cPassword[256], char cEmail[32]);
int Login(HWND hWnd, char Username[16], char Password[256]);
void Encode(char Message[1024]);
void Decode(char Message[1024]);
void On_DrawItem(LPDRAWITEMSTRUCT lpDIS);

BOOL CALLBACK ConnectDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK MainDlgProc(HWND hMain, UINT msg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK RegisterDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

HINSTANCE hInst2;

void CreateRegDlg(HINSTANCE hInst)
{
        DialogBox(hInst, MAKEINTRESOURCE(IDD_REGISTER1), NULL, RegisterDlgProc);
        CreateConnectDlg(hInst);
}

int CreateConnectDlg(HINSTANCE hInst)
{
        iRet = 0;
        iRet = DialogBox(hInst, MAKEINTRESOURCE(IDD_CONNECT1), NULL, ConnectDlgProc);
        if(iRet == IDC_REGISTER1)
                CreateRegDlg(hInst);
        return 0;
}

#define MY_WM_INITDIALOG (WM_USER + 1)

INT WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR lpCmdLine, INT nShowCmd)
{
        UNREFERENCED_PARAMETER(hPrevInst);
        UNREFERENCED_PARAMETER(lpCmdLine);

        hInst2 = hInst;

        CreateConnectDlg(hInst);
        if(iRet == IDCANCEL)
                return 0;
       
        HMODULE hmodRichEdit = LoadLibrary("Riched20.dll");
        _ASSERTE(NULL != hmodRichEdit);

        WNDCLASSEX wClass;
        ZeroMemory(&wClass,sizeof(WNDCLASSEX));
        wClass.cbClsExtra=0;
        wClass.cbSize=sizeof(WNDCLASSEX);
        wClass.cbWndExtra=DLGWINDOWEXTRA;
        wClass.hbrBackground=(HBRUSH)(COLOR_BTNFACE + 1);
        wClass.hCursor=LoadCursor(NULL,IDC_ARROW);
        wClass.hIcon=(HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTCOLOR);
        wClass.hIconSm=(HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_ICON2), IMAGE_ICON, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTCOLOR);
        wClass.hInstance=hInst;
        wClass.lpfnWndProc=(WNDPROC)MainDlgProc;
        wClass.lpszClassName="Window Class";
        wClass.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
        wClass.style=CS_HREDRAW | CS_VREDRAW;

        if(!RegisterClassEx(&wClass))
        {
                int nResult = GetLastError();
                MessageBox(NULL, "Window Class Creation Failed!", NULL, MB_ICONERROR | MB_OK);
                return 0;
        }

        mainhWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_CHAT1), NULL, NULL);

        if(!mainhWnd)
        {
                int nResult = GetLastError();
                MessageBox(NULL, "Dialog Creation Failed!", NULL, MB_ICONERROR | MB_OK);
                return 0;
        }

        MSG msg;
        ZeroMemory(&msg,sizeof(MSG));

        while(GetMessage(&msg, NULL, 0, 0) == TRUE)
        {
                if(!IsDialogMessage(mainhWnd, &msg))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
        }
        return msg.wParam;
}

BOOL CALLBACK MainDlgProc(HWND hMain, UINT msg, WPARAM wParam, LPARAM lParam)
{
        switch(msg)
        {
        case MY_WM_INITDIALOG:
                {
                        WORD wVersionRequested = MAKEWORD(2,2);
                        WSAData data;
                        if (WSAStartup(wVersionRequested, &data) != 0){
                                return 0;
                        }
                        memset(buf, 0, MAXGETHOSTSTRUCT);
                        if ((idTask = WSAAsyncGetHostByName(hMain, WM_DNS, DN, buf, MAXGETHOSTSTRUCT)) == 0){          
                                return 0;
                        }
                        HWND TextMessageBox = GetDlgItem(hMain, IDC_MESSAGE1);
                        SetFocus(TextMessageBox);
                        HWND hList = GetDlgItem(hMain, IDC_LIST1);
                        if(Perm == 3)
                        {
                                char AUsername[30];
                                wsprintf(AUsername, "*%s", Username);
                                SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)AUsername);
                        }
                        else
                                SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)Username);
                }
                break;
        case WM_DNS:
                {
                        if(idTask == (HWND)wParam)
                        {
                                struct hostent *host = (struct hostent *) buf;
                                struct sockaddr *addr = NULL;
                                struct sockaddr_in addr_ip4;
                                size_t addrLen = 0;
                                if(WSAGETASYNCERROR(lParam) != 0)
                                {
                                        return 0;
                                }
                                addr_ip4.sin_family = host->h_addrtype;
                                addr_ip4.sin_port = htons(TCP_PORT);
                                memcpy(&(addr_ip4.sin_addr), host->h_addr_list[0], host->h_length);
                                addr = (struct sockaddr *)&addr_ip4;
                                addrLen = sizeof(addr_ip4);
                                if ((sock = socket(host->h_addrtype, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET){
                                        return 0;
                                }
                                if (connect(sock, addr, addrLen) == SOCKET_ERROR){
                                        return 0;
                                }
                                if (WSAAsyncSelect(sock, hMain, WM_DATA, FD_READ) == SOCKET_ERROR){
                                        return 0;
                                }
                        }
                        char buffer[TEXT_SIZE];
                        char CommandConnected[] = "Command.User.Connected";
                        wsprintf(buffer, "%s %s", CommandConnected, Username);
                        if(send(sock, buffer, strlen(buffer)+1, 0) == SOCKET_ERROR)
                        {
                                MessageBox(hMain, "Nejde odoslat data\r\n", "Error", MB_OK);
                                return 0;
                        }
                }
        case WM_DATA:
                {
                        if (WSAGETSELECTEVENT(lParam) == FD_READ)
                        {
                                int size;
                                char buffer[BUFSIZE];
                                if ((size = recv(sock, buffer, BUFSIZE, 0)) == SOCKET_ERROR)
                                {
                                        WSAAsyncSelect(sock, hMain, 0, 0);
                                        strncpy(buffer, "Nejde prijat data\r\n", BUFSIZE);
                                        send(sock, buffer, strlen(buffer), 0);
                                        shutdown(sock, SD_BOTH);
                                        closesocket(sock);
                                }
                                AppendText(hMain, buffer, size);
                }
                        break;
                }
        case WM_CREATE:
                {
                        PostMessage(hMain, MY_WM_INITDIALOG, 0, 0);
                }
                break;
        case WM_DESTROY:
                {
                        if(sock != INVALID_SOCKET)
                        {
                                closesocket(sock);
                        }
                        WSACleanup();
                        PostQuitMessage(0);
                        return 0;
                }
                break;
        case WM_COMMAND:
                {
                        switch(LOWORD(wParam))
                        {
                        case IDOK:
                                {
                                        HWND TextMessageBox = GetDlgItem(hMain, IDC_MESSAGE1);
                                        char buffer[TEXT_SIZE];
                                        char BanCommand[] = "/ban";
                                        GetDlgItemText(hMain, IDC_MESSAGE1, buffer, sizeof(buffer)/sizeof(buffer[0]));
                                        if(strcmp(buffer, "") != 0)
                                        {
                                                bool cansend = false;
                                                for(unsigned int i = 0; i < strlen(buffer); i++)
                                                {
                                                        if(buffer[i] != ' ')
                                                        {
                                                                cansend = true;
                                                                break;
                                                        }
                                                }
                                                if(cansend == true)
                                                {
                                                        string str = MakeText(buffer);
                                                        memset(buffer, 0, sizeof(buffer));
                                                        strncpy(buffer, str.c_str(), _countof(buffer) - 1);
                                                        int size = strlen(buffer);
                                                        if(send(sock, buffer, size+1, 0) == SOCKET_ERROR)
                                                        {
                                                                char error[] = "Nejde odoslat data\r\n";
                                                                strcpy(buffer, error);
                                                                size = strlen(error);
                                                        }
                                                        AppendText(hMain, buffer, size);
                                                }
                                        }
                                        SetDlgItemText(hMain, IDC_MESSAGE1, "");
                                        SetFocus(TextMessageBox);
                                }
                                break;
                        case IDM_BAN1:
                                {
                                        HWND TextMessageBox = GetDlgItem(hMain, IDC_MESSAGE1);
                                        EnableWindow(TextMessageBox, FALSE);
                                }
                                break;
                        case IDM_UNBAN1:
                                {
                                        HWND TextMessageBox = GetDlgItem(hMain, IDC_MESSAGE1);
                                        EnableWindow(TextMessageBox, TRUE);
                                }
                                break;
                        }
                        break;
                }
        }
        return DefWindowProc(hMain, msg, wParam, lParam);
}


Resource.rc
// Generated by ResEdit 1.5.8
// Copyright (C) 2006-2011
// http://www.resedit.net

#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"



//
// Menu resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDR_MENU1 MENU
{
    POPUP "File"
    {
        MENUITEM "Ban", IDM_BAN1
        MENUITEM "Unban", IDM_UNBAN1
    }
}



//
// Dialog resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_CHAT1 DIALOG 0, 0, 325, 169
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU | WS_MINIMIZEBOX
CAPTION "Chat"
CLASS "Window Class"
FONT 8, "Ms Shell Dlg"
{
    EDITTEXT        IDC_MESSAGE1, 9, 136, 252, 14, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "Send", IDOK, 267, 136, 50, 14
    LISTBOX         IDC_LIST1, 267, 10, 50, 119, WS_TABSTOP | WS_VSCROLL | LBS_NOINTEGRALHEIGHT | LBS_NOTIFY
    CONTROL         "", IDC_OUTPUT1, RICHEDIT_CLASS, WS_TABSTOP | WS_VSCROLL | WS_BORDER | ES_AUTOVSCROLL | ES_MULTILINE | ES_READONLY, 9, 10, 252, 119
}
 

10
Graphics / Re: Custom Animation Class
« on: June 09, 2012, 02:16:50 pm »
yeah I just wanted to say that It's returning sprite since when I create sprite inside the class (public) I can't use it anyway and I didn't know how to do it so it will draw animation within class, THANKS A LOT! it's working great now!

11
Graphics / Custom Animation Class
« on: June 09, 2012, 01:05:05 pm »
can someone help me fix my animation class? I've created default animation class that's swapping textures of sprite, it works so far, however Ican't move with sprite

Animation.h
#include <string>
#include <SFML\Graphics.hpp>
using namespace sf;

class Animation
{
public:
        Animation();
        bool Load(std::string, int);
        void Swap();
        Sprite Draw();
private:
        int CurrentImage;
        Texture tPlayer[2];
        Sprite sPlayer;
};

Animation.cpp
#include "Animation.h"

Animation::Animation()
{
}

void Animation::Swap()
{
        if(CurrentImage == 1)
                CurrentImage = 0;
        else
                CurrentImage = 1;
        sPlayer.setTexture(tPlayer[CurrentImage]);
}

bool Animation::Load(std::string name, int position)
{
        if(tPlayer[position].loadFromFile(name))
        {
                return true;
        }
        return false;
}

Sprite Animation::Draw()
{
        return sPlayer;
}

Animation.cpp
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <Windows.h>
#include "Animation.h"
using namespace sf;

#pragma comment (lib, "sfml-window.lib")
#pragma comment (lib, "sfml-graphics.lib")
#pragma comment (lib, "sfml-system.lib")

int wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR lpCmdLine, INT nShowCmd)
{

        RenderWindow MainWindow(VideoMode(800, 600), "Lucid Dreaming");

        bool left = false, right = false, up = false, down = false;

        Texture tBackground;
        tBackground.loadFromFile("Background.png");
        Sprite sBackground(tBackground);

        Animation anim;
        anim.Load("Untitled.png", 0);
        anim.Load("Untitled2.png", 1);

        Sprite spr;
        spr = anim.Draw();

        while(MainWindow.isOpen())
        {
                spr = anim.Draw();
                Event Event;
                while(MainWindow.pollEvent(Event))
                {
                        if(Event.type == Event::Closed)
                                MainWindow.close();
                }

                if(Keyboard::isKeyPressed(Keyboard::Left))
                {
                        left = true;
                }
                if(Keyboard::isKeyPressed(Keyboard::Right))
                {
                        right = true;
                }
                if(Keyboard::isKeyPressed(Keyboard::Up))
                {
                        up = true;
                }
                if(Keyboard::isKeyPressed(Keyboard::Down))
                {
                        down = true;
                }
                if(left)
                        spr.move(-0.1f, 0);
                if(right)
                        spr.move(0.1f, 0);
                if(up)
                        spr.move(0, -0.1f);
                if(down)
                        spr.move(0, 0.1f);

                left = false;
                right = false;
                up = false;
                down = false;

                MainWindow.clear();

                MainWindow.draw(sBackground);

                anim.Swap();

                MainWindow.draw(spr);

                MainWindow.display();
        }

        return 0;
}

12
General / Gif (or another) animation
« on: June 08, 2012, 07:37:46 pm »
is it possible to load any kind of sprite animation ? I've tried to load gif like sprite but it's not animated...

13
System / Re: Real-Time Input in SFML 2
« on: June 08, 2012, 06:03:11 pm »
Your logic doesn't make sense. Why do you query the keyboard state inside an event loop?

uhm, idk? I remember that it was event in 1.6 :D anyway thanks :D it's working

14
System / Real-Time Input in SFML 2
« on: June 08, 2012, 04:50:18 pm »
Hello,

How can I move my sprite smoothly since Input is no longer in SFML 2.0?

I've tried to do it this way but it still isn't smooth and there's a "pause" when I press arrow (probably because of those "xx = false" at bot.. but I have no idea how to do that

        while(MainWindow.isOpen())
        {
                Event Event;
                while(MainWindow.pollEvent(Event))
                {
                        if(Event.type == Event::Closed)
                                MainWindow.close();
                        if(Keyboard::isKeyPressed(Keyboard::Left))
                        {
                                left = true;
                        }
                        if(Keyboard::isKeyPressed(Keyboard::Right))
                        {
                                right = true;
                        }
                        if(Keyboard::isKeyPressed(Keyboard::Up))
                        {
                                up = true;
                        }
                        if(Keyboard::isKeyPressed(Keyboard::Down))
                        {
                                down = true;
                        }
                        if(left)
                                sT.move(-5, 0);
                        if(right)
                                sT.move(5, 0);
                        if(up)
                                sT.move(0, -5);
                        if(down)
                                sT.move(0, 5);
                }

                left = false;
                right = false;
                up = false;
                down = false;

                MainWindow.clear();

                MainWindow.draw(sBackground);

                MainWindow.draw(sT);

                MainWindow.display();
        }

15
Graphics / Re: Draw Sprite
« on: June 08, 2012, 03:46:19 pm »
wow.. thanks... just changed Window to RenderWindow and it's working now -.-' I thought I'm gonna kill myself after that hour

Pages: [1] 2
anything