Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- undefined4 setup_sk_board(int pSKStruct,undefined param_2,int shipCount)
- {
- int xIdx;
- undefined *pSKSpace;
- int yIDx;
- int spacesLeft;
- yIDx = 0;
- /* loop to zero out SK board */
- xIdx = 0;
- do {
- pSKSpace = (undefined *)(pSKStruct + xIdx);
- spacesLeft = 8;
- do {
- *pSKSpace = 0;
- pSKSpace = pSKSpace + 1;
- spacesLeft = spacesLeft + -1;
- } while (spacesLeft != 0);
- yIDx = yIDx + 1;
- xIdx = xIdx + 8;
- } while (yIDx < 8);
- *(undefined *)(pSKStruct + 0x7d) = param_2;
- *(undefined *)(pSKStruct + 0x7e) = 0;
- if (shipCount == 2) {
- *(undefined *)(pSKStruct + 0x7c) = 2;
- place_sk_ship(pSKStruct,0,2);
- place_sk_ship(pSKStruct,1,3);
- }
- else {
- if (shipCount < 2) {
- if (0 < shipCount) {
- *(undefined *)(pSKStruct + 0x7c) = 1;
- place_sk_ship(pSKStruct,0,2);
- }
- }
- else {
- if (shipCount < 4) {
- *(undefined *)(pSKStruct + 0x7c) = 3;
- place_sk_ship(pSKStruct,0,2);
- place_sk_ship(pSKStruct,1,3);
- place_sk_ship(pSKStruct,2,4);
- }
- }
- }
- *(undefined4 *)(pSKStruct + 0x80) = 0;
- return 1;
- }
- void place_sk_ship(undefined4 param_1,undefined4 param_2,uint ship_len)
- {
- uint isEmpty;
- char *pBoardSpace;
- int iVar2;
- int pSKBoard;
- uint uVar3;
- int coordIdx;
- int pCoordArr;
- int iVar1;
- int pShipArr;
- int iVar4;
- char yInc;
- int iVar5;
- undefined totalLen;
- char yPos;
- undefined xPos;
- uint shipLen?;
- double dVar2;
- double dVar6;
- double dVar3;
- undefined8 uVar4;
- uint orientation;
- uint xCoord;
- uint yCoord;
- uVar4 = allocBlock?();
- pSKBoard = (int)((ulonglong)uVar4 >> 0x20);
- uVar3 = (uint)uVar4;
- shipLen? = ship_len & 0xff;
- do {
- dVar2 = (double)RNG_func?((double)FLOAT_803f9458);
- iVar5 = (int)(short)(int)dVar2 >> 0x1f;
- orientation = ((int)(short)(int)dVar2 & 1U ^ -iVar5) + iVar5 & 0xff;
- dVar6 = (double)RNG_func?((double)FLOAT_803f945c);
- xCoord = (int)dVar6 & 0xff;
- dVar3 = (double)RNG_func?((double)FLOAT_803f945c);
- yCoord = (int)dVar3 & 0xff;
- isEmpty = check_sk_space_empty(pSKBoard,xCoord,yCoord,shipLen?,orientation);
- } while ((isEmpty & 0xff) == 0);
- xPos = (undefined)xCoord;
- totalLen = (undefined)ship_len;
- yPos = (char)yCoord;
- if (orientation == 0) {
- yInc = '\0';
- coordIdx = 0;
- pShipArr = (uVar3 & 0xff) * 0xf;
- pBoardSpace = (char *)(pSKBoard + ((int)dVar6 & 0xffU) * 8 + yCoord);
- while (shipLen? != 0) {
- pCoordArr = pSKBoard + pShipArr + coordIdx;
- *(undefined *)(pCoordArr + 0x40) = xPos;
- *(char *)(pCoordArr + 0x41) = yPos + yInc;
- *pBoardSpace = (char)(uVar3 & 0xff) + 'f';
- yInc = yInc + '\x01';
- pBoardSpace = pBoardSpace + 1;
- coordIdx = coordIdx + 2;
- shipLen? = shipLen? - 1;
- }
- pShipArr = pSKBoard + pShipArr;
- *(undefined *)(pShipArr + 0x4b) = xPos;
- *(char *)(pShipArr + 0x4c) = yPos;
- *(undefined *)(pShipArr + 0x4d) = 0;
- *(undefined *)(pShipArr + 0x4e) = totalLen;
- }
- else {
- iVar5 = 0;
- iVar2 = 0;
- iVar4 = (uVar3 & 0xff) * 0xf;
- while (shipLen? != 0) {
- iVar1 = pSKBoard + iVar4 + iVar2;
- *(undefined *)(iVar1 + 0x40) = (char)(xCoord + iVar5);
- *(char *)(iVar1 + 0x41) = yPos;
- *(char *)(pSKBoard + yCoord + (xCoord + iVar5) * 8) = (char)(uVar3 & 0xff) + 'f';
- iVar5 = iVar5 + 1;
- iVar2 = iVar2 + 2;
- shipLen? = shipLen? - 1;
- }
- iVar4 = pSKBoard + iVar4;
- *(undefined *)(iVar4 + 0x4b) = xPos;
- *(char *)(iVar4 + 0x4c) = yPos;
- *(undefined *)(iVar4 + 0x4d) = totalLen;
- *(undefined *)(iVar4 + 0x4e) = 0;
- }
- pSKBoard = pSKBoard + (uVar3 & 0xff) * 0xf;
- *(undefined *)(pSKBoard + 0x48) = totalLen;
- *(undefined *)(pSKBoard + 0x49) = totalLen;
- FUN_80328f7c(1);
- return;
- }
- undefined4 check_sk_space_empty(int pSKBoard,int xCoord,int yCoord,int ship_len,int orientation)
- {
- byte *pBoardSpace;
- int iVar1;
- if (orientation == 0) {
- pBoardSpace = (byte *)(pSKBoard + xCoord * 8 + yCoord);
- if (0 < ship_len) {
- do {
- if (((7 < xCoord) || (7 < yCoord)) || (100 < *pBoardSpace)) {
- return 0;
- }
- yCoord = yCoord + 1;
- pBoardSpace = pBoardSpace + 1;
- ship_len = ship_len + -1;
- } while (ship_len != 0);
- }
- }
- else {
- iVar1 = xCoord << 3;
- if (0 < ship_len) {
- do {
- if (((7 < xCoord) || (7 < yCoord)) || (100 < *(byte *)(pSKBoard + yCoord + iVar1))) {
- return 0;
- }
- xCoord = xCoord + 1;
- iVar1 = iVar1 + 8;
- ship_len = ship_len + -1;
- } while (ship_len != 0);
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement