MemCacheClient::Server *
MemCacheClient::FindServer(
    const string_t & a_sKey
    )
{
    // probably need some servers for this
    if (m_rgServerHash.empty()) {
        return NULL;
    }

    // find the next largest consistent hash value above this key hash
    ConsistentHash hash(CreateKeyHash(a_sKey.data()), NULL);
    std::vector<ConsistentHash>::iterator iServer = 
        std::lower_bound(m_rgServerHash.begin(), m_rgServerHash.end(), hash);
    if (iServer == m_rgServerHash.end()) {
        iServer = m_rgServerHash.begin();
    }

    // ensure that this server is connected 
    Server * pServer = iServer->mServer;
    if (!pServer->Connect(m_nTimeoutMs)) {
        return NULL;
    }
    return pServer;
}
MemCacheClient::Server *
MemCacheClient::FindServer(
    const string_t & aKey,
    unsigned         aService
    )
{
#ifdef CROSSBASE_API
    // in our private usage of this, the service must never be 0
    if (aService == 0) {
        mTrace.Trace(CLERROR, "FindServer: no service requested, supplied cache server may not be appropriate!!!");
        CR_ASSERT(!"FindServer: no service requested, supplied cache server may not be appropriate!!!");
    }
#endif

    // probably need some servers for this
    if (mServerHash.empty()) {
        //mTrace.Trace(CLDEBUG, "FindServer: server hash is empty");
        return NULL;
    }

    // find the next largest consistent hash value above this key hash
    ConsistentHash hash(CreateKeyHash(aKey.data()), NULL, 0, 0);
    std::vector<ConsistentHash>::iterator iBegin = mServerHash.begin();
    std::vector<ConsistentHash>::iterator iEnd = mServerHash.end();
    std::vector<ConsistentHash>::iterator iCurr = std::lower_bound(iBegin, iEnd, hash);
    if (iCurr == iEnd) iCurr = iBegin;

    // now find the next server that handles this service
    if (aService != 0) {
        //int nSkipped = 0;
        std::vector<ConsistentHash>::iterator iStart = iCurr;
        while (!iCurr->services(aService)) {
            //++nSkipped;
            ++iCurr; 
            if (iCurr == iEnd) iCurr = iBegin;
            if (iCurr == iStart) {
                mTrace.Trace(CLDEBUG, "FindServer: no server for required service: %u", aService);
                return NULL;
            }
        }
        //if (nSkipped > 0) mTrace.Trace(CLDEBUG, "skipped %d servers for service: %u", nSkipped, aService);
    }

    // ensure that this server is connected 
    Server * pServer = iCurr->mServer;
    Server::ConnectResult rc = pServer->Connect(mTimeoutMs, mRetryMs);
    switch (rc) {
    case Server::CONNECT_SUCCESS:
        //mTrace.Trace(CLDEBUG, "FindServer: using server %s", pServer->GetAddress());
        return pServer;
    case Server::CONNECT_WAITING:
        return NULL;
    default:
    case Server::CONNECT_FAILED:
        //mTrace.Trace(CLDEBUG, "FindServer: failed to connect to server %s", pServer->GetAddress());
        return NULL;
    }
}
int
main(int argc, char **argv)
{
		Server srv;

		srv.Connect();
		srv.process();

	return 0;
}
int
MemCacheClient::FlushAll(
    const char *    aServer, 
    int             aExpiry
    )
{
    char szRequest[50];
    snprintf(szRequest, sizeof(szRequest), 
        "flush_all %u\r\n", aExpiry);

    Server test(mTrace);
    if (aServer && !test.Set(aServer)) {
        return false;
    }

    int nSuccess = 0;
    for (size_t n = 0; n < mServer.size(); ++n) {
        Server * pServer = mServer[n];
        if (aServer && *pServer != test) continue;
    
        // ensure that we are connected
        if (pServer->Connect(mTimeoutMs, mRetryMs) != Server::CONNECT_SUCCESS) {
            continue;
        }

        try {
            // request
            pServer->SendBytes(szRequest, strlen(szRequest));

            // response
            string_t sValue;
            sValue = pServer->GetByte();
            while (sValue[sValue.length()-1] != '\n') {
                sValue += pServer->GetByte();
            }
            if (sValue == "OK\r\n") {
                // done
                ++nSuccess;
            }
            else {
                // unknown response, connection may be bad
                pServer->Disconnect();
            }
        }
        catch (const Socket::Exception &) {
            mTrace.Trace(CLINFO, "socket error, ignoring flush request");
            // data error
        }
    }

    return nSuccess;
}
int
MemCacheClient::FlushAll(
    const char *    a_pszServer, 
    int             a_nExpiry
    )
{
    char szRequest[50];
    snprintf(szRequest, sizeof(szRequest), 
        "flush_all %u\r\n", a_nExpiry);

    Server test;
    if (a_pszServer && !test.Set(a_pszServer)) return false;

    int nSuccess = 0;
    for (size_t n = 0; n < m_rgpServer.size(); ++n) {
        Server * pServer = m_rgpServer[n];
        if (a_pszServer && *pServer != test) continue;
    
        // ensure that we are connected
        if (!pServer->Connect(m_nTimeoutMs)) {
            continue;
        }

        try {
            // request
            pServer->SendBytes(szRequest, strlen(szRequest));

            // response
            string_t sValue;
            sValue = pServer->GetByte();
            while (sValue[sValue.length()-1] != '\n') {
                sValue += pServer->GetByte();
            }
            if (sValue == "OK\r\n") {
                // done
                ++nSuccess;
            }
            else {
                // unknown response, connection may be bad
                pServer->Disconnect();
            }
        }
        catch (const ServerSocket::Exception &) {
            // data error
        }
    }

    return nSuccess;
}
Exemple #6
0
int main(){
    srand(time(0));
    key_t key = MAX_CLIENT_SIZE * 5;
    int server_shm_id = shmget(key, sizeof(Server), 0666|IPC_CREAT);    
    if(server_shm_id == -1){
        perror("shared memory error");
        return 1;
    }
    Server *shm = (Server*)shmat(server_shm_id, (void*)0, 0);
    Server *server = new(shm) Server(PORT, MAX_EPOLL_SIZE);
    server->shm_id = server_shm_id;
    for(int i=0;i<MAX_CLIENT_SIZE;i++){
        server->msg[i].key = MAX_CLIENT_SIZE+i;
        shm_sem_create(server->msg[i].key, 1);
        server->msg[i].id = shm_sem_open(server->msg[i].key);
    }
	signal(SIGCHLD, zombie_handler);
	if(server->Connect() != 0)return 0;
	server->Run();
	return 0;
}
Exemple #7
0
int Patafour::Main()
{
    startTimeout.restart();
    string nick,pass;

    while (window.isOpen())
    {
        window.clear(sf::Color::Black);

        sf::Vector2u windowsize = window.getSize();
        int width = windowsize.x;
        int height = windowsize.y;
        view.setCenter(sf::Vector2f(width/2, height/2));
        view.setSize(sf::Vector2f(width, height));

        switch(state) {
                case -3:
                return 0;
                break;
                case -2:
                static LoginDialog loginDialog;
                loginDialog.Draw(window);
                nick=loginDialog.login;
                pass=loginDialog.pass;
                break;
                case -1:
                static LoadingSplash loadingSplash;
                loadingSplash.Draw(window);
                if(startTimeout.getElapsedTime().asSeconds()>=2)
                {
                state = 0;
                loadingSplash.Stop();
                }
                break;
                case 0:
                static Opening opening(window);
                opening.Draw(window,this);
                break;
                case 1:
                static MainMenu mainmenu(window);
                mainmenu.Draw(window,this);
                break;
                case 2:
                cout << "options" << endl;
                break;
                case 3:
                cout << "Loading save" << endl;
                ///Loading here
                cout << "Loaded" << endl;
                state = 4;
                break;
                case 4:
                static Tips tipsp(this);
                if(patapolisloaded == false)
                if(tipsp.needsrefresh == true) {
                cout << "refresh'd" << endl;
                tipsp.refresh(this);
                waiting.restart();
                res.LoadAllWeapons();
                }
                if(patapolisloaded==false)
                tipsp.Draw(window,this,1);
                static int i = 0;
                if(i==0) {
                res.LoadAllWeapons();
                waiting.restart();
                i+=1;
                }
                if(waiting.getElapsedTime().asSeconds()>1) {
                if(saveloaded==false) {
                savecontainer.Synchronize(nick,pass,0);
                saveloaded=true; }
                static Patapolis patapolis(window,savecontainer);
                if(patapolisloaded==true) {
                patapolis.Draw(window,savecontainer,this); }}
                break;
                case 5:
                static NewGameIntro newgameintro;
                newgameintro.Draw(window,this);
                break;
                case 6:
                cout << "Patapon oath" << endl;
                break;
                case 7:
                static Tips tipsm(this);
                static int miau = 0;
                if(miau == 0) {
                pataponload = false;
                miau += 1;
                }

                if(missionloaded==false)
                if(tipsm.needsrefresh == true){
                cout << "refresh'd" << endl;
                tipsm.refresh(this);
                pataponload = false;
                }
                if(missionloaded==false) {
                tipsm.Draw(window,this,2);
                hatapon.x = 0;
                hatapon.action = "idle";

                }
                if(tipsm.finished==true) {
                static Mission* mission = new Mission();
                if(pataponload == false)
                {
                    cout << "creating patapons" << endl;
                    for(int i=0; i<=5; i++)
                    {
                        if(savecontainer.yaripons[i][1]!="")
                        {
                        troops[1] = true;
                        Patapon temppon;
                        temppon.PataponType = temppon.YARIPON;
                        temppon.x = (hatapon.x+100)+50*i;
                        temppon.baseposition = (hatapon.x+100)+50*i;
                        yaripons.push_back(temppon);
                        cout << "YARIPONS SIZE: " << yaripons.size() << endl;
                        }
                    }

                    for(int i=0; i<=5; i++)
                    {
                        if(savecontainer.tatepons[i][1]!="")
                        {
                        troops[2] = true;
                        Patapon temppon;
                        temppon.PataponType = temppon.TATEPON;
                        temppon.x = 300+30*i;
                        temppon.baseposition = 300+30*i;
                        tatepons.push_back(temppon);
                        }
                    }

                    for(int i=0; i<=5; i++)
                    {
                        if(savecontainer.yumipons[i][1]!="")
                        {
                        troops[3] = true;
                        Patapon temppon;
                        temppon.PataponType = temppon.YUMIPON;
                        temppon.x = 0+30*i;
                        temppon.baseposition = 0+30*i;
                        yumipons.push_back(temppon);
                        }
                    }

                    cout << "patapons created" << endl;
                    pataponload = true;
                }
                static PataponRes res;
                if(mission->loaded==false) {
                mission->Load(missionfile,window);

                cout << "loading patapons" << endl;

                for(int i=0; i<=yaripons.size(); i++)
                {
                    if(savecontainer.yaripons[i][1]!="")
                    yaripons[i].LoadResources(res);
                }

                for(int i=0; i<=tatepons.size(); i++)
                {
                    if(savecontainer.tatepons[i][1]!="")
                    tatepons[i].LoadResources(res);
                }

                for(int i=0; i<=yumipons.size(); i++)
                {
                    if(savecontainer.yumipons[i][1]!="")
                    yumipons[i].LoadResources(res);
                }

                cout << "loaded patapons" << endl;

                }
                if(missionloaded==true) {
                mission->Draw(window,commandbuffer,this);
                hatapon.WeaponID = atoi(savecontainer.hatapon[6].c_str());
                hatapon.HatID = atoi(savecontainer.hatapon[7].c_str());
                hatapon.draw(window);
                hatapon.baseposition = hatapon.x+0;

                hatapon.commandbuffer = mission->commandsystem.Play();
                hatapon.commandclock = mission->commandClock.getElapsedTime();

                mission->camera.x = hatapon.x;

                /**
                for(int i=0; i<=4; i++)
                {
                    if(troops[i]==true)
                    {
                        if(i==0)
                        {
                            cout << "hatapon" << endl;
                            int temp = window.getSize().x/2;
                            circle[i].setPosition((4+i*70)-temp+mission->camera.x,10);
                            hpoutline[i].setPosition((8+i*70)-temp+mission->camera.x,2);
                            hpbar[i].setPosition((9+i*70)-temp+mission->camera.x,3);

                            sf::Sprite Mini_Head;
                            sf::Sprite Mini_Eye;
                            sf::Sprite Mini_Arm_L;
                            sf::Sprite Mini_Arm_R;
                            sf::Sprite Mini_Leg_L;
                            sf::Sprite Mini_Leg_R;
                            sf::Sprite Mini_Hat;
                            sf::Sprite Mini_Weapon;

                            Mini_Head.setTexture(*hatapon.Head.getTexture(),true);
                            Mini_Eye.setTexture(*hatapon.Eye.getTexture(),true);
                            Mini_Arm_L.setTexture(*hatapon.Arm_L.getTexture(),true);
                            Mini_Arm_R.setTexture(*hatapon.Arm_R.getTexture(),true);
                            Mini_Leg_L.setTexture(*hatapon.Leg_L.getTexture(),true);
                            Mini_Leg_R.setTexture(*hatapon.Leg_R.getTexture(),true);
                            ///Mini_Hat.setTexture(temptex[6],true);
                            Mini_Weapon.setTexture(*hatapon.Weapon.getTexture(),true);

                            Mini_Head.setScale(0.25,0.25);
                            Mini_Eye.setScale(0.25,0.25);
                            Mini_Arm_L.setScale(0.25,0.25);
                            Mini_Arm_R.setScale(0.25,0.25);
                            Mini_Leg_L.setScale(0.25,0.25);
                            Mini_Leg_R.setScale(0.25,0.25);
                            Mini_Hat.setScale(0.25,0.25);
                            Mini_Weapon.setScale(0.25,0.25);

                            Mini_Head.setPosition((4+i*70)-temp+mission->camera.x+17,26);
                            Mini_Eye.setPosition((4+i*70)-temp+mission->camera.x+26+((hatapon.Eye.getPosition().x-hatapon.x)/2),35+((hatapon.Eye.getPosition().y-hatapon.y)/2));
                            Mini_Arm_L.setPosition((4+i*70)-temp+mission->camera.x+9+((hatapon.Arm_L.getPosition().x-hatapon.x)/2)+24,41+((hatapon.Arm_L.getPosition().y-hatapon.y)/2));
                            Mini_Arm_R.setPosition((4+i*70)-temp+mission->camera.x+9+((hatapon.Arm_R.getPosition().x-hatapon.x)/2)+20,41+((hatapon.Arm_R.getPosition().y-hatapon.y)/2));
                            Mini_Arm_L.setRotation(hatapon.Arm_L.getRotation());
                            Mini_Arm_R.setRotation(hatapon.Arm_R.getRotation());
                            Mini_Arm_L.setOrigin(hatapon.Arm_L.getOrigin().x,hatapon.Arm_L.getOrigin().y);
                            Mini_Arm_R.setOrigin(hatapon.Arm_R.getOrigin().x,hatapon.Arm_R.getOrigin().y);
                            Mini_Leg_L.setPosition((4+i*70)-temp+mission->camera.x+11+((hatapon.Leg_L.getPosition().x-hatapon.x)/2)+21,41+((hatapon.Leg_L.getPosition().y-hatapon.y)/2));
                            Mini_Leg_R.setPosition((4+i*70)-temp+mission->camera.x+11+((hatapon.Leg_R.getPosition().x-hatapon.x)/2)+21,41+((hatapon.Leg_R.getPosition().y-hatapon.y)/2));
                            Mini_Weapon.setPosition((4+i*70)-temp+mission->camera.x+11+((hatapon.Weapon.getPosition().x-hatapon.x)/2)+21,30+((hatapon.Weapon.getPosition().y-hatapon.y)/2));
                            Mini_Weapon.setRotation(hatapon.Weapon.getRotation());
                            Mini_Weapon.setOrigin(hatapon.Weapon.getOrigin().x,hatapon.Weapon.getOrigin().y);

                            window.draw(circle[i]);

                            window.draw(Mini_Head);
                            window.draw(Mini_Eye);
                            window.draw(Mini_Arm_L);
                            window.draw(Mini_Arm_R);
                            window.draw(Mini_Leg_L);
                            window.draw(Mini_Leg_R);
                            window.draw(Mini_Hat);
                            window.draw(Mini_Weapon);

                            window.draw(hpoutline[i]);
                            window.draw(hpbar[i]);
                        }


                        if(i==1)
                        {
                            cout << "yaripon" << endl;
                            int temp = window.getSize().x/2;
                            circle[i].setPosition((4+i*70)-temp+mission->camera.x,10);
                            hpoutline[i].setPosition((8+i*70)-temp+mission->camera.x,2);
                            hpbar[i].setPosition((9+i*70)-temp+mission->camera.x,3);

                            float ratio;
                            float currentsum,maxsum;

                            if(yaripons.size()!=0)
                            for(int i=0; i<yaripons.size(); i++)
                            {
                                if(savecontainer.yaripons[i][1]!="")
                                {
                                currentsum += atof(savecontainer.yaripons[i][2].c_str());
                                maxsum += atof(savecontainer.yaripons[i][3].c_str());
                                }
                            }

                            cout << "test1" << endl;
                            if(currentsum==0)
                            currentsum = 1;

                            if(maxsum==0)
                            maxsum = 1;

                            ratio = currentsum / maxsum;

                            hpbar[i].setScale(ratio,1);

                            cout << "sprites" << endl;
                            sf::Sprite Mini_Head;
                            sf::Sprite Mini_Eye;
                            sf::Sprite Mini_Arm_L;
                            sf::Sprite Mini_Arm_R;
                            sf::Sprite Mini_Leg_L;
                            sf::Sprite Mini_Leg_R;
                            sf::Sprite Mini_Hat;
                            sf::Sprite Mini_Weapon;

                            cout << "pointers (" << yaripons.size()-1 << ")" << endl;
                            Mini_Head.setTexture(*yaripons[0].Head.getTexture(),true);
                            Mini_Eye.setTexture(*yaripons[0].Eye.getTexture(),true);
                            Mini_Arm_L.setTexture(*yaripons[0].Arm_L.getTexture(),true);
                            Mini_Arm_R.setTexture(*yaripons[0].Arm_R.getTexture(),true);
                            Mini_Leg_L.setTexture(*yaripons[0].Leg_L.getTexture(),true);
                            Mini_Leg_R.setTexture(*yaripons[0].Leg_R.getTexture(),true);
                            ///Mini_Hat.setTexture(temptex[6],true);
                            ///Mini_Weapon.setTexture(hatapon.Weapon.getTexture(),true);

                            cout << "scale" << endl;
                            Mini_Head.setScale(0.25,0.25);
                            Mini_Eye.setScale(0.25,0.25);
                            Mini_Arm_L.setScale(0.25,0.25);
                            Mini_Arm_R.setScale(0.25,0.25);
                            Mini_Leg_L.setScale(0.25,0.25);
                            Mini_Leg_R.setScale(0.25,0.25);
                            Mini_Hat.setScale(0.25,0.25);

                            cout << "position" << endl;
                            Mini_Head.setPosition((4+i*70)-temp+mission->camera.x+17,26);
                            Mini_Eye.setPosition((4+i*70)-temp+mission->camera.x+26+((yaripons[yaripons.size()-1].Eye.getPosition().x-yaripons[yaripons.size()-1].x)/2),35+((yaripons[yaripons.size()-1].Eye.getPosition().y-yaripons[yaripons.size()-1].y)/2));
                            Mini_Arm_L.setPosition((4+i*70)-temp+mission->camera.x+9+((yaripons[yaripons.size()-1].Arm_L.getPosition().x-yaripons[yaripons.size()-1].x)/2)+25,39+((yaripons[yaripons.size()-1].Arm_L.getPosition().y-yaripons[yaripons.size()-1].y)/2));
                            Mini_Arm_R.setPosition((4+i*70)-temp+mission->camera.x+9+((yaripons[yaripons.size()-1].Arm_R.getPosition().x-yaripons[yaripons.size()-1].x)/2)+21,39+((yaripons[yaripons.size()-1].Arm_R.getPosition().y-yaripons[yaripons.size()-1].y)/2));
                            Mini_Leg_L.setPosition((4+i*70)-temp+mission->camera.x+11+((yaripons[yaripons.size()-1].Leg_L.getPosition().x-yaripons[yaripons.size()-1].x)/2)+21,41+((yaripons[yaripons.size()-1].Leg_L.getPosition().y-yaripons[yaripons.size()-1].y)/2));
                            Mini_Leg_R.setPosition((4+i*70)-temp+mission->camera.x+11+((yaripons[yaripons.size()-1].Leg_R.getPosition().x-yaripons[yaripons.size()-1].x)/2)+21,41+((yaripons[yaripons.size()-1].Leg_R.getPosition().y-yaripons[yaripons.size()-1].y)/2));

                            window.draw(circle[i]);

                            window.draw(Mini_Head);
                            window.draw(Mini_Eye);
                            window.draw(Mini_Arm_L);
                            window.draw(Mini_Arm_R);
                            window.draw(Mini_Leg_L);
                            window.draw(Mini_Leg_R);
                            window.draw(Mini_Hat);

                            window.draw(hpoutline[i]);
                            window.draw(hpbar[i]);
                            cout << "yaripon is done" << endl;
                        }


                        if(i==2)
                        {
                            cout << "tatepon" << endl;
                            int temp = window.getSize().x/2;

                            circle[i].setPosition((4+i*70)-temp+mission->camera.x,10);
                            hpoutline[i].setPosition((8+i*70)-temp+mission->camera.x,2);
                            hpbar[i].setPosition((9+i*70)-temp+mission->camera.x,3);

                            float ratio;
                            float currentsum,maxsum;

                            if(tatepons.size()!=0)
                            for(int i=0; i<tatepons.size(); i++)
                            {
                                if(savecontainer.tatepons[i][1]!="")
                                {
                                currentsum += atof(savecontainer.tatepons[i][2].c_str());
                                maxsum += atof(savecontainer.tatepons[i][3].c_str());
                                }
                            }

                            if(currentsum==0)
                            currentsum = 1;

                            if(maxsum==0)
                            maxsum = 1;

                            ratio = currentsum / maxsum;

                            hpbar[i].setScale(ratio,1);

                            window.draw(circle[i]);
                            window.draw(hpoutline[i]);
                            window.draw(hpbar[i]);
                        }


                        if(i==3)
                        {
                            cout << "yumipon" << endl;
                            int temp = window.getSize().x/2;

                            circle[i].setPosition((4+i*70)-temp+mission->camera.x,10);
                            hpoutline[i].setPosition((8+i*70)-temp+mission->camera.x,2);
                            hpbar[i].setPosition((9+i*70)-temp+mission->camera.x,3);

                            float ratio;
                            float currentsum,maxsum;

                            if(yumipons.size()!=0)
                            for(int i=0; i<yumipons.size(); i++)
                            {
                                if(savecontainer.yumipons[i][1]!="")
                                {
                                currentsum += atof(savecontainer.yumipons[i][2].c_str());
                                maxsum += atof(savecontainer.yumipons[i][3].c_str());
                                }
                            }

                            if(currentsum==0)
                            currentsum = 1;

                            if(maxsum==0)
                            maxsum = 1;

                            ratio = currentsum / maxsum;

                            hpbar[i].setScale(ratio,1);

                            window.draw(circle[i]);
                            window.draw(hpoutline[i]);
                            window.draw(hpbar[i]);
                        }
                    }
                }*/

                if(yaripons.size()!=0)
                for(int i=0; i<yaripons.size(); i++)
                {
                    if(savecontainer.yaripons[i][1]!="")
                    {
                    yaripons[i].commandbuffer = mission->commandsystem.Play();
                    yaripons[i].commandclock = mission->commandClock.getElapsedTime();
                    yaripons[i].baseposition = (hatapon.x+100)+50*i;
                    yaripons[i].WeaponID = atoi(savecontainer.yaripons[i][6].c_str());
                    yaripons[i].HatID = atoi(savecontainer.yaripons[i][7].c_str());
                    yaripons[i].draw(window);
                    }
                }

                if(tatepons.size()!=0)
                for(int i=0; i<=tatepons.size(); i++)
                {
                    if(savecontainer.tatepons[i][1]!="")
                    {
                    tatepons[i].commandbuffer = mission->commandsystem.Play();
                    yaripons[i].commandclock = mission->commandClock.getElapsedTime();
                    yaripons[i].WeaponID = atoi(savecontainer.tatepons[i][6].c_str());
                    yaripons[i].HatID = atoi(savecontainer.tatepons[i][7].c_str());
                    tatepons[i].draw(window);
                    }
                }

                if(yumipons.size()!=0)
                for(int i=0; i<=yumipons.size(); i++)
                {
                    if(savecontainer.yumipons[i][1]!="")
                    {
                    yumipons[i].commandbuffer = mission->commandsystem.Play();
                    yaripons[i].commandclock = mission->commandClock.getElapsedTime();
                    yaripons[i].WeaponID = atoi(savecontainer.yumipons[i][6].c_str());
                    yaripons[i].HatID = atoi(savecontainer.yumipons[i][7].c_str());
                    yumipons[i].draw(window);
                    }
                }

                cout << mission->camera.x << endl;

                for(int i=0; i<yaripons.size(); i++)
                {
                    for(int i2=0; i2<mission->entities.size(); i2++)
                    {
                        if(yaripons[i].spear.spear.getPosition().x>mission->entities[i2].GetObjectLocation().x-mission->entities[i2].objectamount*5)
                        {
                            if(yaripons[i].spear.spear.getPosition().y>mission->entities[i2].GetObjectLocation().y-mission->entities[i2].objectamount*3)
                            {
                                if(yaripons[i].spear.spear.getPosition().x<mission->entities[i2].GetObjectLocation().x+mission->entities[i2].objectamount*5)
                                {
                                    if(yaripons[i].spear.spear.getPosition().y<mission->entities[i2].GetObjectLocation().y+mission->entities[i2].objectamount*3)
                                    {
                                        yaripons[i].spear.dmg.dmgtext.setPosition(yaripons[i].spear.spear.getPosition());
                                        yaripons[i].spear.dmg.alpha = 255;
                                        yaripons[i].spear.dmg.dmg = round(res.spearmindmg[atof(savecontainer.yaripons[i][6].c_str())]+res.hatdmg[atof(savecontainer.yaripons[i][6].c_str())]+res.spearmindmg[atof(savecontainer.yaripons[i][6].c_str())]/3*res.spearmindmg[atof(savecontainer.yaripons[i][8].c_str())]+(atof(savecontainer.yaripons[i][0].c_str())-1)*2);
                                        yaripons[i].spear.spear.setPosition(0,20000);
                                        cout << "GOT HIT" << endl;
                                    }
                                }
                            }
                        }
                    }
                }

                if(hatapon.action == "move")
                {
                if(mission->entities.size()-1>=0) {
                    for(int i=0; i<=mission->entities.size()-1; i++) {
                      if(mission->entities[i].collide == true) {
                        for(int i2=0; i2<yaripons.size(); i2++) {

                        if(mission->entities[i].GetObjectLocation().x-200>yaripons[i2].x) {
                            ///mission->entities[i].Move(-1,0);

                            if(yaripons.size()!=0)
                                if(savecontainer.yaripons[i2][1]!="")
                                {
                                yaripons[i2].x += 2;
                                }

                            mission->cancameramove = true;
                            yaripons[i2].cangotobase = true;
                            } else {
                            yaripons[i2].cangotobase = false;
                            mission->cancameramove = false;
                            }
                        }

                            if(mission->entities[i].GetObjectLocation().x-200>hatapon.x) {
                            hatapon.x += 2;
                            mission->cancameramove = true;
                            hatapon.cangotobase = true;

                            for(int i=0; i<=mission->backgroundcount; i++)
                            {
                                mission->backSize[i].x-=mission->backMoveX[i];
                            }

                            } else {
                            mission->cancameramove = false;
                            hatapon.cangotobase = false;
                            }

                            for(int i2=0; i2<yaripons.size(); i2++)
                            {
                            if(mission->entities[i].GetObjectLocation().x-200>yaripons[i2].x) {
                            yaripons[i2].cangotobase = true;
                            } else {
                            yaripons[i2].cangotobase = false;
                            }}
                        } else {
                            for(int i2=0; i2<yaripons.size(); i2++) {
                            if(yaripons.size()!=0)
                                if(savecontainer.yaripons[i2][1]!="")
                                {
                                    yaripons[i2].x += 2;
                                }
                            }

                            hatapon.x += 2;

                            for(int i=0; i<=mission->backgroundcount; i++)
                            {
                                mission->backSize[i].x-=mission->backMoveX[i];
                            }

                            mission->cancameramove = true;

                            if(mission->entities[i].completeafterwalk == true)
                            if(hatapon.x>mission->entities[i].GetObjectLocation().x) {
                                m1selected = 0;
                                m2selected = 0;
                                menu2open = false;

                                mission->loaded = false;

                                dmenureset = true;
                                yaripons.clear();
                                tatepons.clear();
                                yumipons.clear();

                                state = 34;
                            }
                        }

                        }
                    }
                }

                }

                }
                break;
                case 8:
                cout << "Mission overview (Like in Patapon 2 yay)" << endl;
                break;
                case 9:
                cout << "World map biatch" << endl;
                break;
                case 13:
                static Organization organization(savecontainer);
                if(oplaysnd == true)
                if(organization.bgm.getStatus() != sf::Music::Playing)
                organization.bgm.play();
                organization.selected = oselected;
                organization.menu1selected = m1selected;
                organization.menu2selected = m2selected;
                organization.menu2open = menu2open;
                organization.selected2 = pataselected;
                organization.Draw(window,this);
                break;
                case 34:
                static DemoMenu demomenu;
                cout << "uh, hi?" << endl;
                missionloaded = false;

                if(dmenureset == true) {
                organization.bgm.stop();
                m1selected = 0;
                m2selected = 0;
                menu2open = false;
                demomenu.azito.play();
                demomenu.clock.restart();
                dmenureset = false;
                }
                demomenu.completed = savecontainer.demopass;
                demomenu.sel = dmenuselect;
                demomenu.Draw(window,this);
                break;
                case 69:
                static Client client;
                static int c = 0;
                if(c==0) {
                missionloaded = false;
                string ip;
                cout << "input ip you want to connect" << endl;
                cin >> ip;
                client.Connect(ip.c_str());
                c++;
                }
                static Tips tipsmulti(this);
                if(missionloaded==false)
                if(tipsmulti.needsrefresh == true){
                cout << "refresh'd" << endl;
                tipsmulti.refresh(this);
                }
                if(missionloaded==false)
                tipsmulti.Draw(window,this,2);
                if(tipsmulti.finished==true) {
                static Mission mission;
                if(mission.loaded==false)
                mission.Load("multimission_1.map",window);
                if(missionloaded==true) {
                mission.Draw(window,commandbuffer,this);
                client.Multiplayer();
                client.Draw(window,mission);
                }}
                break;
                case 666:
                static Server server;
                static int s = 0;
                if(s==0) {
                missionloaded = false;
                string ip;
                cout << "input ip you want to host" << endl;
                cin >> ip;
                server.Connect(ip.c_str());
                s++;
                }
                static Tips tipsmulti2(this);
                if(missionloaded==false)
                if(tipsmulti2.needsrefresh == true){
                cout << "refresh'd" << endl;
                tipsmulti2.refresh(this);
                }
                if(missionloaded==false)
                tipsmulti2.Draw(window,this,2);
                if(tipsmulti2.finished==true) {
                static Mission mission;
                if(mission.loaded==false)
                mission.Load("multimission_1.map",window);
                if(missionloaded==true) {
                mission.Draw(window,commandbuffer,this);
                server.Multiplayer();
                server.Draw(window,mission);
                }}
                break;
            }