Esempio n. 1
0
void SpawnUnit(UnitList *SQ,UnitList *UL, FunctionQueue *FQ)
{
    if (UnitSize(SQ)>0) 
    {
        Unit *U;
        U = UnitFirst(SQ);
        UnitDequeue(SQ);
        UnitEnqueue(UL,U);
        CreateREDRAWQUEUE(FQ,SQ);
        CreateSPAWN(FQ,U);
    }
}
Esempio n. 2
0
void RedrawQueue(UnitList *SQ)
{   
    ClearSpawnQueue();
    Unit *tempUnit;

    for (int i = 0; i < UnitSize(SQ); i++)
    {
        tempUnit = UnitPeek(i,SQ);
        attron(COLOR_PAIR(UnitID(tempUnit)-96));
        if (UnitSize(SQ) <= 36)
        {
            mvprintw(7+i,113,"%d",tempUnit->health);
        }
        else if (UnitSize(SQ) <= 73)
        {
            if (i <= 36)
            {
                mvprintw(7+i,111,"%d",tempUnit->health);
            }
            else
                mvprintw(7+i-37,115,"%d",tempUnit->health);
        }
        else if (UnitSize(SQ) <= 111)
        {
            if (i <= 36)
            {
                mvprintw(7+i,111,"%d",tempUnit->health);
            }
            else if (i <= 73)
                mvprintw(7+i-37,113,"%d",tempUnit->health);
            else
                mvprintw(7+i-74,115,"%d",tempUnit->health);
        }

        attroff(COLOR_PAIR(UnitID(tempUnit)-96));
    }
    Home();
}
Esempio n. 3
0
void KMemViewer::DumpPage(void)
{
	TCHAR buffer[1024];
	
	buffer[0] = 0;
	unsigned char * p = m_current;
	
	for (unsigned row=0; row<m_pagesize/16; row++, p+=16)
	{
		DumpLine(p, 0, UnitSize());
		strcat(buffer, m_line);
	}
	
	SetDlgItemText(m_hWnd, IDC_DUMP, buffer);
}
Esempio n. 4
0
BOOL KMemViewer::OnCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
	switch ( LOWORD(wParam) )
	{
		case IDC_BYTE:
		case IDC_WORD:
		case IDC_DWORD:
			DumpPage();
			return TRUE;

		case IDC_DOWN:
			if ( m_current + m_pagesize >= m_start + m_size )
				return FALSE;
			m_current += m_pagesize;
			DumpPage();
			return TRUE;

		case IDC_UP:
			if ( m_current == m_start )
				return FALSE;
			m_current -= m_pagesize;
			DumpPage();
			return TRUE;

		case IDC_MEMORYDUMP:
            OpenDump();
			Dump(m_start, 0, m_size, UnitSize());
            CloseDump();
			return TRUE;

		case IDC_SEARCH:
			Search();
			return TRUE;

		case IDOK:
			EndDialog(m_hWnd, TRUE);
			return TRUE;
	}

	return FALSE;
}
Esempio n. 5
0
int HandleInput (UnitList *SQ, UnitList *PDUL, FunctionQueue *FQ, Level *lvl, int *running)
{
    char c = TakeInput();
    
    if (c == ERR)
    {
        return 1;
    }
    else if (c == 'q')
    {
        InputQ(running);
        return 1;
    }
    else if (c == 'r')
    {
        CreateCLEARMSG(FQ);
        InputR(running);
        return 1;
    }
    else if (c == 's')
    {
        CreateCLEARMSG(FQ);
        if (SQ->size == 0)
        {
            CreatePRINTMSG(FQ, 3);
        }
        else
        {
            CreateCLEARPROMPTS(FQ);
            InputS(running);
        }
        
        return 1;
    }
    else if (c == 'x')
    {
        CreateCLEARMSG(FQ);
        InputX(SQ,lvl);
        CreateREDRAWQUEUE(FQ,SQ);
        CreateREDRAWRESOURCES(FQ,lvl);
        return 1;
    }
    else if (c-'a' >= 0 && c-'a' < UnitSize(PDUL))
    {
        if (SQ->size < UNITQUEUESIZE)
        {
            int i, flag = false;
            CreateCLEARMSG(FQ);
            for (i = 0; i < AVAILUNITS; i++) 
            {
                if (c == lvl->available[i]) 
                    flag = true;
            };
            if (flag)
            {
                InputUnit(PDUL,c,SQ,lvl);
                CreateREDRAWQUEUE(FQ,SQ);
                CreateREDRAWRESOURCES(FQ,lvl);
                return 1;
            }
            else
            {
                CreatePRINTMSG(FQ, 1);
                return 1;
            }
        }
        return 0;
    }
    else
    {
        CreateCLEARMSG(FQ);
        CreatePRINTMSG(FQ, 1);
        return 0;
    }
}
Esempio n. 6
0
void TowerTargetting(UnitList *UL, UnitList *PDUL, TowerList *TL, PathList *PL, FunctionQueue *FQ, int loopCounter)
{
    for (int i = 0; i < TowerSize(TL); i++)
    {
        // Declare and initiage of variables needed per loop
        int j;
        Tower *T;
        Path *P;
        Unit *U;
        int targetFlag;
        targetFlag = false;

        // Get the tower
        T = TowerPeek(i, TL);

        if (loopCounter % TowerRate(T) == 0)
        {
            // Iterate through the unit list
            for (j = 0; j < UnitSize(UL); j++)
            {
                if (TowerEffect(T) != EFFECT_AOE)
                {
                    if (targetFlag == false)
                    {
                        // Get unit & position data
                        U = UnitPeek(j, UL);
                        P = PathPeek(UnitPosition(U), PL);

                        // check range
                        if (TowerPosX(T) + TowerRange(T) >= PathX(P) && TowerPosX(T) - TowerRange(T) <= PathX(P))
                        {
                            if (TowerPosY(T) + TowerRange(T) >= PathY(P) && TowerPosY(T) - TowerRange(T) <= PathY(P))
                            {
                                targetFlag = true;
                                if (UnitSpeed(U) == SPEED_SLOW)
                                {
                                    // Exit the unit loop, we have our target
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        Unit *target;
                        // Get unit & position data
                        target = UnitPeek(j, UL);
                        P = PathPeek(UnitPosition(target), PL);

                        // Check unit speed for aggro. Less calls than range checking to eliminate cases
                        if (UnitSpeed(target) == SPEED_SLOW)
                        {
                            // Check if the unit is within tower range
                            if (TowerPosX(T) + TowerRange(T) >= PathX(P) && TowerPosX(T) - TowerRange(T) <= PathX(P))
                            {
                                if (TowerPosY(T) + TowerRange(T) >= PathY(P) && TowerPosY(T) - TowerRange(T) <= PathY(P))
                                {
                                    // exit the unit loop, we have our target
                                    U = target;
                                    break;
                                }
                            }
                        }
                    }
                }
                // AoE damage
                else
                {
                    // Get unit & position data
                    U = UnitPeek(j, UL);
                    P = PathPeek(UnitPosition(U), PL);

                    // check range
                    if (TowerPosX(T) + TowerRange(T) >= PathX(P) && TowerPosX(T) - TowerRange(T) <= PathX(P))
                    {
                        if (TowerPosY(T) + TowerRange(T) >= PathY(P) && TowerPosY(T) - TowerRange(T) <= PathY(P))
                        {
                            // Deal the damage to the unit in range.
                            DamageHandler(U, T, PDUL);
                            CreateSPAWN(FQ,U);
                        }
                    }
                }
            }
             // Deal damage to target

            if (targetFlag == true)
            {
                DamageHandler(U, T, PDUL);
                CreateSPAWN(FQ,U);
            }
        }
    }
}
Esempio n. 7
0
int CheckLoss(UnitList *SQ, UnitList *UL)
{
    return UnitSize(SQ) == 0 && UnitSize(UL) == 0;
}