Path: blob/main/RSDKv4/NativeObjects/MultiplayerButton.cpp
817 views
#include "RetroEngine.hpp"12void MultiplayerButton_Create(void *objPtr)3{4RSDK_THIS(MultiplayerButton);5self->textureCircle = LoadTexture("Data/Game/Menu/Circle.png", TEXFMT_RGBA4444);67int texture = LoadTexture("Data/Game/Menu/Intro.png", TEXFMT_RGBA4444);8self->meshVS = LoadMesh("Data/Game/Models/2PVS.bin", texture);9self->x = 0.0;10self->y = 16.0;11self->z = 160.0;12self->r = 0xFF;13self->g = 0xFF;14self->b = 0x00;15self->labelPtr = CREATE_ENTITY(TextLabel);16self->labelPtr->fontID = FONT_HEADING;17self->labelPtr->scale = 0.15;18self->labelPtr->alpha = 0;19self->labelPtr->state = TEXTLABEL_STATE_IDLE;20SetStringToFont(self->labelPtr->text, str2PlayerVS, FONT_HEADING);21self->labelPtr->alignPtr(self->labelPtr, ALIGN_CENTER);22}23void MultiplayerButton_Main(void *objPtr)24{25RSDK_THIS(MultiplayerButton);2627#if RETRO_USE_NETWORKING28if (self->connectTimer) {29self->connectTimer += Engine.deltaTime;30if (self->connectTimer >= 0.7f) {31self->connectTimer = 0;32}33}34#endif35if (self->visible) {36if (self->scale < 0.2) {37self->scale += ((0.25 - self->scale) / ((60.0 * Engine.deltaTime) * 16.0));38if (self->scale > 0.2)39self->scale = 0.2;40}41SetRenderBlendMode(RENDER_BLEND_ALPHA);42SetRenderVertexColor(self->r, self->g, self->b);43RenderImage(self->x, self->y, self->z, self->scale, self->scale, 256.0, 256.0, 512.0, 512.0, 0.0, 0.0, 255, self->textureCircle);44SetRenderVertexColor(0xFF, 0xFF, 0xFF);45SetRenderBlendMode(RENDER_BLEND_NONE);4647self->angle -= Engine.deltaTime;48if (self->angle < -M_PI_2)49self->angle += M_PI_2;5051NewRenderState();52MatrixRotateXYZF(&self->renderMatrix, 0.0, self->angle, 0.0);53MatrixTranslateXYZF(&self->matrixTemp, self->x, self->y, self->z - 8.0);54MatrixMultiplyF(&self->renderMatrix, &self->matrixTemp);55SetRenderMatrix(&self->renderMatrix);56RenderMesh(self->meshVS, MESH_NORMALS, true);57SetRenderMatrix(NULL);5859NativeEntity_TextLabel *label = self->labelPtr;60label->x = self->x;61label->y = self->y - 72.0;62label->z = self->z;63if (label->x <= -8.0 || label->x >= 8.0) {64if (label->alpha > 0)65label->alpha -= 8;66}67else {68if (label->alpha < 0x100)69label->alpha += 8;70}71#if RETRO_USE_NETWORKING72if (!Engine.onlineActive && self->labelPtr->state == TEXTLABEL_STATE_BLINK_FAST && !self->connectTimer) {73self->connectTimer = 0.1f;74DisconnectNetwork();75InitNetwork(); // let's see if we can turn it on76}77#endif78}79}808182